From bc27561ea5432bc471c9b3e9206f20160e32bca2 Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Mon, 3 Oct 2022 14:31:01 -0500 Subject: [PATCH] Test: Add more tag testing to Metadata tests --- src/Mod/Test/Metadata.py | 51 ++++++++++++++++++++++-- src/Mod/Test/TestData/basic_metadata.xml | 1 + src/Mod/Test/TestData/content_items.xml | 8 ++++ 3 files changed, 56 insertions(+), 4 deletions(-) diff --git a/src/Mod/Test/Metadata.py b/src/Mod/Test/Metadata.py index c1d167346a..6e3e7ed5b0 100644 --- a/src/Mod/Test/Metadata.py +++ b/src/Mod/Test/Metadata.py @@ -60,7 +60,7 @@ class TestMetadata(unittest.TestCase): self.assertEqual(md.Name, "Test Workbench") self.assertEqual(md.Description, "A package.xml file for unit testing.") self.assertEqual(md.Version, "1.0.1") - #self.assertEqual(md.Date, "2022-01-07") + self.assertEqual(md.Date, "2022-01-07") self.assertEqual(md.Icon, "Resources/icons/PackageIcon.svg") # Tags that are lists of elements: @@ -71,7 +71,7 @@ class TestMetadata(unittest.TestCase): self.assertEqual(len(authors), 3) urls = md.Urls - self.assertEqual(len(urls), 4) + self.assertEqual(len(urls), 5) tags = md.Tag self.assertEqual(len(tags), 2) @@ -105,7 +105,7 @@ class TestMetadata(unittest.TestCase): macros = content["macro"] other = content["other_content_item"] - self.assertEqual(len(workbenches), 3) + self.assertEqual(len(workbenches), 4) self.assertEqual(len(macros), 2) self.assertEqual(len(preferencepacks), 1) @@ -135,7 +135,47 @@ class TestMetadata(unittest.TestCase): print ("Ignore UnicodeEncodeError in test_file_path:\n{}".format(str(e))) def test_content_item_tags(self): - pass + filename = os.path.join(self.test_dir, "content_items.xml") + md = FreeCAD.Metadata(filename) + + content = md.Content + workbenches = content["workbench"] + found = [False, False, False, False] + for workbench in workbenches: + print(workbench.Classname) + if workbench.Classname == "TestWorkbenchA": + found[0] = True + self.assertEqual(workbench.FreeCADMin, "0.20.0") + tags = workbench.Tag + self.assertTrue("Tag A" in tags) + elif workbench.Classname == "TestWorkbenchB": + found[1] = True + self.assertEqual(workbench.FreeCADMin, "0.1.0") + self.assertEqual(workbench.FreeCADMax, "0.19.0") + tags = workbench.Tag + self.assertTrue("Tag B" in tags) + elif workbench.Classname == "TestWorkbenchC": + found[2] = True + tags = workbench.Tag + self.assertTrue("Tag C" in tags) + self.assertTrue("Tag D" in tags) + elif workbench.Classname == "TestWorkbenchD": + found[3] = True + dependencies = workbench.Depend + expected_dependencies = {"DependencyA":{"type":"automatic","found":False}, + "InternalWorkbench":{"type":"internal","found":False}, + "AddonWorkbench":{"type":"addon","found":False}, + "PythonPackage":{"type":"python","found":False}, + "DependencyB":{"type":"automatic","found":False}} + for dep in dependencies: + self.assertTrue(dep["package"] in expected_dependencies) + self.assertEqual(dep["type"], expected_dependencies[dep["package"]]["type"]) + expected_dependencies[dep["package"]]["found"] = True + for name, expected_dep in expected_dependencies.items(): + self.assertTrue(expected_dep["found"], f"Failed to load dependency '{name}'") + for f in found: + self.assertTrue(f,f"One of the expected workbenches was not found in the metadata file") + def test_last_supported_version(self): pass @@ -148,3 +188,6 @@ class TestMetadata(unittest.TestCase): def test_generic_metadata(self): pass + + def test_min_python_version(self): + pass \ No newline at end of file diff --git a/src/Mod/Test/TestData/basic_metadata.xml b/src/Mod/Test/TestData/basic_metadata.xml index a6f02cc5d2..092bc7e44f 100644 --- a/src/Mod/Test/TestData/basic_metadata.xml +++ b/src/Mod/Test/TestData/basic_metadata.xml @@ -14,6 +14,7 @@ https://github.com/chennes/FreeCAD-Package/blob/main/README.md https://github.com/chennes/FreeCAD-Package/blob/main/README.md https://github.com/chennes/FreeCAD-Package/issues + https://forum.freecadweb.org/ Resources/icons/PackageIcon.svg Tag0 Tag1 diff --git a/src/Mod/Test/TestData/content_items.xml b/src/Mod/Test/TestData/content_items.xml index 6682b58929..034705e779 100644 --- a/src/Mod/Test/TestData/content_items.xml +++ b/src/Mod/Test/TestData/content_items.xml @@ -35,6 +35,14 @@ Tag C Tag D + + TestWorkbenchD + DependencyA + InternalWorkbench + AddonWorkbench + PythonPackage + DependencyB + Macro A Nonexistent File.FCMacro