Don't hardcode test filters.
Read gtest_filters.yaml to determine disabled tests.
diff --git a/recipe_modules/adhoc_validation/examples/full.expected/invalid_validation.json b/recipe_modules/adhoc_validation/examples/full.expected/invalid_validation.json
index 79d8ab8..c806571 100644
--- a/recipe_modules/adhoc_validation/examples/full.expected/invalid_validation.json
+++ b/recipe_modules/adhoc_validation/examples/full.expected/invalid_validation.json
@@ -7,8 +7,18 @@
"The recipe has crashed at point 'Uncaught exception'!",
"",
"Traceback (most recent call last):",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/engine.py\", in run_steps",
+ " raw_result = recipe_obj.run_steps(api, engine)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/recipe_deps.py\", in run_steps",
+ " properties_def, api=api)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in invoke_with_properties",
+ " arg_names, **additional_args)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in _invoke_with_properties",
+ " return callable_obj(*props, **additional_args)",
" File \"RECIPE_REPO[flutter]/recipe_modules/adhoc_validation/examples/full.py\", line 19, in RunSteps",
" api.adhoc_validation.run('Docs', validation, {}, {})",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/recipe_api.py\", in _inner",
+ " return func(*a, **kw)",
" File \"RECIPE_REPO[flutter]/recipe_modules/adhoc_validation/api.py\", line 37, in run",
" raise AssertionError(msg)",
"AssertionError: invalid is not listed in available_validations."
diff --git a/recipe_modules/bucket_util/examples/full.expected/upload_packages_tiggers_exception_and_package_exists.json b/recipe_modules/bucket_util/examples/full.expected/upload_packages_tiggers_exception_and_package_exists.json
index 9f8a956..7bfa68d 100644
--- a/recipe_modules/bucket_util/examples/full.expected/upload_packages_tiggers_exception_and_package_exists.json
+++ b/recipe_modules/bucket_util/examples/full.expected/upload_packages_tiggers_exception_and_package_exists.json
@@ -38,12 +38,26 @@
"The recipe has crashed at point 'Uncaught exception'!",
"",
"Traceback (most recent call last):",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/engine.py\", in run_steps",
+ " raw_result = recipe_obj.run_steps(api, engine)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/recipe_deps.py\", in run_steps",
+ " properties_def, api=api)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in invoke_with_properties",
+ " arg_names, **additional_args)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in _invoke_with_properties",
+ " return callable_obj(*props, **additional_args)",
" File \"RECIPE_REPO[flutter]/recipe_modules/bucket_util/examples/full.py\", line 22, in RunSteps",
" 'test1.zip') # zip_name",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/recipe_api.py\", in _inner",
+ " return func(*a, **kw)",
" File \"RECIPE_REPO[flutter]/recipe_modules/bucket_util/api.py\", line 47, in upload_folder",
" bucket_name=bucket_name)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/recipe_api.py\", in _inner",
+ " return func(*a, **kw)",
" File \"RECIPE_REPO[flutter]/recipe_modules/bucket_util/api.py\", line 81, in upload_folder_and_files",
" self.safe_upload(local_zip, remote_zip, bucket_name=bucket_name)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/recipe_api.py\", in _inner",
+ " return func(*a, **kw)",
" File \"RECIPE_REPO[flutter]/recipe_modules/bucket_util/api.py\", line 124, in safe_upload",
" raise AssertionError('%s already exists on cloud storage' % cloud_path)",
"AssertionError: gs://flutter_infra_release/flutter/00000000-0000-0000-0000-000000001337/test1.zip already exists on cloud storage"
diff --git a/recipe_modules/json_util/examples/validate_json.expected/try invalid key.json b/recipe_modules/json_util/examples/validate_json.expected/try invalid key.json
index b200b5b..a91bfc3 100644
--- a/recipe_modules/json_util/examples/validate_json.expected/try invalid key.json
+++ b/recipe_modules/json_util/examples/validate_json.expected/try invalid key.json
@@ -47,10 +47,22 @@
"The recipe has crashed at point 'Uncaught exception'!",
"",
"Traceback (most recent call last):",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/engine.py\", in run_steps",
+ " raw_result = recipe_obj.run_steps(api, engine)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/recipe_deps.py\", in run_steps",
+ " properties_def, api=api)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in invoke_with_properties",
+ " arg_names, **additional_args)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in _invoke_with_properties",
+ " return callable_obj(*props, **additional_args)",
" File \"RECIPE_REPO[flutter]/recipe_modules/json_util/examples/validate_json.py\", line 14, in RunSteps",
" api.json_util.validate_json(api.path['cache'])",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/recipe_api.py\", in _inner",
+ " return func(*a, **kw)",
" File \"RECIPE_REPO[flutter]/recipe_modules/json_util/api.py\", line 23, in validate_json",
" self.validate_builder_schema('try', try_json_data)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/recipe_api.py\", in _inner",
+ " return func(*a, **kw)",
" File \"RECIPE_REPO[flutter]/recipe_modules/json_util/api.py\", line 76, in validate_builder_schema",
" (key, self.m.json.dumps(builder))",
"ValueError: Unsupported key: abc in builder: {\"abc\": \"def\"}"
diff --git a/recipe_modules/json_util/examples/validate_json.expected/try missing key name.json b/recipe_modules/json_util/examples/validate_json.expected/try missing key name.json
index 3d16917..776dd7f 100644
--- a/recipe_modules/json_util/examples/validate_json.expected/try missing key name.json
+++ b/recipe_modules/json_util/examples/validate_json.expected/try missing key name.json
@@ -47,10 +47,22 @@
"The recipe has crashed at point 'Uncaught exception'!",
"",
"Traceback (most recent call last):",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/engine.py\", in run_steps",
+ " raw_result = recipe_obj.run_steps(api, engine)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/recipe_deps.py\", in run_steps",
+ " properties_def, api=api)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in invoke_with_properties",
+ " arg_names, **additional_args)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in _invoke_with_properties",
+ " return callable_obj(*props, **additional_args)",
" File \"RECIPE_REPO[flutter]/recipe_modules/json_util/examples/validate_json.py\", line 14, in RunSteps",
" api.json_util.validate_json(api.path['cache'])",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/recipe_api.py\", in _inner",
+ " return func(*a, **kw)",
" File \"RECIPE_REPO[flutter]/recipe_modules/json_util/api.py\", line 23, in validate_json",
" self.validate_builder_schema('try', try_json_data)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/recipe_api.py\", in _inner",
+ " return func(*a, **kw)",
" File \"RECIPE_REPO[flutter]/recipe_modules/json_util/api.py\", line 85, in validate_builder_schema",
" 'Missing key: name in builder: %s' % self.m.json.dumps(builder)",
"ValueError: Missing key: name in builder: {\"repo\": \"abc\"}"
diff --git a/recipe_modules/json_util/examples/validate_json.expected/try missing key repo.json b/recipe_modules/json_util/examples/validate_json.expected/try missing key repo.json
index f110246..b4c7dd6 100644
--- a/recipe_modules/json_util/examples/validate_json.expected/try missing key repo.json
+++ b/recipe_modules/json_util/examples/validate_json.expected/try missing key repo.json
@@ -47,10 +47,22 @@
"The recipe has crashed at point 'Uncaught exception'!",
"",
"Traceback (most recent call last):",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/engine.py\", in run_steps",
+ " raw_result = recipe_obj.run_steps(api, engine)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/recipe_deps.py\", in run_steps",
+ " properties_def, api=api)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in invoke_with_properties",
+ " arg_names, **additional_args)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in _invoke_with_properties",
+ " return callable_obj(*props, **additional_args)",
" File \"RECIPE_REPO[flutter]/recipe_modules/json_util/examples/validate_json.py\", line 14, in RunSteps",
" api.json_util.validate_json(api.path['cache'])",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/recipe_api.py\", in _inner",
+ " return func(*a, **kw)",
" File \"RECIPE_REPO[flutter]/recipe_modules/json_util/api.py\", line 23, in validate_json",
" self.validate_builder_schema('try', try_json_data)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/recipe_api.py\", in _inner",
+ " return func(*a, **kw)",
" File \"RECIPE_REPO[flutter]/recipe_modules/json_util/api.py\", line 81, in validate_builder_schema",
" 'Missing key: repo in builder: %s' % self.m.json.dumps(builder)",
"ValueError: Missing key: repo in builder: {\"name\": \"abc\"}"
diff --git a/recipe_modules/repo_util/examples/unsupported.expected/unsupported.json b/recipe_modules/repo_util/examples/unsupported.expected/unsupported.json
index 48fb382..52d12ff 100644
--- a/recipe_modules/repo_util/examples/unsupported.expected/unsupported.json
+++ b/recipe_modules/repo_util/examples/unsupported.expected/unsupported.json
@@ -7,8 +7,18 @@
"The recipe has crashed at point 'Uncaught exception'!",
"",
"Traceback (most recent call last):",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/engine.py\", in run_steps",
+ " raw_result = recipe_obj.run_steps(api, engine)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/recipe_deps.py\", in run_steps",
+ " properties_def, api=api)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in invoke_with_properties",
+ " arg_names, **additional_args)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in _invoke_with_properties",
+ " return callable_obj(*props, **additional_args)",
" File \"RECIPE_REPO[flutter]/recipe_modules/repo_util/examples/unsupported.py\", line 15, in RunSteps",
" api.path['start_dir'].join('unsupported_repo'))",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/recipe_api.py\", in _inner",
+ " return func(*a, **kw)",
" File \"RECIPE_REPO[flutter]/recipe_modules/repo_util/api.py\", line 94, in checkout",
" raise ValueError('Unsupported repo: %s' % name)",
"ValueError: Unsupported repo: unsupported_repo"
diff --git a/recipe_modules/web_util/examples/full.expected/fail case.json b/recipe_modules/web_util/examples/full.expected/fail case.json
index eede892..e4fddfb 100644
--- a/recipe_modules/web_util/examples/full.expected/fail case.json
+++ b/recipe_modules/web_util/examples/full.expected/fail case.json
@@ -7,8 +7,18 @@
"The recipe has crashed at point 'Uncaught exception'!",
"",
"Traceback (most recent call last):",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/engine.py\", in run_steps",
+ " raw_result = recipe_obj.run_steps(api, engine)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/recipe_deps.py\", in run_steps",
+ " properties_def, api=api)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in invoke_with_properties",
+ " arg_names, **additional_args)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in _invoke_with_properties",
+ " return callable_obj(*props, **additional_args)",
" File \"RECIPE_REPO[flutter]/recipe_modules/web_util/examples/full.py\", line 23, in RunSteps",
" api.web_util.prepare_dependencies(engine_checkout_path)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/recipe_api.py\", in _inner",
+ " return func(*a, **kw)",
" File \"RECIPE_REPO[flutter]/recipe_modules/web_util/api.py\", line 172, in prepare_dependencies",
" raise ValueError('Dependency %s not available.' % dep)",
"ValueError: Dependency invalid_dependency not available."
diff --git a/recipes/devicelab/devicelab_drone.expected/no-task-name.json b/recipes/devicelab/devicelab_drone.expected/no-task-name.json
index 6758846..6c46ac1 100644
--- a/recipes/devicelab/devicelab_drone.expected/no-task-name.json
+++ b/recipes/devicelab/devicelab_drone.expected/no-task-name.json
@@ -7,6 +7,14 @@
"The recipe has crashed at point 'Uncaught exception'!",
"",
"Traceback (most recent call last):",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/engine.py\", in run_steps",
+ " raw_result = recipe_obj.run_steps(api, engine)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/recipe_deps.py\", in run_steps",
+ " properties_def, api=api)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in invoke_with_properties",
+ " arg_names, **additional_args)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in _invoke_with_properties",
+ " return callable_obj(*props, **additional_args)",
" File \"RECIPE_REPO[flutter]/recipes/devicelab/devicelab_drone.py\", line 31, in RunSteps",
" raise ValueError('A task_name property is required')",
"ValueError: A task_name property is required"
diff --git a/recipes/devicelab/devicelab_drone_1_26_0.expected/no-task-name.json b/recipes/devicelab/devicelab_drone_1_26_0.expected/no-task-name.json
index 95f0f86..5d8f97e 100644
--- a/recipes/devicelab/devicelab_drone_1_26_0.expected/no-task-name.json
+++ b/recipes/devicelab/devicelab_drone_1_26_0.expected/no-task-name.json
@@ -7,6 +7,14 @@
"The recipe has crashed at point 'Uncaught exception'!",
"",
"Traceback (most recent call last):",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/engine.py\", in run_steps",
+ " raw_result = recipe_obj.run_steps(api, engine)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/recipe_deps.py\", in run_steps",
+ " properties_def, api=api)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in invoke_with_properties",
+ " arg_names, **additional_args)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in _invoke_with_properties",
+ " return callable_obj(*props, **additional_args)",
" File \"RECIPE_REPO[flutter]/recipes/devicelab/devicelab_drone_1_26_0.py\", line 31, in RunSteps",
" raise ValueError('A task_name property is required')",
"ValueError: A task_name property is required"
diff --git a/recipes/devicelab/devicelab_drone_1_27_0.expected/no-task-name.json b/recipes/devicelab/devicelab_drone_1_27_0.expected/no-task-name.json
index eaafc64..899cf1d 100644
--- a/recipes/devicelab/devicelab_drone_1_27_0.expected/no-task-name.json
+++ b/recipes/devicelab/devicelab_drone_1_27_0.expected/no-task-name.json
@@ -7,6 +7,14 @@
"The recipe has crashed at point 'Uncaught exception'!",
"",
"Traceback (most recent call last):",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/engine.py\", in run_steps",
+ " raw_result = recipe_obj.run_steps(api, engine)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/recipe_deps.py\", in run_steps",
+ " properties_def, api=api)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in invoke_with_properties",
+ " arg_names, **additional_args)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/property_invoker.py\", in _invoke_with_properties",
+ " return callable_obj(*props, **additional_args)",
" File \"RECIPE_REPO[flutter]/recipes/devicelab/devicelab_drone_1_27_0.py\", line 31, in RunSteps",
" raise ValueError('A task_name property is required')",
"ValueError: A task_name property is required"
diff --git a/recipes/engine/web_engine_drone.expected/linux-error.json b/recipes/engine/web_engine_drone.expected/linux-error.json
index 9162573..4b3a18f 100644
--- a/recipes/engine/web_engine_drone.expected/linux-error.json
+++ b/recipes/engine/web_engine_drone.expected/linux-error.json
@@ -218,8 +218,14 @@
"The recipe has crashed at point 'Uncaught exception'!",
"",
"Traceback (most recent call last):",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/engine.py\", in run_steps",
+ " raw_result = recipe_obj.run_steps(api, engine)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/recipe_deps.py\", in run_steps",
+ " recipe_result = self.global_symbols['RunSteps'](*args)",
" File \"RECIPE_REPO[flutter]/recipes/engine/web_engine_drone.py\", line 78, in RunSteps",
" api.web_util.prepare_dependencies(checkout)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/recipe_api.py\", in _inner",
+ " return func(*a, **kw)",
" File \"RECIPE_REPO[flutter]/recipe_modules/web_util/api.py\", line 172, in prepare_dependencies",
" raise ValueError('Dependency %s not available.' % dep)",
"ValueError: Dependency invalid_dependency not available."
diff --git a/recipes/engine/web_engine_drone_1_26_0.expected/linux-error.json b/recipes/engine/web_engine_drone_1_26_0.expected/linux-error.json
index 2365f11..73a7bbc 100644
--- a/recipes/engine/web_engine_drone_1_26_0.expected/linux-error.json
+++ b/recipes/engine/web_engine_drone_1_26_0.expected/linux-error.json
@@ -218,8 +218,14 @@
"The recipe has crashed at point 'Uncaught exception'!",
"",
"Traceback (most recent call last):",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/engine.py\", in run_steps",
+ " raw_result = recipe_obj.run_steps(api, engine)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/recipe_deps.py\", in run_steps",
+ " recipe_result = self.global_symbols['RunSteps'](*args)",
" File \"RECIPE_REPO[flutter]/recipes/engine/web_engine_drone_1_26_0.py\", line 76, in RunSteps",
" api.web_util.prepare_dependencies(checkout)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/recipe_api.py\", in _inner",
+ " return func(*a, **kw)",
" File \"RECIPE_REPO[flutter]/recipe_modules/web_util/api.py\", line 172, in prepare_dependencies",
" raise ValueError('Dependency %s not available.' % dep)",
"ValueError: Dependency invalid_dependency not available."
diff --git a/recipes/engine/web_engine_drone_1_27_0.expected/linux-error.json b/recipes/engine/web_engine_drone_1_27_0.expected/linux-error.json
index ec08626..1a3c66e 100644
--- a/recipes/engine/web_engine_drone_1_27_0.expected/linux-error.json
+++ b/recipes/engine/web_engine_drone_1_27_0.expected/linux-error.json
@@ -218,8 +218,14 @@
"The recipe has crashed at point 'Uncaught exception'!",
"",
"Traceback (most recent call last):",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/engine.py\", in run_steps",
+ " raw_result = recipe_obj.run_steps(api, engine)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/internal/recipe_deps.py\", in run_steps",
+ " recipe_result = self.global_symbols['RunSteps'](*args)",
" File \"RECIPE_REPO[flutter]/recipes/engine/web_engine_drone_1_27_0.py\", line 76, in RunSteps",
" api.web_util.prepare_dependencies(checkout)",
+ " File \"RECIPE_REPO[recipe_engine]/recipe_engine/recipe_api.py\", in _inner",
+ " return func(*a, **kw)",
" File \"RECIPE_REPO[flutter]/recipe_modules/web_util/api.py\", line 172, in prepare_dependencies",
" raise ValueError('Dependency %s not available.' % dep)",
"ValueError: Dependency invalid_dependency not available."
diff --git a/recipes/femu_test.expected/no_zircon_file.json b/recipes/femu_test.expected/no_zircon_file.json
index b0862d2..d6f2c96 100644
--- a/recipes/femu_test.expected/no_zircon_file.json
+++ b/recipes/femu_test.expected/no_zircon_file.json
@@ -513,6 +513,89 @@
"name": "Package Fuchsia Artifacts"
},
{
+ "cmd": [],
+ "name": "Retrieve list of gtest filters",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@yaml@txt_tests: -ParagraphTest.*@@@",
+ "@@@STEP_LOG_LINE@yaml@fml_tests: -MessageLoop.TimeSensistiveTest_*:FileTest.CanTruncateAndWrite:FileTest.CreateDirectoryStructure@@@",
+ "@@@STEP_LOG_END@yaml@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CACHE]/builder/src/flutter/testing/fuchsia/gtest_filters.yaml",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_prefixes": {
+ "PATH": [
+ "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+ ]
+ },
+ "env_suffixes": {
+ "DEPOT_TOOLS_UPDATE": [
+ "0"
+ ],
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "Retrieve list of gtest filters.read",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@gtest_filters.yaml@txt_tests: -ParagraphTest.*@@@",
+ "@@@STEP_LOG_LINE@gtest_filters.yaml@fml_tests: -MessageLoop.TimeSensistiveTest_*:FileTest.CanTruncateAndWrite:FileTest.CreateDirectoryStructure@@@",
+ "@@@STEP_LOG_END@gtest_filters.yaml@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[flutter::yaml]/resources/parse_yaml.py",
+ "--yaml_file",
+ "[CACHE]/builder/src/flutter/testing/fuchsia/gtest_filters.yaml",
+ "--json_file",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_prefixes": {
+ "PATH": [
+ "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+ ]
+ },
+ "env_suffixes": {
+ "DEPOT_TOOLS_UPDATE": [
+ "0"
+ ],
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "Retrieve list of gtest filters.parse",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fml_tests\": \"-MessageLoop.TimeSensistiveTest_*:FileTest.CanTruncateAndWrite:FileTest.CreateDirectoryStructure\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"txt_tests\": \"-ParagraphTest.*\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
"cmd": [
"vpython",
"-u",
diff --git a/recipes/femu_test.expected/start_femu_with_vdl.json b/recipes/femu_test.expected/start_femu_with_vdl.json
index ef1db44..ca7a306 100644
--- a/recipes/femu_test.expected/start_femu_with_vdl.json
+++ b/recipes/femu_test.expected/start_femu_with_vdl.json
@@ -513,6 +513,89 @@
"name": "Package Fuchsia Artifacts"
},
{
+ "cmd": [],
+ "name": "Retrieve list of gtest filters",
+ "~followup_annotations": [
+ "@@@STEP_LOG_LINE@yaml@txt_tests: -ParagraphTest.*@@@",
+ "@@@STEP_LOG_LINE@yaml@fml_tests: -MessageLoop.TimeSensistiveTest_*:FileTest.CanTruncateAndWrite:FileTest.CreateDirectoryStructure@@@",
+ "@@@STEP_LOG_END@yaml@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "copy",
+ "[CACHE]/builder/src/flutter/testing/fuchsia/gtest_filters.yaml",
+ "/path/to/tmp/"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_prefixes": {
+ "PATH": [
+ "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+ ]
+ },
+ "env_suffixes": {
+ "DEPOT_TOOLS_UPDATE": [
+ "0"
+ ],
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "infra_step": true,
+ "name": "Retrieve list of gtest filters.read",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@gtest_filters.yaml@txt_tests: -ParagraphTest.*@@@",
+ "@@@STEP_LOG_LINE@gtest_filters.yaml@fml_tests: -MessageLoop.TimeSensistiveTest_*:FileTest.CanTruncateAndWrite:FileTest.CreateDirectoryStructure@@@",
+ "@@@STEP_LOG_END@gtest_filters.yaml@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "vpython",
+ "-u",
+ "RECIPE_MODULE[flutter::yaml]/resources/parse_yaml.py",
+ "--yaml_file",
+ "[CACHE]/builder/src/flutter/testing/fuchsia/gtest_filters.yaml",
+ "--json_file",
+ "/path/to/tmp/json"
+ ],
+ "cwd": "[CACHE]/builder",
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_prefixes": {
+ "PATH": [
+ "[CACHE]/builder/src/third_party/dart/tools/sdks/dart-sdk/bin"
+ ]
+ },
+ "env_suffixes": {
+ "DEPOT_TOOLS_UPDATE": [
+ "0"
+ ],
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "Retrieve list of gtest filters.parse",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"fml_tests\": \"-MessageLoop.TimeSensistiveTest_*:FileTest.CanTruncateAndWrite:FileTest.CreateDirectoryStructure\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"txt_tests\": \"-ParagraphTest.*\"@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
"cmd": [
"vpython",
"-u",
diff --git a/recipes/femu_test.py b/recipes/femu_test.py
index b6f0566..3ff0c4e 100644
--- a/recipes/femu_test.py
+++ b/recipes/femu_test.py
@@ -17,6 +17,7 @@
'depot_tools/depot_tools',
'flutter/json_util',
'flutter/repo_util',
+ 'flutter/yaml',
'fuchsia/display_util',
'fuchsia/sdk',
'fuchsia/ssh',
@@ -176,35 +177,14 @@
def TestFuchsiaFEMU(api):
"""Run flutter tests on FEMU."""
+ checkout = GetCheckoutPath(api)
+ gtest_filters_file = checkout.join('flutter', 'testing', 'fuchsia',
+ 'gtest_filters.yaml')
+ gtest_filters = api.yaml.read('Retrieve list of gtest filters',
+ gtest_filters_file, api.json.output())
test_args = {
- 'txt_tests':
- '--gtest_filter=-ParagraphTest.*',
- 'fml_tests':
- '--gtest_filter=-MessageLoop.TimeSensistiveTest_*:FileTest.CanTruncateAndWrite:FileTest.CreateDirectoryStructure',
- 'shell_tests':
- (
- '--gtest_filter=-'
- 'ShellTest.ReportTimingsIsCalledLaterInReleaseMode:'
- 'ShellTest.ReportTimingsIsCalledSoonerInNonReleaseMode:'
- 'ShellTest.CacheSkSLWorks:'
- 'ShellTest.FrameRasterizedCallbackIsCalled:'
- 'ShellTest.ExternalEmbedderNoThreadMerger:'
- 'ShellTest.OnPlatformViewDestroyWithoutRasterThreadMerger:'
- 'ShellTest.ReportTimingsIsCalledImmediatelyAfterTheFirstFrame:'
- 'ShellTest.DisallowedDartVMFlag:'
- 'ShellTest.SetResourceCacheSize:'
- 'ShellTest.SetResourceCacheSizeEarly:'
- 'ShellTest.SetResourceCacheSizeNotifiesDart:'
- 'ShellTest.Screenshot:'
- 'ShellTest.RasterizerScreenshot:'
- 'ShellTest.DiscardLayerTreeOnResize:'
- 'SkpWarmupTest.Basic:'
- 'SkpWarmupTest.Image:'
- 'FuchsiaShellTest.LocaltimesVaryOnTimezoneChanges'),
- 'flutter_runner_scenic_tests':
- '--gtest_filter=-SessionConnectionTest.*:CalculateNextLatchPointTest.*',
- 'flutter_runner_tests':
- '--gtest_filter=-EngineTest.SkpWarmup',
+ test_type: '--gtest_filter={filter}'.format(filter=gtest_filter)
+ for test_type, gtest_filter in gtest_filters.json.output.items()
}
flutter_tests, root_dir, isolated_hash = IsolateSymlink(api)
cmd = ['./run_vdl_test.sh']
@@ -337,6 +317,18 @@
),
),
api.step_data(
+ 'Retrieve list of gtest filters.parse',
+ api.json.output({
+ 'txt_tests': '-ParagraphTest.*',
+ 'fml_tests': '-MessageLoop.TimeSensistiveTest_*:FileTest.CanTruncateAndWrite:FileTest.CreateDirectoryStructure'
+ })
+ ),
+ api.step_data(
+ 'Retrieve list of gtest filters.read',
+ api.file.read_text('''txt_tests: -ParagraphTest.*
+fml_tests: -MessageLoop.TimeSensistiveTest_*:FileTest.CanTruncateAndWrite:FileTest.CreateDirectoryStructure''')
+ ),
+ api.step_data(
'Read manifest',
api.file.read_json({'id': '0.20200101.0.1'}),
),
@@ -384,6 +376,18 @@
vdl_version='g3-revision:vdl_fuchsia_xxxxxxxx_RC00',
),),
api.step_data(
+ 'Retrieve list of gtest filters.parse',
+ api.json.output({
+ 'txt_tests': '-ParagraphTest.*',
+ 'fml_tests': '-MessageLoop.TimeSensistiveTest_*:FileTest.CanTruncateAndWrite:FileTest.CreateDirectoryStructure'
+ })
+ ),
+ api.step_data(
+ 'Retrieve list of gtest filters.read',
+ api.file.read_text('''txt_tests: -ParagraphTest.*
+fml_tests: -MessageLoop.TimeSensistiveTest_*:FileTest.CanTruncateAndWrite:FileTest.CreateDirectoryStructure''')
+ ),
+ api.step_data(
'Read manifest',
api.file.read_json({'id': '0.20200101.0.1'}),
),