コード例 #1
0
    def test_loadAndSave(self, machine_manager, definition_file_name, instance_file_name, profile_file_name, target_profile_file_name):
        profile = Profile(machine_manager)
        definition = MachineDefinition(machine_manager, self._getDefinitionsFilePath(definition_file_name))
        definition.loadMetaData()

        machine_manager.addMachineDefinition(definition)

        machine_instance = MachineInstance(machine_manager, definition = definition)
        machine_instance.loadFromFile(self._getInstancesFilePath(instance_file_name))
        profile._active_instance = machine_instance
        profile.loadFromFile(self._getProfileFilePath(profile_file_name))
        try:
            os.remove(self._getProfileFilePath(target_profile_file_name)) # Clear any previous tests
        except:
            pass
        profile.saveToFile(self._getProfileFilePath(target_profile_file_name))

        config_loaded = configparser.ConfigParser()
        config_loaded.read(self._getProfileFilePath(instance_file_name))
        config_saved = configparser.ConfigParser()
        config_saved.read(self._getProfileFilePath(target_profile_file_name))

        for section in config_loaded.sections():
            assert section in config_saved.sections()
            for key in config_loaded[section]:
                assert key in config_saved[section]
                assert config_loaded[section][key] == config_saved[section][key]
コード例 #2
0
    def loadMachineInstances(self):
        dirs = Resources.getAllPathsForType(Resources.MachineInstances)
        for dir in dirs:
            if not os.path.isdir(dir):
                continue

            for file_name in os.listdir(dir):
                path = os.path.join(dir, file_name)

                if os.path.isdir(path):
                    continue

                instance = MachineInstance(self)
                try:
                    instance.loadFromFile(path)
                except Exception as e:
                    Logger.log(
                        "e",
                        "An exception occurred loading Machine Instance: %s: %s",
                        path, str(e))
                    continue

                if not self.findMachineInstance(instance.getName()):
                    self._machine_instances.append(instance)
                    instance.nameChanged.connect(self._onInstanceNameChanged)

        instance = self.findMachineInstance(
            Preferences.getInstance().getValue("machines/active_instance"))
        if instance:
            self.setActiveMachineInstance(instance)

        self.machineInstancesChanged.emit()
コード例 #3
0
    def loadMachineInstances(self):
        dirs = Resources.getAllPathsForType(Resources.MachineInstances)
        for dir in dirs:
            if not os.path.isdir(dir):
                continue

            for file_name in os.listdir(dir):
                path = os.path.join(dir, file_name)

                if os.path.isdir(path):
                    continue

                instance = MachineInstance(self)
                try:
                    instance.loadFromFile(path)
                except Exception as e:
                    Logger.log("e", "An exception occurred loading Machine Instance: %s: %s", path, str(e))
                    continue

                if not self.findMachineInstance(instance.getName()):
                    self._machine_instances.append(instance)
                    instance.nameChanged.connect(self._onInstanceNameChanged)

        instance = self.findMachineInstance(Preferences.getInstance().getValue("machines/active_instance"))
        if instance:
            self.setActiveMachineInstance(instance)

        self.machineInstancesChanged.emit()
コード例 #4
0
    def test_loadFromFileExceptions(self, machine_manager, definition_file_name, instance_file_name, expected_exception):
        # Create a definition
        definition = MachineDefinition(machine_manager, self._getDefinitionsFilePath(definition_file_name))
        definition.loadMetaData()

        machine_instance = MachineInstance(machine_manager, definition = definition)
        with pytest.raises(expected_exception):
            machine_instance.loadFromFile(self._getInstancesFilePath(instance_file_name))
コード例 #5
0
    def test_construct(self, machine_manager, file_name, instance_name):
        # Create a definition
        definition = MachineDefinition(machine_manager, self._getDefinitionsFilePath(file_name))
        definition.loadMetaData()

        machine_instance = MachineInstance(machine_manager, definition = definition, name = instance_name)
        assert isinstance(machine_instance, MachineInstance)
        assert machine_instance.getMachineDefinition() == definition
        assert machine_instance.getName() == instance_name
コード例 #6
0
    def test_instanceOverride(self, machine_manager, definition_file_name, instance_file_name, expected_values):
        # Create a definition
        definition = MachineDefinition(machine_manager, self._getDefinitionsFilePath(definition_file_name))
        definition.loadMetaData()

        machine_manager.addMachineDefinition(definition)

        machine_instance = MachineInstance(machine_manager, definition = definition)
        machine_instance.loadFromFile(self._getInstancesFilePath(instance_file_name))

        for key in expected_values:
            assert machine_instance.getSettingValue(key) == expected_values[key]
