Addon Manager: Add unit tests for dependencies

This commit is contained in:
Chris Hennes
2022-03-08 19:14:49 -06:00
parent 936a1f01d4
commit bbfc77f167
4 changed files with 91 additions and 6 deletions

View File

@@ -26,7 +26,7 @@ import unittest
import os
import FreeCAD
from Addon import Addon
from Addon import Addon, INTERNAL_WORKBENCHES
from addonmanager_macro import Macro
class TestAddon(unittest.TestCase):
@@ -201,4 +201,20 @@ class TestAddon(unittest.TestCase):
self.assertTrue("AddonB" in addon_strings, "AddonB not in required dependencies, and it should be.")
self.assertTrue("AddonC" in addon_strings, "AddonC not in required dependencies, and it should be.")
self.assertTrue("AddonD" in addon_strings, "AddonD not in required dependencies, and it should be.")
self.assertTrue("Path" in deps.unrecognized_addons, "Path not in unrecognized dependencies, and it should be.")
self.assertTrue("Path" in deps.internal_workbenches, "Path not in workbench dependencies, and it should be.")
def test_internal_workbench_list(self):
addon = Addon("FreeCAD","https://github.com/FreeCAD/FreeCAD", Addon.Status.NOT_INSTALLED, "master")
addon.load_metadata_file(os.path.join(self.test_dir, "depends_on_all_workbenches.xml"))
deps = Addon.Dependencies()
addon.walk_dependency_tree({}, deps)
self.assertEqual(len(deps.internal_workbenches), len(INTERNAL_WORKBENCHES))
def test_version_check(self):
addon = Addon("FreeCAD","https://github.com/FreeCAD/FreeCAD", Addon.Status.NOT_INSTALLED, "master")
addon.load_metadata_file(os.path.join(self.test_dir, "test_version_detection.xml"))
self.assertEqual(len(addon.tags),1, "Wrong number of tags found: version requirements should have restricted to only one")
self.assertFalse("TagA" in addon.tags, "Found 'TagA' in tags, it should have been exluded by version requirement")
self.assertTrue("TagB" in addon.tags, "Failed to find 'TagB' in tags, it should have been included")
self.assertFalse("TagC" in addon.tags, "Found 'TagA' in tags, it should have been exluded by version requirement")

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<package format="1" xmlns="https://wiki.freecad.org/Package_Metadata">
<name>Test Workbenches</name>
<description>A package.xml file for unit testing.</description>
<version>1.0.1</version>
<date>2022-01-07</date>
<maintainer email="developer@freecad.org">FreeCAD Developer</maintainer>
<license file="LICENSE">LGPLv2.1</license>
<url type="repository" branch="main">https://github.com/chennes/FreeCAD-Package</url>
<url type="readme">https://github.com/chennes/FreeCAD-Package/blob/main/README.md</url>
<content>
<workbench>
<classname>MyFirstWorkbench</classname>
<icon>Resources/icons/PackageIcon.svg</icon>
<depend>Arch</depend>
<depend>DraftWB</depend>
<depend>FEM WB</depend>
<depend>MeshWorkbench</depend>
<depend>OpenSCAD Workbench</depend>
<depend>Part WORKBENCH</depend>
<depend>PartDesign WB</depend>
<depend>path</depend>
<depend>Plot</depend>
<depend>POINTS</depend>
<depend>RayTRAcing</depend>
<depend>ROBOTWB</depend>
<depend>Sketcher workbench</depend>
<depend>Spreadsheet</depend>
<depend>TechDraw</depend>
</workbench>
</content>
</package>

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<package format="1" xmlns="https://wiki.freecad.org/Package_Metadata">
<name>Test Workbenches</name>
<description>A package.xml file for unit testing.</description>
<version>1.0.1</version>
<date>2022-01-07</date>
<maintainer email="developer@freecad.org">FreeCAD Developer</maintainer>
<license file="LICENSE">LGPLv2.1</license>
<url type="repository" branch="main">https://github.com/chennes/FreeCAD-Package</url>
<url type="readme">https://github.com/chennes/FreeCAD-Package/blob/main/README.md</url>
<content>
<macro>
<name>MacroA</name>
<tag>TagA</tag>
<freecadmin>0.1</freecadmin>
<freecadmax>0.10</freecadmax>
</macro>
<macro>
<name>MacroB</name>
<tag>TagB</tag>
<freecadmin>0.20</freecadmin>
<freecadmax>9999.98</freecadmax>
</macro>
<macro>
<name>MacroC</name>
<tag>TagC</tag>
<freecadmin>9999.99</freecadmin>
<freecadmax>99999.99</freecadmax>
</macro>
</content>
</package>

View File

@@ -53,14 +53,16 @@ SET(AddonManagerTestsGui_SRCS
SET(AddonManagerTestsFiles_SRCS
AddonManagerTest/data/__init__.py
AddonManagerTest/data/bad_macro_metadata.FCStd
AddonManagerTest/data/combination.xml
AddonManagerTest/data/depends_on_all_workbenches.xml
AddonManagerTest/data/DoNothing.FCMacro
AddonManagerTest/data/good_macro_metadata.FCStd
AddonManagerTest/data/missing_macro_metadata.FCStd
AddonManagerTest/data/good_package.xml
AddonManagerTest/data/macro_only.xml
AddonManagerTest/data/workbench_only.xml
AddonManagerTest/data/missing_macro_metadata.FCStd
AddonManagerTest/data/prefpack_only.xml
AddonManagerTest/data/combination.xml
AddonManagerTest/data/DoNothing.FCMacro
AddonManagerTest/data/test_version_detection.xml
AddonManagerTest/data/workbench_only.xml
)
SET(AddonManagerTests_ALL