Beispiel #1
0
    def test_prereq(self):
        self.pm.install_packages(PackageIdentifier.parse_list(["pkg-with-prereq_1.0"]))

        self.check_content(self.pm.list_installed_packages(), ["pkg-with-prereq_1.0", "prereq-A_1.0", "prereq-B_1.0"])

        self.assertEqual(1, len(get_lines(self.install_folder / "prereq-A_1.0" / "install.log")))
        self.assertEqual(1, len(get_lines(self.install_folder / "prereq-A_1.0" / "sync.log")))
        self.assertEqual(1, len(get_lines(self.install_folder / "prereq-B_1.0" / "install.log")))
        self.assertEqual(1, len(get_lines(self.install_folder / "prereq-B_1.0" / "sync.log")))

        self.pm.install_packages(PackageIdentifier.parse_list(["pkg-with-prereq_2.0"]))

        self.check_content(self.pm.list_installed_packages(), ["pkg-with-prereq_2.0", "pkg-with-prereq_1.0", "prereq-A_1.0", "prereq-B_1.0", "prereq-B_2.0"])

        self.assertEqual(1, len(get_lines(self.install_folder / "prereq-A_1.0" / "install.log")))
        self.assertEqual(2, len(get_lines(self.install_folder / "prereq-A_1.0" / "sync.log")))
        self.assertEqual(1, len(get_lines(self.install_folder / "prereq-B_1.0" / "install.log")))
        self.assertEqual(1, len(get_lines(self.install_folder / "prereq-B_1.0" / "sync.log")))
        self.assertEqual(1, len(get_lines(self.install_folder / "prereq-B_2.0" / "install.log")))
        self.assertEqual(1, len(get_lines(self.install_folder / "prereq-B_2.0" / "sync.log")))

        self.pm.uninstall_packages(PackageIdentifier.parse_list(["pkg-with-prereq_2.0"]))
        self.pm.install_packages(PackageIdentifier.parse_list(["pkg-with-prereq_2.0"]))

        self.assertEqual(1, len(get_lines(self.install_folder / "prereq-A_1.0" / "install.log")))
        self.assertEqual(3, len(get_lines(self.install_folder / "prereq-A_1.0" / "sync.log")))
        self.assertEqual(1, len(get_lines(self.install_folder / "prereq-B_1.0" / "install.log")))
        self.assertEqual(1, len(get_lines(self.install_folder / "prereq-B_1.0" / "sync.log")))
        self.assertEqual(1, len(get_lines(self.install_folder / "prereq-B_2.0" / "install.log")))
        self.assertEqual(2, len(get_lines(self.install_folder / "prereq-B_2.0" / "sync.log")))
    def test_conditional_install(self):
        self.pm.install_packages(PackageIdentifier.parse_list(["condition_1.0"]))
        self.check_content(self.pm.list_installed_packages(), ["condition_1.0", "condition-B_1.0", "condition-D_1.0", "condition-F_1.0", "condition-H_1.0"])

        self.pm.install_packages(PackageIdentifier.parse_list(["condition_1.0"]), env=Environment("test", {"FOO": "BAR"}))
        self.check_content(
            self.pm.list_installed_packages(),
            ["condition_1.0", "condition-A_1.0", "condition-B_1.0", "condition-C_1.0", "condition-D_1.0", "condition-F_1.0", "condition-H_1.0"],
        )

        self.pm.update_user_environment(set_map={"FOO2": "BAR2", "HELLO": "WoRld"})

        env = Environment.build(self.pm.build_builtin_environment(), self.pm.build_user_environment(), Environment("test", {"FOO": "BAR"}))
        self.pm.install_packages(PackageIdentifier.parse_list(["condition_1.0"]), env=env)
        self.check_content(
            self.pm.list_installed_packages(),
            [
                "condition_1.0",
                "condition-A_1.0",
                "condition-B_1.0",
                "condition-C_1.0",
                "condition-D_1.0",
                "condition-E_1.0",
                "condition-F_1.0",
                "condition-G_1.0",
                "condition-H_1.0",
            ],
        )

        self.pm.uninstall_packages(PackageIdentifier.parse_list(["condition_1.0"]))
        self.check_content(self.pm.list_installed_packages(), [])
    def test_steps(self):
        self.pm.install_packages(PackageIdentifier.parse_list(["install_1.0"]))
        self.check_content(self.pm.list_installed_packages(), ["install_1.0"])

        folder = self.install_folder / "install_1.0"

        self.assertTrue(folder.is_dir())
        self.assertTrue((folder / "data1").is_file())
        self.assertTrue((folder / "folder").is_dir())
        self.assertTrue((folder / "folder" / "data2").is_file())
        self.assertTrue((folder / "folder" / "data1-symlink").is_symlink())

        self.assertFalse((self.install_folder / "uninstall.log").is_file())
        self.assertTrue((folder / "postinstall.log").is_file())
        self.assertTrue((folder / "targetFileFromEnv").is_file())
        self.assertTrue((folder / "dump.env").is_file())
        self.assertTrue((folder / "folder2").is_dir())
        with (folder / "targetFileFromEnv").open() as fp:
            content = fp.read().splitlines()
            self.assertEqual(1, len(content))
            self.assertEqual(str(folder), content[0])

        self.pm.uninstall_packages(PackageIdentifier.parse_list(["install_1.0"]))
        self.check_content(self.pm.list_installed_packages(), [])
        self.assertTrue((self.install_folder / "uninstall.log").is_file())
    def test_silent_fail(self):
        with self.assertRaises(Exception):
            self.pm.install_packages(PackageIdentifier.parse_list(["failure-postinstall-exec_1.0"]))
        self.check_content(self.pm.list_installed_packages(), [])

        self.pm.install_packages(PackageIdentifier.parse_list(["failure-postinstall-exec-silent_1.0"]))
        self.check_content(self.pm.list_installed_packages(), ["failure-postinstall-exec-silent_1.0"])
