def merge_multiple_test_specifications_from_file_list(test_spec_file_name_list): """! For each file in test_spec_file_name_list merge all test specifications into one @param test_spec_file_name_list List of paths to different test specifications @return TestSpec object with all test specification data inside """ def copy_builds_between_test_specs(source, destination): """! Copies build key-value pairs between two test_spec dicts @param source Source dictionary @param destination Dictionary with will be applied with 'builds' key-values @return Dictionary with merged source """ result = destination.copy() if 'builds' in source and 'builds' in destination: for k in source['builds']: result['builds'][k] = source['builds'][k] return result merged_test_spec = {} for test_spec_file in test_spec_file_name_list: gt_logger.gt_log_tab("using '%s'"% test_spec_file) try: with open(test_spec_file, 'r') as f: test_spec_data = json.load(f) merged_test_spec = copy_builds_between_test_specs(merged_test_spec, test_spec_data) except Exception as e: gt_logger.gt_log_err("Unexpected error while processing '%s' test specification file"% test_spec_file) gt_logger.gt_log_tab(str(e)) merged_test_spec = {} test_spec = TestSpec() test_spec.parse(merged_test_spec) return test_spec
def test_create_filtered_test_list(self): test_spec = TestSpec() test_spec.parse(test_spec_def) test_build = test_spec.get_test_builds()[0] test_list = mbed_greentea_cli.create_filtered_test_list( test_build.get_tests(), 'mbed-drivers-test-generic_*', None, test_spec=test_spec) self.assertEqual(set(test_list.keys()), set(['mbed-drivers-test-generic_tests'])) test_list = mbed_greentea_cli.create_filtered_test_list( test_build.get_tests(), '*_strings', None, test_spec=test_spec) self.assertEqual(set(test_list.keys()), set(['mbed-drivers-test-c_strings'])) test_list = mbed_greentea_cli.create_filtered_test_list( test_build.get_tests(), 'mbed*s', None, test_spec=test_spec) expected = set( ['mbed-drivers-test-c_strings', 'mbed-drivers-test-generic_tests']) self.assertEqual(set(test_list.keys()), expected) test_list = mbed_greentea_cli.create_filtered_test_list( test_build.get_tests(), '*-drivers-*', None, test_spec=test_spec) expected = set( ['mbed-drivers-test-c_strings', 'mbed-drivers-test-generic_tests']) self.assertEqual(set(test_list.keys()), expected)
class TestsSpecFunctionality(unittest.TestCase): def setUp(self): self.ts_2_builds = simple_test_spec def tearDown(self): pass def test_example(self): self.assertEqual(True, True) self.assertNotEqual(True, False) def test_initialise_test_spec_with_filename(self): root_path = os.path.dirname(os.path.realpath(__file__)) spec_path = os.path.join(root_path, "resources", "test_spec.json") self.test_spec = TestSpec(spec_path) test_builds = self.test_spec.get_test_builds() build = list(filter(lambda x: x.get_name() == "K64F-ARM", test_builds))[0] self.assertEqual(build.get_name(), "K64F-ARM") self.assertEqual(build.get_platform(), "K64F") self.assertEqual(build.get_baudrate(), 9600) self.assertEqual(build.get_path(), "./BUILD/K64F/ARM") self.assertEqual(len(build.get_tests()), 2) self.assertTrue("tests-example-1" in build.get_tests()) self.assertTrue("tests-example-2" in build.get_tests()) test = build.get_tests()["tests-example-1"] self.assertEqual(test.get_name(), "tests-example-1") self.assertEqual( test.get_binary().get_path(), "./BUILD/K64F/ARM/tests-mbedmicro-rtos-mbed-mail.bin") self.assertIs(type(test_builds), list) self.assertEqual(len(test_builds), 2) def test_initialise_test_spec_with_invalid_filename(self): root_path = os.path.dirname(os.path.realpath(__file__)) spec_path = os.path.join(root_path, "resources", "null.json") self.test_spec = TestSpec(spec_path) test_builds = self.test_spec.get_test_builds() def test_manually_add_test_binary(self): test_name = "example-test" test_path = "test-path" test = Test(test_name) self.assertEqual(test.get_name(), test_name) self.assertEqual(test.get_binary(), None) test.add_binary(test_path, "bootable") self.assertEqual(test.get_binary().get_path(), test_path) def test_manually_add_test_to_build(self): name = "example-test" test = Test(name) test_build = TestBuild("build", "K64F", "ARM", 9600, "./") self.assertEqual(len(test_build.get_tests()), 0) test_build.add_test(name, test) self.assertEqual(len(test_build.get_tests()), 1) self.assertTrue(name in test_build.get_tests()) def test_manually_add_test_build_to_test_spec(self): test_name = "example-test" test = Test(test_name) test_spec = TestSpec(None) build_name = "example-build" test_build = TestBuild(build_name, "K64F", "ARM", 9600, "./") test_build.add_test(test_name, test) self.assertEqual(len(test_spec.get_test_builds()), 0) test_spec.add_test_builds(build_name, test_build) self.assertEqual(len(test_spec.get_test_builds()), 1) self.assertTrue( build_name in test_spec.get_test_builds()[0].get_name()) def test_get_test_builds(self): self.test_spec = TestSpec() self.test_spec.parse(self.ts_2_builds) test_builds = self.test_spec.get_test_builds() self.assertIs(type(test_builds), list) self.assertEqual(len(test_builds), 2) def test_get_test_builds_names(self): self.test_spec = TestSpec() self.test_spec.parse(self.ts_2_builds) test_builds = self.test_spec.get_test_builds() test_builds_names = [ x.get_name() for x in self.test_spec.get_test_builds() ] self.assertEqual(len(test_builds_names), 2) self.assertIs(type(test_builds_names), list) self.assertIn('K64F-ARM', test_builds_names) self.assertIn('K64F-GCC', test_builds_names) def test_get_test_build(self): self.test_spec = TestSpec() self.test_spec.parse(self.ts_2_builds) test_builds = self.test_spec.get_test_builds() test_builds_names = [ x.get_name() for x in self.test_spec.get_test_builds() ] self.assertEqual(len(test_builds_names), 2) self.assertIs(type(test_builds_names), list) self.assertNotEqual(None, self.test_spec.get_test_build('K64F-ARM')) self.assertNotEqual(None, self.test_spec.get_test_build('K64F-GCC')) def test_get_build_properties(self): self.test_spec = TestSpec() self.test_spec.parse(self.ts_2_builds) test_builds = self.test_spec.get_test_builds() test_builds_names = [ x.get_name() for x in self.test_spec.get_test_builds() ] self.assertEqual(len(test_builds_names), 2) self.assertIs(type(test_builds_names), list) k64f_arm = self.test_spec.get_test_build('K64F-ARM') k64f_gcc = self.test_spec.get_test_build('K64F-GCC') self.assertNotEqual(None, k64f_arm) self.assertNotEqual(None, k64f_gcc) self.assertEqual('K64F', k64f_arm.get_platform()) self.assertEqual('ARM', k64f_arm.get_toolchain()) self.assertEqual(115200, k64f_arm.get_baudrate()) self.assertEqual('K64F', k64f_gcc.get_platform()) self.assertEqual('GCC_ARM', k64f_gcc.get_toolchain()) self.assertEqual(9600, k64f_gcc.get_baudrate()) def test_get_test_builds_properties(self): self.test_spec = TestSpec() self.test_spec.parse(self.ts_2_builds) test_builds = self.test_spec.get_test_builds() test_builds_names = [ x.get_name() for x in self.test_spec.get_test_builds() ] self.assertIn('K64F-ARM', test_builds_names) self.assertIn('K64F-GCC', test_builds_names) def test_get_test_builds_names_filter_by_names(self): self.test_spec = TestSpec() self.test_spec.parse(self.ts_2_builds) filter_by_names = ['K64F-ARM'] test_builds = self.test_spec.get_test_builds( filter_by_names=filter_by_names) test_builds_names = [x.get_name() for x in test_builds] self.assertEqual(len(test_builds_names), 1) self.assertIn('K64F-ARM', test_builds_names) filter_by_names = ['K64F-GCC'] test_builds = self.test_spec.get_test_builds( filter_by_names=filter_by_names) test_builds_names = [x.get_name() for x in test_builds] self.assertEqual(len(test_builds_names), 1) self.assertIn('K64F-GCC', test_builds_names) filter_by_names = ['SOME-PLATFORM-NAME'] test_builds = self.test_spec.get_test_builds( filter_by_names=filter_by_names) test_builds_names = [x.get_name() for x in test_builds] self.assertEqual(len(test_builds_names), 0)
class TestsSpecFunctionality(unittest.TestCase): def setUp(self): self.ts_2_builds = simple_test_spec def tearDown(self): pass def test_example(self): self.assertEqual(True, True) self.assertNotEqual(True, False) def test_get_test_builds(self): self.test_spec = TestSpec() self.test_spec.parse(self.ts_2_builds) test_builds = self.test_spec.get_test_builds() self.assertIs(type(test_builds), list) self.assertEqual(len(test_builds), 2) def test_get_test_builds_names(self): self.test_spec = TestSpec() self.test_spec.parse(self.ts_2_builds) test_builds = self.test_spec.get_test_builds() test_builds_names = [x.get_name() for x in self.test_spec.get_test_builds()] self.assertEqual(len(test_builds_names), 2) self.assertIs(type(test_builds_names), list) self.assertIn('K64F-ARM', test_builds_names) self.assertIn('K64F-GCC', test_builds_names) def test_get_test_build(self): self.test_spec = TestSpec() self.test_spec.parse(self.ts_2_builds) test_builds = self.test_spec.get_test_builds() test_builds_names = [x.get_name() for x in self.test_spec.get_test_builds()] self.assertEqual(len(test_builds_names), 2) self.assertIs(type(test_builds_names), list) self.assertNotEqual(None, self.test_spec.get_test_build('K64F-ARM')) self.assertNotEqual(None, self.test_spec.get_test_build('K64F-GCC')) def test_get_build_properties(self): self.test_spec = TestSpec() self.test_spec.parse(self.ts_2_builds) test_builds = self.test_spec.get_test_builds() test_builds_names = [x.get_name() for x in self.test_spec.get_test_builds()] self.assertEqual(len(test_builds_names), 2) self.assertIs(type(test_builds_names), list) k64f_arm = self.test_spec.get_test_build('K64F-ARM') k64f_gcc = self.test_spec.get_test_build('K64F-GCC') self.assertNotEqual(None, k64f_arm) self.assertNotEqual(None, k64f_gcc) self.assertEqual('K64F', k64f_arm.get_platform()) self.assertEqual('ARM', k64f_arm.get_toolchain()) self.assertEqual(115200, k64f_arm.get_baudrate()) self.assertEqual('K64F', k64f_gcc.get_platform()) self.assertEqual('GCC_ARM', k64f_gcc.get_toolchain()) self.assertEqual(9600, k64f_gcc.get_baudrate()) def test_get_test_builds_properties(self): self.test_spec = TestSpec() self.test_spec.parse(self.ts_2_builds) test_builds = self.test_spec.get_test_builds() test_builds_names = [x.get_name() for x in self.test_spec.get_test_builds()] self.assertIn('K64F-ARM', test_builds_names) self.assertIn('K64F-GCC', test_builds_names) def test_get_test_builds_names_filter_by_names(self): self.test_spec = TestSpec() self.test_spec.parse(self.ts_2_builds) filter_by_names = ['K64F-ARM'] test_builds = self.test_spec.get_test_builds(filter_by_names=filter_by_names) test_builds_names = [x.get_name() for x in test_builds] self.assertEqual(len(test_builds_names), 1) self.assertIn('K64F-ARM', test_builds_names) filter_by_names = ['K64F-GCC'] test_builds = self.test_spec.get_test_builds(filter_by_names=filter_by_names) test_builds_names = [x.get_name() for x in test_builds] self.assertEqual(len(test_builds_names), 1) self.assertIn('K64F-GCC', test_builds_names) filter_by_names = ['SOME-PLATFORM-NAME'] test_builds = self.test_spec.get_test_builds(filter_by_names=filter_by_names) test_builds_names = [x.get_name() for x in test_builds] self.assertEqual(len(test_builds_names), 0)