在不重建所有browser_tests的情况下构建Chromium webui测试

时间:2013-12-04 02:19:39

标签: integration-testing chromium ninja

我向/src/chrome/test/data/webui/添加了一个简单的JavaScript测试,并将该文件包含在/src/chrome/chrome_tests.gypi中。

我是这样构建的:ninja -C out/Debug browser_tests。这需要一段时间。有没有办法只重建我的测试,而不构建所有其他浏览器测试?

2 个答案:

答案 0 :(得分:1)

browser_tests是编译这些测试的唯一可执行目标,因此即使您在单个测试中执行更改,也需要在任何情况下使用它。但您可能希望尝试共享库编译以提高构建速度。在重新编译之前只需要export GYP_DEFINES='component=shared_library'然后./build/gyp_chromium

答案 1 :(得分:0)

注意:这个答案适用于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",因为这不是绝对路径,所以extension_path_ = base::MakeAbsoluteFilePath(extension_path_);test_data_dir_清除了CR_SOURCE_ROOT=~/chromium/src/ ./out/Debug/browser_tests 。 因此,Chromium尝试从位置“”(空字符串)加载扩展,这显然会失败。

最终,我将原因追溯到{{1}},该{{1}}初始化为UnpackedInstaller::GetAbsolutePath,而DIR_TEST_DATA则为derived from DIR_SOURCE_ROOT,而read from the CR_SOURCE_ROOT environment variable则为{{3}}。使用以下命令,我的测试再次运行,并且我能够在不重新编译的情况下更新扩展测试。

{{1}}