Beispiel #5
0
    def test_container(self):
        self.pm.install_packages(
            PackageIdentifier.parse_list(["container-A_1.0"]))
        self.check_content(self.pm.list_installed_packages(), [
            "container-A_1.0", "container-B_1.0", "container-C_1.0",
            "container-E_1.0"
        ])

        self.pm.install_packages(
            PackageIdentifier.parse_list(["container-A_2.0"]))
        self.check_content(
            self.pm.list_installed_packages(),
            [
                "container-A_1.0", "container-B_1.0", "container-C_1.0",
                "container-E_1.0", "container-A_2.0", "container-D_1.0"
            ],
        )

        self.pm.uninstall_packages(
            PackageIdentifier.parse_list(["container-A_1.0"]))
        self.check_content(
            self.pm.list_installed_packages(),
            ["container-A_2.0", "container-C_1.0", "container-D_1.0"])

        self.pm.uninstall_packages(
            PackageIdentifier.parse_list(["container-A_2.0"]))
        self.check_content(self.pm.list_installed_packages(), [])
Beispiel #6
0
    def test_resolve_latest(self):

        deps = DependencyUtils.install(
            PackageIdentifier.parse_list(["testlatest_1.0"]), APMAP, {})
        self.assertEqual(["version_2.0", "testlatest_1.0"],
                         list(map(str, map(IDENTIFIER_GETTER, deps))))

        deps = DependencyUtils.install(
            PackageIdentifier.parse_list(["testlatest_1.0"]), APMAP,
            filtermap(IPMAP, "version_1.0"))
        self.assertEqual(["version_2.0", "testlatest_1.0"],
                         list(map(str, map(IDENTIFIER_GETTER, deps))))

        deps = DependencyUtils.install(
            PackageIdentifier.parse_list(["testlatest_1.0"]), APMAP,
            filtermap(IPMAP, "version_2.0"))
        self.assertEqual(["testlatest_1.0"],
                         list(map(str, map(IDENTIFIER_GETTER, deps))))

        deps = DependencyUtils.prereq(
            PackageIdentifier.parse_list(["testlatest_2.0"]), APMAP, {})
        self.assertEqual(["version_2.0"],
                         list(map(str, map(IDENTIFIER_GETTER, deps))))

        deps = DependencyUtils.prereq(
            PackageIdentifier.parse_list(["testlatest_2.0", "testlatest_2.1"]),
            APMAP, {})
        self.assertEqual(["version_2.0"],
                         list(map(str, map(IDENTIFIER_GETTER, deps))))
Beispiel #7
0
 def test_free_space_issue(self):
     with self.assertRaises(NotEnoughSpaceException):
         self.pm.install_packages(
             PackageIdentifier.parse_list(["failure-large-ap_1.0"]))
     with self.assertRaises(NotEnoughSpaceException):
         self.pm.install_packages(
             PackageIdentifier.parse_list(["failure-large-extracted_1.0"]))
