| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2014 The Chromium Authors. All rights reserved. | 2 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """Provides simulator test coverage for individual recipes.""" | 6 """Provides simulator test coverage for individual recipes.""" |
| 7 | 7 |
| 8 import logging | 8 import logging |
| 9 import os | 9 import os |
| 10 | 10 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 break | 48 break |
| 49 ret.append({ | 49 ret.append({ |
| 50 'name': '$final_result', | 50 'name': '$final_result', |
| 51 'status_code': result.status_code, | 51 'status_code': result.status_code, |
| 52 'reason': reason | 52 'reason': reason |
| 53 }) | 53 }) |
| 54 | 54 |
| 55 return expect_tests.Result(ret) | 55 return expect_tests.Result(ret) |
| 56 | 56 |
| 57 | 57 |
| 58 def test_gen_coverage(): |
| 59 return ( |
| 60 [os.path.join(x, '*') for x in recipe_util.RECIPE_DIRS()] + |
| 61 [os.path.join(x, '*', 'example.py') for x in recipe_util.MODULE_DIRS()] + |
| 62 [os.path.join(x, '*', 'test_api.py') for x in recipe_util.MODULE_DIRS()] |
| 63 ) |
| 64 |
| 65 @expect_tests.covers(test_gen_coverage) |
| 58 def GenerateTests(): | 66 def GenerateTests(): |
| 67 cover_mods = [] |
| 68 for mod_dir_base in recipe_util.MODULE_DIRS(): |
| 69 if os.path.isdir(mod_dir_base): |
| 70 cover_mods.append(os.path.join(mod_dir_base, '*', '*api.py')) |
| 71 |
| 59 for recipe_path, recipe_name in recipe_loader.loop_over_recipes(): | 72 for recipe_path, recipe_name in recipe_loader.loop_over_recipes(): |
| 60 recipe = recipe_loader.load_recipe(recipe_name) | 73 recipe = recipe_loader.load_recipe(recipe_name) |
| 61 test_api = recipe_loader.create_test_api(recipe.DEPS) | 74 test_api = recipe_loader.create_test_api(recipe.DEPS) |
| 75 |
| 76 covers = cover_mods + [recipe_path] |
| 77 |
| 62 for test_data in recipe.GenTests(test_api): | 78 for test_data in recipe.GenTests(test_api): |
| 63 root, name = os.path.split(recipe_path) | 79 root, name = os.path.split(recipe_path) |
| 64 name = os.path.splitext(name)[0] | 80 name = os.path.splitext(name)[0] |
| 65 expect_path = os.path.join(root, '%s.expected' % name) | 81 expect_path = os.path.join(root, '%s.expected' % name) |
| 66 | 82 |
| 67 test_data.properties['recipe'] = recipe_name.replace('\\', '/') | 83 test_data.properties['recipe'] = recipe_name.replace('\\', '/') |
| 68 yield expect_tests.Test( | 84 yield expect_tests.Test( |
| 69 '%s.%s' % (recipe_name, test_data.name), | 85 '%s.%s' % (recipe_name, test_data.name), |
| 70 expect_tests.FuncCall(RunRecipe, test_data), | 86 expect_tests.FuncCall(RunRecipe, test_data), |
| 71 expect_dir=expect_path, | 87 expect_dir=expect_path, |
| 72 expect_base=test_data.name, | 88 expect_base=test_data.name, |
| 89 covers=covers, |
| 73 break_funcs=(recipe.GenSteps,) | 90 break_funcs=(recipe.GenSteps,) |
| 74 ) | 91 ) |
| 75 | 92 |
| 76 | 93 |
| 77 if __name__ == '__main__': | 94 if __name__ == '__main__': |
| 78 # annotated_run.py has different behavior when these environment variables | 95 # annotated_run.py has different behavior when these environment variables |
| 79 # are set, so unset to make simulation tests environment-invariant. | 96 # are set, so unset to make simulation tests environment-invariant. |
| 80 for env_var in ['TESTING_MASTER_HOST', | 97 for env_var in ['TESTING_MASTER_HOST', |
| 81 'TESTING_MASTER', | 98 'TESTING_MASTER', |
| 82 'TESTING_SLAVENAME']: | 99 'TESTING_SLAVENAME']: |
| 83 if env_var in os.environ: | 100 if env_var in os.environ: |
| 84 logging.warn("Ignoring %s environment variable." % env_var) | 101 logging.warn("Ignoring %s environment variable." % env_var) |
| 85 os.environ.pop(env_var) | 102 os.environ.pop(env_var) |
| 86 | 103 |
| 87 expect_tests.main('recipe_simulation_test', GenerateTests, ( | 104 expect_tests.main('recipe_simulation_test', GenerateTests) |
| 88 [os.path.join(x, '*') for x in recipe_util.RECIPE_DIRS()] + | |
| 89 [os.path.join(x, '*', '*api.py') for x in recipe_util.MODULE_DIRS()] | |
| 90 ), ( | |
| 91 [os.path.join(x, '*', '*config.py') for x in recipe_util.MODULE_DIRS()] | |
| 92 )) | |
| OLD | NEW |