# Copyright 2020, The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import inspect import os import subprocess import sys import utils # Must assign TITLE so that smoke_tests is able to print it. TITLE = "--include-subdirs" SMOKE_DIR = os.path.dirname(os.path.realpath(__file__)) DEST_DIR = os.path.join(SMOKE_DIR, 'test_mappings', 'A') ATEST = ['atest'] MSG = 'Failed testing {} in {}' EXPECTED_RC = 0 PRE = ':presubmit' POST = ':postsubmit' ALL = ':all' class IncludeSubdirs(): """Class of testing --include-subdirs argument.""" def run_test(self, testgroup, expected_tests): """Method that accepts testgroup and return code to check if the test meets the passed criteria. The test result will be like running: $ atest --include-subdirs :presubmit /path/to/smoke/test_mappings/A Args: testgroup: A string of either ':presubmit', ':postsubmit' or ':all' expected_tests: An integer of tests in the TEST_MAPPING files. """ print('test_include_subdirs_{}'.format(testgroup).replace(':', '')) args = [TITLE, testgroup, DEST_DIR] cmd = ATEST.copy() cmd.extend(args) print('Running: {}'.format(' '.join(cmd))) # 1. Search :presubmit by default, return code must be 0. if not utils.is_passed(EXPECTED_RC, subprocess.call(cmd), args, MSG.format(testgroup, DEST_DIR)): sys.exit(1) # 2. The actual running tests must be the same with expected. if not utils.is_identical(expected_tests, utils.get_test_counts(), 'Test numbers'): sys.exit(1) def main(): utils.print_banner(TITLE) utils.init_test_mapping_files(action='create') tis = IncludeSubdirs() # There are 3 test arguments: # 1. ":presubmit", expect 2 tests. # 2. ":postsubmit", expect 3 tests. # 3. ":all", Since "HelloWorldATest" appears in both TEST_MAPPING files, # we expect running 4 tests after merging. test_args = [(PRE, 2), (POST, 3), (ALL, 4)] for i, _ in enumerate(test_args): print('\n[{}/{}] '.format(i+1, len(test_args)), end='') utils.func_wrapper(tis.run_test, test_args[i]) utils.init_test_mapping_files(action='delete') utils.print_banner(TITLE, True)