Beispiel #8
0
    def test_prereq_failure(self):
        with self.assertRaises(PrereqException):
            self.pm.install_packages(
                PackageIdentifier.parse_list(["pkg-with-prereq_0.1"]))

        self.check_content(self.pm.list_installed_packages(),
                           ["prereq-A_0.1-fail"])
        self.assertEqual(
            1,
            len(
                get_lines(self.install_folder / "prereq-A_0.1-fail" /
                          "install.log")))
        self.assertEqual(
            1,
            len(
                get_lines(self.install_folder / "prereq-A_0.1-fail" /
                          "sync.log")))

        with self.assertRaises(PrereqException):
            self.pm.install_packages(
                PackageIdentifier.parse_list(["pkg-with-prereq_0.1"]))

        self.check_content(self.pm.list_installed_packages(),
                           ["prereq-A_0.1-fail"])
        self.assertEqual(
            1,
            len(
                get_lines(self.install_folder / "prereq-A_0.1-fail" /
                          "install.log")))
        self.assertEqual(
            2,
            len(
                get_lines(self.install_folder / "prereq-A_0.1-fail" /
                          "sync.log")))
Beispiel #9
0
    def test_depends_install(self):
        deps = DependencyUtils.install(PackageIdentifier.parse_list([]),
                                       self.pm.list_available_packages(),
                                       self.pm.list_installed_packages())
        self.__assert_deps(deps, [], AvailablePackage)

        deps = DependencyUtils.install(
            PackageIdentifier.parse_list(["container-A_1.0"]),
            self.pm.list_available_packages(),
            self.pm.list_installed_packages())
        self.__assert_deps(deps, [
            "container-E_1.0", "container-B_1.0", "container-C_1.0",
            "container-A_1.0"
        ], AvailablePackage)

        self.pm.install_packages(
            PackageIdentifier.parse_list(["container-A_1.0"]))

        deps = DependencyUtils.install(
            PackageIdentifier.parse_list(["container-A_1.0"]),
            self.pm.list_available_packages(),
            self.pm.list_installed_packages())
        self.__assert_deps(deps, [], AvailablePackage)

        deps = DependencyUtils.install(
            PackageIdentifier.parse_list(["container-A_2.0"]),
            self.pm.list_available_packages(),
            self.pm.list_installed_packages())
        self.__assert_deps(deps, ["container-D_1.0", "container-A_2.0"],
                           AvailablePackage)
 def test_install_unknown_package(self):
     with self.assertRaises(InvalidPackageNameException):
         self.pm.install_packages(PackageIdentifier.parse_list(["unknwonPackage"]))
     with self.assertRaises(InvalidPackageNameException):
         self.pm.install_packages(PackageIdentifier.parse_list(["container-A"]))
     with self.assertRaises(InvalidPackageNameException):
         self.pm.install_packages(PackageIdentifier.parse_list(["unknwonPackage_1.0"]))
    def test_env(self):
        self.pm.install_packages(PackageIdentifier.parse_list(["env-A_1.0"]))
        self.check_content(self.pm.list_installed_packages(), ["env-A_1.0", "env-B_1.0"])

        env = self.pm.build_packages_environment(PackageIdentifier.parse_list(["env-A_1.0"]))
        self.assertEqual(3, len(env_tolist(env)))
        self.assertEqual(
            [
                ("LEAF_ENV_A", "FOO"),
                ("LEAF_ENV_A2", "Hello"),
                ("LEAF_PATH_A", "$PATH:{folder}/env-A_1.0:{folder}/env-B_1.0".format(folder=self.install_folder)),
            ],
            env_tolist(env),
        )

        env = self.pm.build_packages_environment(PackageIdentifier.parse_list(["env-B_1.0", "env-A_1.0"]))
        self.assertEqual(5, len(env_tolist(env)))
        self.assertEqual(
            [
                ("LEAF_ENV_B", "BAR"),
                ("LEAF_PATH_B", "$PATH:{folder}/env-B_1.0".format(folder=self.install_folder)),
                ("LEAF_ENV_A", "FOO"),
                ("LEAF_ENV_A2", "Hello"),
                ("LEAF_PATH_A", "$PATH:{folder}/env-A_1.0:{folder}/env-B_1.0".format(folder=self.install_folder)),
            ],
            env_tolist(env),
        )
        self.assertFileContentEquals(self.install_folder / "env-A_1.0" / "dump.out", "dump.out")
    def test_depends_installed(self):
        deps = DependencyUtils.installed(PackageIdentifier.parse_list(["container-A_1.0"]), self.pm.list_installed_packages(), ignore_unknown=True)
        self.__assert_deps(deps, [], InstalledPackage)

        self.pm.install_packages(PackageIdentifier.parse_list(["container-A_1.0"]))

        deps = DependencyUtils.installed(PackageIdentifier.parse_list(["container-A_1.0"]), self.pm.list_installed_packages())
        self.__assert_deps(deps, ["container-E_1.0", "container-B_1.0", "container-C_1.0", "container-A_1.0"], InstalledPackage)
