构建 Chromium webui 测试而不重建所有 browser_tests
Posted
技术标签:
【中文标题】构建 Chromium webui 测试而不重建所有 browser_tests【英文标题】:Build Chromium webui test without rebuilding all browser_tests 【发布时间】:2013-12-04 02:19:38 【问题描述】:我向/src/chrome/test/data/webui/
添加了一个简单的javascript 测试,并将该文件包含在/src/chrome/chrome_tests.gypi
中。
我是这样构建的:ninja -C out/Debug browser_tests
。不过这需要一段时间。有没有办法只重新构建我的测试,而不构建所有其他浏览器测试?
【问题讨论】:
【参考方案1】:browser_tests 是编译这些测试的唯一可执行目标,因此您在任何情况下都需要使用它,即使您在单个测试中执行了更改。但是您可能想尝试共享库编译来提高构建速度。在重新编译之前,只需 export GYP_DEFINES='component=shared_library'
和 ./build/gyp_chromium
。
【讨论】:
谢谢!前几天我找到了该解决方案,但还没有在这里提及它。我是这样做的build/gyp_chromium -D component=shared_library
,我想这只是做同一件事的一种稍微不同的方式。【参考方案2】:
注意:此答案不适用于 webui 测试(它们不依赖于 test_data_dir_
。此外,它仅与 Linux 相关。
一些测试文件没有编译成browser_tests
。对于这些情况,只需将 CR_SOURCE_ROOT
环境变量设置为 Chromium 源目录,例如(如果您的 Chromium 源文件位于 ~/chromium/src
)
CR_SOURCE_ROOT=~/chromium/src/ ./out/Debug/browser_tests
当我试图弄清楚为什么扩展测试没有运行时,我发现了这一点。我首先在源代码中查找错误消息:
扩展错误:无法从“”加载扩展。清单文件丢失或无法读取。
在用gdb调试之后,我发现应该由ExtensionBrowserTest::LoadExtensionWithFlags
加载的测试扩展没有加载,因为路径无效。 path
以某种方式设置为 "extensions/api_test/webrequest"
,并且因为这不是绝对路径,所以它在 UnpackedInstaller::GetAbsolutePath
中被 extension_path_ = base::MakeAbsoluteFilePath(extension_path_);
清除。
因此,Chromium 尝试从位置“”(空字符串)加载扩展,这显然失败了。
最终,我将原因追查到test_data_dir_
,初始化为DIR_TEST_DATA
,又是derived from DIR_SOURCE_ROOT
,又是read from the CR_SOURCE_ROOT
environment variable。使用以下命令,我的测试再次运行,并且无需重新编译即可更新扩展测试。
CR_SOURCE_ROOT=~/chromium/src/ ./out/Debug/browser_tests
【讨论】:
以上是关于构建 Chromium webui 测试而不重建所有 browser_tests的主要内容,如果未能解决你的问题,请参考以下文章