Addon Manager: Add unit tests for dependencies
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user