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