コード例 #7
0
    def test_profiles(self, machine_manager):
        profile_1 = Profile(machine_manager)
        profile_2 = Profile(machine_manager)
        definition = MachineDefinition(
            machine_manager,
            self._getDefinitionsFilePath("simple_machine.json"))
        definition.loadMetaData()
        machine_manager.addMachineDefinition(definition)

        machine_instance = MachineInstance(machine_manager,
                                           definition=definition,
                                           name="Basic Test")
        machine_instance.loadFromFile(
            self._getInstancesFilePath("simple_machine.cfg"))
        machine_manager.addMachineInstance(machine_instance)
        profile_1._active_instance = machine_instance
        profile_2._active_instance = machine_instance

        profile_1.loadFromFile(
            self._getProfileFilePath("simple_machine_with_overrides.cfg"))
        profile_2.loadFromFile(
            self._getProfileFilePath("simple_machine_with_overrides.cfg"))
        machine_manager.addProfile(profile_1)
        assert machine_manager.getProfiles() == [profile_1]

        # Check if adding again has no effect
        machine_manager.addProfile(profile_1)
        assert machine_manager.getProfiles() == [profile_1]

        # Check that adding another profile with same name does not work
        with pytest.raises(DuplicateProfileError):
            machine_manager.addProfile(profile_2)

        # Changing the name and then adding it should work
        profile_2.setName("test")
        machine_manager.addProfile(profile_2)
        assert profile_1 in machine_manager.getProfiles(
        ) and profile_2 in machine_manager.getProfiles()

        assert machine_manager.findProfile("test") == profile_2

        # Check if removing one of the profiles works
        machine_manager.removeProfile(profile_1)
        assert machine_manager.getProfiles() == [profile_2]

        machine_manager.setActiveProfile(profile_2)
        assert machine_manager.getActiveProfile() == profile_2

        machine_manager.removeProfile(profile_2)

        assert machine_manager.getProfiles() == []
コード例 #8
0
    def test_profileOverride(self, machine_manager, definition_file_name, instance_file_name, profile_file_name, expected_values):
        profile = Profile(machine_manager)
        definition = MachineDefinition(machine_manager, self._getDefinitionsFilePath(definition_file_name))
        definition.loadMetaData()

        machine_manager.addMachineDefinition(definition)

        machine_instance = MachineInstance(machine_manager, definition = definition)
        machine_instance.loadFromFile(self._getInstancesFilePath(instance_file_name))
        profile._active_instance = machine_instance
        profile.loadFromFile(self._getProfileFilePath(profile_file_name))

        for key in expected_values:
            assert profile.getSettingValue(key) == expected_values[key]
コード例 #9
0
ファイル: TestMachineManager.py プロジェクト: Kiddo3D/Uranium
    def test_profiles(self, machine_manager):
        profile_1 = Profile(machine_manager)
        profile_2 = Profile(machine_manager)
        definition = MachineDefinition(machine_manager, self._getDefinitionsFilePath("simple_machine.json"))
        definition.loadMetaData()
        machine_manager.addMachineDefinition(definition)

        machine_instance = MachineInstance(machine_manager, definition = definition, name = "Basic Test")
        machine_instance.loadFromFile(self._getInstancesFilePath("simple_machine.cfg"))
        machine_manager.addMachineInstance(machine_instance)
        profile_1._active_instance = machine_instance
        profile_2._active_instance = machine_instance

        profile_1.loadFromFile(self._getProfileFilePath("simple_machine_with_overrides.cfg"))
        profile_2.loadFromFile(self._getProfileFilePath("simple_machine_with_overrides.cfg"))
        machine_manager.addProfile(profile_1)
        assert machine_manager.getProfiles() == [profile_1]

        # Check if adding again has no effect
        machine_manager.addProfile(profile_1)
        assert machine_manager.getProfiles() == [profile_1]

        # Check that adding another profile with same name does not work
        with pytest.raises(DuplicateProfileError):
            machine_manager.addProfile(profile_2)

        # Changing the name and then adding it should work
        profile_2.setName("test")
        machine_manager.addProfile(profile_2)
        assert profile_1 in machine_manager.getProfiles() and profile_2 in machine_manager.getProfiles()

        assert machine_manager.findProfile("test") == profile_2

        # Check if removing one of the profiles works
        machine_manager.removeProfile(profile_1)
        assert machine_manager.getProfiles() == [profile_2]

        machine_manager.setActiveProfile(profile_2)
        assert machine_manager.getActiveProfile() == profile_2

        machine_manager.removeProfile(profile_2)
        
        assert machine_manager.getProfiles() == []
