构建 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的主要内容,如果未能解决你的问题,请参考以下文章

Chromium Settings页面修改

提供者对象在现有构建期间请求重建

Flutter Bloc 不断重建小部件而不改变状态

Python,Chrome 任务管理器 - 以编程方式访问 Chrome 任务管理器的文本而不使用 CHROMIUM

为 Windows 构建 Chromium

如何最小化 Chromium 构建文件?