Beispiel #13
0
    def test_cannot_uninstall_to_keep_dependencies(self):
        self.pm.install_packages(
            PackageIdentifier.parse_list(["container-A_2.0"]))
        self.check_content(
            self.pm.list_installed_packages(),
            ["container-A_2.0", "container-C_1.0", "container-D_1.0"])

        self.pm.uninstall_packages(
            PackageIdentifier.parse_list(["container-C_1.0"]))
        self.check_content(
            self.pm.list_installed_packages(),
            ["container-A_2.0", "container-C_1.0", "container-D_1.0"])
Beispiel #14
0
    def test_depends_prereq(self):
        deps = DependencyUtils.prereq(
            PackageIdentifier.parse_list(["pkg-with-prereq_2.0"]), self.pm.list_available_packages(), self.pm.list_installed_packages()
        )
        self.__assert_deps(deps, ["prereq-A_1.0", "prereq-B_2.0"], AvailablePackage)

        self.pm.install_packages(PackageIdentifier.parse_list(["pkg-with-prereq_1.0"]))
        deps = DependencyUtils.prereq(
            PackageIdentifier.parse_list(["pkg-with-prereq_2.0"]), self.pm.list_available_packages(), self.pm.list_installed_packages()
        )
        self.__assert_deps(deps, ["prereq-A_1.0", "prereq-B_2.0"], None)
        self.assertIsInstance(deps[0], InstalledPackage)
        self.assertIsInstance(deps[1], AvailablePackage)
Beispiel #15
0
    def test_updatet_profile(self):
        self.wm.init_ws()
        profile = self.wm.create_profile("foo")
        self.assertEqual([], profile.packages)
        self.assertEqual(OrderedDict(), profile._getenvmap())

        profile.add_packages(PackageIdentifier.parse_list(["container-A_1.0"]))
        profile.update_environment(OrderedDict([("FOO", "BAR"), ("FOO2", "BAR2")]))
        self.wm.update_profile(profile)

        self.assertEqual(PackageIdentifier.parse_list(["container-A_1.0"]), profile.packages)
        self.assertEqual(OrderedDict([("FOO", "BAR"), ("FOO2", "BAR2")]), profile._getenvmap())

        profile.add_packages(PackageIdentifier.parse_list(["container-A_2.1"]))
        self.wm.update_profile(profile)
        self.assertEqual(PackageIdentifier.parse_list(["container-A_2.1"]), profile.packages)

        profile.add_packages(PackageIdentifier.parse_list(["env-A_1.0"]))
        self.wm.update_profile(profile)
        self.assertEqual(PackageIdentifier.parse_list(["container-A_2.1", "env-A_1.0"]), profile.packages)

        profile.remove_packages(PackageIdentifier.parse_list(["container-A_2.1"]))
        self.wm.update_profile(profile)
        self.assertEqual(PackageIdentifier.parse_list(["env-A_1.0"]), profile.packages)

        with self.assertRaises(Exception):
            profile.name = "fooooooo"
            self.wm.update_profile(profile)