コード例 #10
0
    def createInstance(self, name, definition_id):
        definition = self._manager.findMachineDefinition(definition_id)

        instance = MachineInstance(self._manager, name = name, definition = definition)
        self._manager.addMachineInstance(instance)

        # Workaround for an issue on OSX where directly calling setActiveMachineInstance would
        # crash in the QML garbage collector.
        event = CallFunctionEvent(self._manager.setActiveMachineInstance, [instance], {})
        Application.getInstance().functionEvent(event)
コード例 #11
0
    def createInstance(self, name, definition_id):
        definition = self._manager.findMachineDefinition(definition_id)

        instance = MachineInstance(
            self._manager,
            name=self._manager.makeUniqueMachineInstanceName(
                name, definition.getName()),
            definition=definition)
        self._manager.addMachineInstance(instance)

        # Workaround for an issue on OSX where directly calling setActiveMachineInstance would
        # crash in the QML garbage collector.
        Application.getInstance().callLater(
            self._manager.setActiveMachineInstance, instance)
コード例 #12
0
    def _createProfile(self, machine_manager, definition_file):
        definition = MachineDefinition(
            machine_manager,
            os.path.join(os.path.dirname(os.path.abspath(__file__)),
                         "definitions", definition_file))
        definition.loadAll()
        machine_manager.addMachineDefinition(definition)
        instance = MachineInstance(machine_manager, definition=definition)
        machine_manager.addMachineInstance(instance)
        machine_manager.setActiveMachineInstance(instance)
        profile = Profile(machine_manager)
        machine_manager.addProfile(profile)
        machine_manager.setActiveProfile(profile)

        return (definition, profile)
コード例 #13
0
    def test_instances(self, machine_manager):
        definition = MachineDefinition(
            machine_manager, self._getDefinitionsFilePath("basic.json"))
        definition.loadMetaData()
        machine_manager.addMachineDefinition(definition)

        machine_instance = MachineInstance(machine_manager,
                                           definition=definition,
                                           name="Basic Test")
        machine_manager.addMachineInstance(machine_instance)
        assert machine_manager.getMachineInstances() == [machine_instance]
        assert machine_manager.findMachineInstance(
            "Basic Test") == machine_instance
        machine_manager.setActiveMachineInstance(machine_instance)
        assert machine_manager.getActiveMachineInstance() == machine_instance

        machine_manager.removeMachineInstance(machine_instance)
        assert machine_manager.getMachineInstances() == []
コード例 #14
0
    def test_variants(self, machine_manager):
        definition_1 = MachineDefinition(
            machine_manager, self._getDefinitionsFilePath("variant_1.json"))
        definition_1.loadMetaData()
        machine_manager.addMachineDefinition(definition_1)
        definition_2 = MachineDefinition(
            machine_manager, self._getDefinitionsFilePath("variant_2.json"))
        definition_2.loadMetaData()
        machine_manager.addMachineDefinition(definition_2)

        machine_instance = MachineInstance(machine_manager,
                                           definition=definition_1)
        machine_manager.addMachineInstance(machine_instance)
        machine_manager.setActiveMachineInstance(machine_instance)

        machine_manager.setActiveMachineVariant("Variant test 2")
        assert machine_manager.getActiveMachineInstance().getMachineDefinition(
        ) == definition_2

        returned_definitions = machine_manager.getMachineDefinitions()
        assert definition_1 in returned_definitions and definition_2 in returned_definitions

        returned_definitions = machine_manager.getMachineDefinitions(
            include_variants=False)
        # Check if only one of the definitions is returned.
        assert (definition_1
                in returned_definitions) != (definition_2
                                             in returned_definitions)

        returned_definitions = machine_manager.getAllMachineVariants("variant")
        assert definition_1 in returned_definitions and definition_2 in returned_definitions

        assert machine_manager.findMachineDefinition(
            "variant", "Variant test 1") == definition_1
        assert machine_manager.findMachineDefinition(
            "variant", "Variant test 2") == definition_2
        assert machine_manager.findMachineDefinition(
            "variant", "Not existing variant") is None