【问题标题】:Build Chromium webui test without rebuilding all browser_tests构建 Chromium webui 测试而不重建所有 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。不过这需要一段时间。有没有办法只重新构建我的测试,而不构建所有其他浏览器测试?

【问题讨论】:

    标签: integration-testing chromium ninja


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-11
      • 2019-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      • 2018-06-12
      相关资源
      最近更新 更多