Beispiel #16
0
    def test_rename_profile(self):
        self.wm.init_ws()
        self.wm.create_profile("foo")

        with self.assertRaises(NoProfileSelected):
            self.wm.current_profile_name
        profile = self.wm.get_profile("foo")
        self.wm.switch_profile(profile)
        self.assertEqual("foo", self.wm.current_profile_name)

        profile.add_packages(PackageIdentifier.parse_list(["container-A_2.1"]))
        profile.update_environment({"FOO": "BAR"})
        self.wm.update_profile(profile)

        self.wm.provision_profile(profile)
        self.assertEqual("foo", self.wm.current_profile_name)

        self.check_profile_content("foo", ["container-A", "container-C", "container-D"])

        profile = self.wm.rename_profile("foo", "bar")
        self.assertEqual(1, len(self.wm.list_profiles()))
        self.assertEqual("bar", profile.name)
        self.assertEqual("bar", self.wm.get_profile("bar").name)
        self.assertEqual("bar", self.wm.current_profile_name)
        self.check_profile_content("bar", ["container-A", "container-C", "container-D"])
        self.wm.build_full_environment(profile)
        with self.assertRaises(ProfileNameAlreadyExistException):
            self.wm.rename_profile("bar", "bar")
        with self.assertRaises(InvalidProfileNameException):
            self.wm.rename_profile("foo", "bar")
Beispiel #17
0
 def test_compression(self):
     pislist = [
         "compress-bz2_1.0", "compress-gz_1.0", "compress-tar_1.0",
         "compress-xz_1.0"
     ]
     self.pm.install_packages(PackageIdentifier.parse_list(pislist))
     self.check_content(self.pm.list_installed_packages(), pislist)
 def test_prereq_env(self):
     motifs = ["prereq-env_1.0"]
     errors = self.pm.install_prereq(PackageIdentifier.parse_list(motifs), self.alt_workspace_folder, raise_on_error=False)
     self.assertEqual(0, errors)
     dump = self.alt_workspace_folder / "prereq-env_1.0" / "dump.env"
     self.assertTrue(dump.exists())
     env = env_file_to_map(dump)
     self.assertEqual(env["LEAF_PREREQ_ROOT"], str(self.alt_workspace_folder))
    def test_resolve_latest(self):
        self.pm.install_packages(PackageIdentifier.parse_list(["version_1.0"]))
        self.check_content(self.pm.list_installed_packages(), ["version_1.0"])
        self.check_installed_packages(["version_1.0"])

        self.pm.install_packages(PackageIdentifier.parse_list(["version_1.1"]))
        self.check_content(self.pm.list_installed_packages(), ["version_1.0", "version_1.1"])
        self.check_installed_packages(["version_1.0", "version_1.1"])

        env = self.pm.build_packages_environment(PackageIdentifier.parse_list(["version_latest"]))
        self.assertEqual("1.1", env.find_value("TEST_VERSION"))

        self.pm.install_packages(PackageIdentifier.parse_list(["version_latest"]))
        self.check_content(self.pm.list_installed_packages(), ["version_1.0", "version_1.1", "version_2.0"])
        self.check_installed_packages(["version_1.0", "version_1.1", "version_2.0"])

        env = self.pm.build_packages_environment(PackageIdentifier.parse_list(["version_latest"]))
        self.assertEqual("2.0", env.find_value("TEST_VERSION"))
Beispiel #20
0
    def test_prereq_order(self):
        pi = "prereq-D_1.0"

        prereqs = APMAP[PackageIdentifier.parse(pi)].requires_packages
        self.assertEqual(["prereq-true_1.0", "prereq-false_1.0"], prereqs)
        prereqs = DependencyUtils.prereq(PackageIdentifier.parse_list([pi]),
                                         APMAP, {})
        self.assertEqual(["prereq-false_1.0", "prereq-true_1.0"],
                         list(map(str, map(IDENTIFIER_GETTER, prereqs))))
Beispiel #21
0
    def test_uninstall(self):

        ipmap = OrderedDict()
        for ap in DependencyUtils.install(
                PackageIdentifier.parse_list(
                    ["container-A_1.0", "container-A_2.0"]), APMAP, {}):
            ipmap[ap.identifier] = IPMAP[ap.identifier]

        self.assertEqual([
            "container-E_1.0", "container-B_1.0", "container-C_1.0",
            "container-A_1.0", "container-D_1.0", "container-A_2.0"
        ], deps2strlist(ipmap.values()))

        deps = DependencyUtils.uninstall(
            PackageIdentifier.parse_list(["container-A_1.0"]), ipmap)

        self.assertEqual(
            ["container-A_1.0", "container-B_1.0", "container-E_1.0"],
            deps2strlist(deps))
