From 31a1e1cdb937ed98182bb33e15c6d94afa8180ad Mon Sep 17 00:00:00 2001 From: Patrick VanderKnyff Date: Tue, 4 Jan 2022 13:24:47 -0800 Subject: [PATCH] Packaged tacos have version in file name --- .../connector_packager/package.py | 2 +- .../connector_packager/xml_parser.py | 6 +++++ connector-packager/tests/test_package.py | 2 +- connector-packager/tests/test_xml_parser.py | 26 +++++++++++++------ 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/connector-packager/connector_packager/package.py b/connector-packager/connector_packager/package.py index c0d109b6..7c0e300c 100644 --- a/connector-packager/connector_packager/package.py +++ b/connector-packager/connector_packager/package.py @@ -125,7 +125,7 @@ def main(): return package_dest_path = Path(args.dest) - package_name = xmlparser.class_name + PACKAGED_EXTENSION + package_name = xmlparser.class_name + "-v" + xmlparser.connector_version + PACKAGED_EXTENSION if not jdk_create_jar(path_from_args, files_to_package, package_name, package_dest_path): logger.info("Taco packaging failed. Check " + str(log_file) + " for more information.") diff --git a/connector-packager/connector_packager/xml_parser.py b/connector-packager/connector_packager/xml_parser.py index 31ed587a..2b665b6a 100644 --- a/connector-packager/connector_packager/xml_parser.py +++ b/connector-packager/connector_packager/xml_parser.py @@ -37,6 +37,7 @@ def __init__(self, path_to_folder: Path): self.class_name = None # Get this from the class name in the manifest file self.file_list = [] # list of files to package self.loc_strings = [] # list of loc strings so we can make sure they are covered in the resource files. + self.connector_version = None # Get ths from the plugin-version attribute in the manifest def generate_file_list(self) -> Optional[List[ConnectorFile]]: """ @@ -219,6 +220,11 @@ def parse_file(self, file_to_parse: ConnectorFile) -> bool: file_to_parse.file_name) return False + # Set the connector version + if 'plugin-version' in child.attrib: + logging.debug("Found connector version: " + child.attrib['plugin-version']) + self.connector_version = child.attrib['plugin-version'] + # If an attribute has @string, then add that string to the loc_strings list. for key, value in child.attrib.items(): if value.startswith(TRANSLATABLE_STRING_PREFIX): diff --git a/connector-packager/tests/test_package.py b/connector-packager/tests/test_package.py index 14bb3106..f9e97c40 100644 --- a/connector-packager/tests/test_package.py +++ b/connector-packager/tests/test_package.py @@ -13,7 +13,7 @@ class TestPackage(unittest.TestCase): def test_package_main(self): - expected_package_name = "postgres_odbc" + expected_package_name = "postgres_odbc-v0.0.0" expected_dest_directory = Path("tests/test_resources/jars") files_directory = Path("tests/test_resources/valid_connector") diff --git a/connector-packager/tests/test_xml_parser.py b/connector-packager/tests/test_xml_parser.py index 97e676df..8f1d6508 100644 --- a/connector-packager/tests/test_xml_parser.py +++ b/connector-packager/tests/test_xml_parser.py @@ -13,6 +13,7 @@ def test_generate_file_list(self): # Test valid connector expected_class_name = "postgres_odbc" + expected_connector_version = "0.0.0" expected_file_list = [ ConnectorFile("manifest.xml", "manifest"), ConnectorFile("connection-dialog.tcd", "connection-dialog"), @@ -21,7 +22,7 @@ def test_generate_file_list(self): ConnectorFile("connectionResolver.tdr", "connection-resolver"), ConnectorFile("resources-en_US.xml", "resource")] - actual_file_list, actual_class_name = self.parser_test_case(TEST_FOLDER / Path("valid_connector"), + actual_file_list, actual_class_name, actual_connector_version = self.parser_test_case(TEST_FOLDER / Path("valid_connector"), expected_file_list, expected_class_name) self.assertTrue(actual_file_list, "Valid connector did not return a file list") @@ -29,31 +30,34 @@ def test_generate_file_list(self): "Actual file list does not match expected for valid connector") self.assertTrue(actual_class_name == expected_class_name, "Actual class name does not match expected for valid connector") + self.assertTrue(actual_connector_version == expected_connector_version, + "Actual connector version does not match expected for valid connector") print("\nTest invalid connector. Throws XML validation error.") - actual_file_list, actual_class_name = self.parser_test_case(TEST_FOLDER / Path("broken_xml"), + actual_file_list, actual_class_name, actual_connector_version = self.parser_test_case(TEST_FOLDER / Path("broken_xml"), expected_file_list, expected_class_name) self.assertFalse(actual_file_list, "Invalid connector returned a file list when it should not have") print("\nTest connector with class name mismatch. Throws XML validation error.") - actual_file_list, actual_class_name = self.parser_test_case(TEST_FOLDER / Path("wrong_class"), + actual_file_list, actual_class_name, actual_connector_version = self.parser_test_case(TEST_FOLDER / Path("wrong_class"), expected_file_list, expected_class_name) self.assertFalse(actual_file_list, "Connector with class name mismatch returned a file list when it shouldn't") # Test connector with non-https url - actual_file_list, actual_class_name = self.parser_test_case(TEST_FOLDER / Path("non_https"), + actual_file_list, actual_class_name, actual_connector_version = self.parser_test_case(TEST_FOLDER / Path("non_https"), expected_file_list, expected_class_name) self.assertFalse(actual_file_list, "Connector with non-https urls returned a file list when it shouldn't") # Test connector with missing English transaltion - actual_file_list, actual_class_name = self.parser_test_case(TEST_FOLDER / Path("missing_english_translation"), + actual_file_list, actual_class_name, actual_connector_version = self.parser_test_case(TEST_FOLDER / Path("missing_english_translation"), expected_file_list, expected_class_name) self.assertFalse(actual_file_list, "Connector with localized strings but without a resources-en_US.xml file returned a file list when it shouldn't") def test_generate_file_list_mcd(self): # Test modular dialog connector expected_class_name = "postgres_mcd" + expected_connector_version = "0.0.1" expected_file_list = [ ConnectorFile("manifest.xml", "manifest"), ConnectorFile("connectionFields.xml", "connection-fields"), @@ -63,7 +67,7 @@ def test_generate_file_list_mcd(self): ConnectorFile("connectionResolver.xml", "connection-resolver"), ConnectorFile("connectionProperties.js", "script")] - actual_file_list, actual_class_name = self.parser_test_case(TEST_FOLDER / Path("modular_dialog_connector"), + actual_file_list, actual_class_name, actual_connector_version = self.parser_test_case(TEST_FOLDER / Path("modular_dialog_connector"), expected_file_list, expected_class_name) self.assertTrue(actual_file_list, "Valid connector did not return a file list") @@ -71,10 +75,13 @@ def test_generate_file_list_mcd(self): "Actual file list does not match expected for valid connector") self.assertTrue(actual_class_name == expected_class_name, "Actual class name does not match expected for valid connector") + self.assertTrue(actual_connector_version == expected_connector_version, + "Actual connector version does not match expected for valid connector") def test_generate_file_list_oauth(self): # Test oauth connector expected_class_name = "test_oauth" + expected_connector_version = "0.0.1" expected_file_list = [ ConnectorFile("manifest.xml", "manifest"), ConnectorFile("connectionFields.xml", "connection-fields"), @@ -85,7 +92,7 @@ def test_generate_file_list_oauth(self): ConnectorFile("connectionResolver.xml", "connection-resolver"), ConnectorFile("connectionProperties.js", "script")] - actual_file_list, actual_class_name = self.parser_test_case(TEST_FOLDER / Path("oauth_connector"), + actual_file_list, actual_class_name, actual_connector_version = self.parser_test_case(TEST_FOLDER / Path("oauth_connector"), expected_file_list, expected_class_name) self.assertTrue(actual_file_list, "Valid connector did not return a file list") @@ -93,6 +100,8 @@ def test_generate_file_list_oauth(self): "Actual file list does not match expected for valid connector") self.assertTrue(actual_class_name == expected_class_name, "Actual class name does not match expected for valid connector") + self.assertTrue(actual_connector_version == expected_connector_version, + "Actual connector version does not match expected for valid connector") def parser_test_case(self, test_folder, expected_file_list, expected_class_name): @@ -100,5 +109,6 @@ def parser_test_case(self, test_folder, expected_file_list, expected_class_name) actual_file_list = xml_parser.generate_file_list() actual_class_name = xml_parser.class_name + actual_connector_version = xml_parser.connector_version - return actual_file_list, actual_class_name + return actual_file_list, actual_class_name, actual_connector_version