#!/usr/bin/env python3 # # Copyright 2017 - 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. from mock import Mock import unittest import tempfile from acts import keys from acts import test_runner import mock_controller class TestRunnerTest(unittest.TestCase): def setUp(self): self.tmp_dir = tempfile.mkdtemp() self.base_mock_test_config = { "testbed": { "name": "SampleTestBed", }, "logpath": self.tmp_dir, "cli_args": None, "testpaths": ["./"], "icecream": 42, "extra_param": "haha" } def create_mock_context(self): context = Mock() context.__exit__ = Mock() context.__enter__ = Mock() return context def create_test_classes(self, class_names): return { class_name: Mock(return_value=self.create_mock_context()) for class_name in class_names } def test_class_name_pattern_single(self): class_names = ['test_class_1', 'test_class_2'] pattern = 'test*1' tr = test_runner.TestRunner(self.base_mock_test_config, [(pattern, None)]) test_classes = self.create_test_classes(class_names) tr.import_test_modules = Mock(return_value=test_classes) tr.run() self.assertTrue(test_classes[class_names[0]].called) self.assertFalse(test_classes[class_names[1]].called) def test_class_name_pattern_multi(self): class_names = ['test_class_1', 'test_class_2', 'other_name'] pattern = 'test_class*' tr = test_runner.TestRunner(self.base_mock_test_config, [(pattern, None)]) test_classes = self.create_test_classes(class_names) tr.import_test_modules = Mock(return_value=test_classes) tr.run() self.assertTrue(test_classes[class_names[0]].called) self.assertTrue(test_classes[class_names[1]].called) self.assertFalse(test_classes[class_names[2]].called) def test_class_name_pattern_question_mark(self): class_names = ['test_class_1', 'test_class_12'] pattern = 'test_class_?' tr = test_runner.TestRunner(self.base_mock_test_config, [(pattern, None)]) test_classes = self.create_test_classes(class_names) tr.import_test_modules = Mock(return_value=test_classes) tr.run() self.assertTrue(test_classes[class_names[0]].called) self.assertFalse(test_classes[class_names[1]].called) def test_class_name_pattern_char_seq(self): class_names = ['test_class_1', 'test_class_2', 'test_class_3'] pattern = 'test_class_[1357]' tr = test_runner.TestRunner(self.base_mock_test_config, [(pattern, None)]) test_classes = self.create_test_classes(class_names) tr.import_test_modules = Mock(return_value=test_classes) tr.run() self.assertTrue(test_classes[class_names[0]].called) self.assertFalse(test_classes[class_names[1]].called) self.assertTrue(test_classes[class_names[2]].called) if __name__ == "__main__": unittest.main()