Beispiel #22
0
    def test_install(self):
        deps = DependencyUtils.install(PackageIdentifier.parse_list(
            ["container-A_1.0", "container-A_2.0"]),
                                       APMAP, {},
                                       env=Environment())
        self.assertEqual([
            "container-E_1.0", "container-B_1.0", "container-C_1.0",
            "container-A_1.0", "container-D_1.0", "container-A_2.0"
        ], deps2strlist(deps))

        deps = DependencyUtils.install(PackageIdentifier.parse_list(
            ["container-A_1.0", "container-A_2.0"]),
                                       APMAP,
                                       filtermap(IPMAP, "container-E_1.0"),
                                       env=Environment())
        self.assertEqual([
            "container-B_1.0", "container-C_1.0", "container-A_1.0",
            "container-D_1.0", "container-A_2.0"
        ], deps2strlist(deps))
 def test_postinstall_error(self):
     with self.assertRaises(Exception):
         self.pm.install_packages(PackageIdentifier.parse_list(["failure-postinstall-exec_1.0"]), keep_folder_on_error=True)
     found = False
     for folder in self.install_folder.iterdir():
         if folder.name.startswith("failure-postinstall-exec_1.0"):
             self.assertTrue(is_folder_ignored(folder))
             found = True
             break
     self.assertTrue(found)
Beispiel #24
0
    def test_latest_strategy(self):
        deps = DependencyUtils.installed(
            PackageIdentifier.parse_list(
                ["container-A_1.0", "container-A_2.0"]), IPMAP)
        self.assertEqual(
            [
                "container-E_1.0", "container-B_1.0", "container-C_1.0",
                "container-A_1.0", "container-D_1.0", "container-A_2.0"
            ],
            list(map(str, map(IDENTIFIER_GETTER, deps))),
        )

        deps = DependencyUtils.installed(PackageIdentifier.parse_list(
            ["container-A_1.0", "container-A_2.0"]),
                                         IPMAP,
                                         only_keep_latest=True)
        self.assertEqual(
            ["container-C_1.0", "container-D_1.0", "container-A_2.0"],
            list(map(str, map(IDENTIFIER_GETTER, deps))))
Beispiel #25
0
    def test_package_override(self):
        self.wm.init_ws()
        profile = self.wm.create_profile("myprofile")
        profile.add_packages(PackageIdentifier.parse_list(["container-A_1.0"]))
        self.wm.update_profile(profile)
        self.wm.provision_profile(profile)

        self.check_installed_packages(["container-A_1.0", "container-B_1.0", "container-C_1.0", "container-E_1.0"])
        self.check_profile_content("myprofile", ["container-A", "container-B", "container-C", "container-E"])

        profile.add_packages(PackageIdentifier.parse_list(["container-E_1.1"]))
        self.wm.update_profile(profile)
        self.wm.provision_profile(profile)

        self.check_installed_packages(["container-A_1.0", "container-B_1.0", "container-C_1.0", "container-E_1.0", "container-E_1.1"])
        self.check_profile_content("myprofile", ["container-A", "container-B", "container-C", "container-E"])
        self.assertEqual(
            PackageIdentifier.parse_list(["container-E_1.1", "container-B_1.0", "container-C_1.0", "container-A_1.0"]),
            list(map(IDENTIFIER_GETTER, self.wm.get_profile_dependencies(profile))),
        )
    def test_sync(self):
        self.pm.install_packages(PackageIdentifier.parse_list(["sync_1.0"]))
        self.check_content(self.pm.list_installed_packages(), ["sync_1.0"])
        self.check_installed_packages(["sync_1.0"])
        sync_file = self.install_folder / "sync_1.0" / "sync.log"

        self.assertFalse(sync_file.exists())

        self.pm.sync_packages(PackageIdentifier.parse_list(["sync_1.0"]))
        self.assertTrue(sync_file.exists())
        self.assertEqual(["MYVALUE"], get_lines(sync_file))

        self.pm.sync_packages(PackageIdentifier.parse_list(["sync_1.0"]))
        self.assertTrue(sync_file.exists())
        self.assertEqual(["MYVALUE", "MYVALUE"], get_lines(sync_file))

        self.pm.update_user_environment({"MYVAR2": "MYOTHERVALUE"})
        self.pm.sync_packages(PackageIdentifier.parse_list(["sync_1.0"]))
        self.assertTrue(sync_file.exists())
        self.assertEqual(["MYVALUE", "MYVALUE", "MYVALUE MYOTHERVALUE"], get_lines(sync_file))
    def test_depends_with_custom_env(self):
        env = Environment.build(self.pm.build_builtin_environment(), self.pm.build_user_environment(), Environment("Custom env", {}))
        deps = DependencyUtils.install(
            PackageIdentifier.parse_list(["condition_1.0"]), self.pm.list_available_packages(), self.pm.list_installed_packages(), env=env
        )
        self.__assert_deps(deps, ["condition-B_1.0", "condition-D_1.0", "condition-F_1.0", "condition-H_1.0", "condition_1.0"], AvailablePackage)

        self.pm.update_user_environment(set_map={"FOO": "HELLO"})
        env = Environment.build(self.pm.build_builtin_environment(), self.pm.build_user_environment(), Environment("Custom env", {}))
        deps = DependencyUtils.install(
            PackageIdentifier.parse_list(["condition_1.0"]), self.pm.list_available_packages(), self.pm.list_installed_packages(), env=env
        )
        self.__assert_deps(deps, ["condition-A_1.0", "condition-D_1.0", "condition-F_1.0", "condition-H_1.0", "condition_1.0"], AvailablePackage)

        self.pm.update_user_environment(set_map={"FOO": "HELLO"})
        env = Environment.build(self.pm.build_builtin_environment(), self.pm.build_user_environment(), Environment("Custom env", {"FOO": "BAR"}))
        deps = DependencyUtils.install(
            PackageIdentifier.parse_list(["condition_1.0"]), self.pm.list_available_packages(), self.pm.list_installed_packages(), env=env
        )
        self.__assert_deps(deps, ["condition-A_1.0", "condition-C_1.0", "condition-F_1.0", "condition_1.0"], AvailablePackage)
