blob: 3dfb284113b7f12b74fbcd1596801280c2bcb1d4 [file] [log] [blame]
# 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)