Beispiel #28
0
    def test_rdepends(self):

        for mfmap in (IPMAP, APMAP):
            pilist = DependencyUtils.rdepends(
                PackageIdentifier.parse_list(["condition-A_1.0"]), mfmap)
            self.assertEqual(["condition_1.0"], list(map(str, pilist)))

            pilist = DependencyUtils.rdepends(PackageIdentifier.parse_list(
                ["condition-A_1.0"]),
                                              mfmap,
                                              env=Environment(None, {}))
            self.assertEqual([], list(map(str, pilist)))

            pilist = DependencyUtils.rdepends(
                PackageIdentifier.parse_list(["condition-A_1.0"]),
                mfmap,
                env=Environment(None, {"FOO": "BAR"}))
            self.assertEqual(["condition_1.0"], list(map(str, pilist)))

            pilist = DependencyUtils.rdepends(PackageIdentifier.parse_list(
                ["condition-B_1.0"]),
                                              mfmap,
                                              env=Environment(None, {}))
            self.assertEqual(["condition_1.0"], list(map(str, pilist)))

            pilist = DependencyUtils.rdepends(
                PackageIdentifier.parse_list(["condition-B_1.0"]),
                mfmap,
                env=Environment(None, {"FOO": "BAR"}))
            self.assertEqual([], list(map(str, pilist)))

            pilist = DependencyUtils.rdepends(
                PackageIdentifier.parse_list(["condition-B_1.0"]), {})
            self.assertEqual([], list(map(str, pilist)))
Beispiel #29
0
def update_packages_map(ws_config):
    node_root = ws_config.json
    if JsonConstants.WS_PROFILES in node_root:
        for node_profile in node_root[JsonConstants.WS_PROFILES].values():
            if JsonConstants.WS_PROFILE_PACKAGES in node_profile:
                node_packages = node_profile[JsonConstants.WS_PROFILE_PACKAGES]
                if isinstance(node_packages, list):
                    # Proceed migration list -> map
                    packages_map = OrderedDict()
                    for pi in PackageIdentifier.parse_list(node_packages):
                        packages_map[pi.name] = pi.version
                    node_profile[
                        JsonConstants.WS_PROFILE_PACKAGES] = packages_map
Beispiel #30
0
    def execute(self, args, uargs):
        pm = PackageManager()

        tmp_install_folder = args.tmp_install_folder
        if tmp_install_folder is None:
            tmp_install_folder = mkdir_tmp_leaf_dir()
        pm.logger.print_quiet(
            "Prereq root folder: {folder}".format(folder=tmp_install_folder))
        errors = pm.install_prereq(PackageIdentifier.parse_list(args.packages),
                                   tmp_install_folder,
                                   raise_on_error=False)
        pm.logger.print_quiet(
            "Prereq installed with {count} error(s)".format(count=errors))
        return errors