Beispiel #1
0
    def test_update_in_private_env_add_remove_action(self, remove_actions):
        required_solves = [
            plan.SpecsForPrefix(prefix="root/prefix/envs/_env_",
                                specs=["test1", "test2"],
                                r=self.res),
            plan.SpecsForPrefix(prefix=context.root_dir,
                                specs=["test3"],
                                r=self.res)
        ]

        action = defaultdict(list)
        action["PREFIX"] = "root/prefix/envs/_env_"
        action["LINK"] = [Dist("test1-2.1.4-1"), Dist("test2-1.1.1-8")]
        actions = [action]

        test_link_data = {context.root_prefix: {Dist("test1-2.1.4-1"): True}}
        with patch("conda.core.linked_data.linked_data_", test_link_data):
            plan.add_unlink_options_for_update(actions, required_solves,
                                               self.res.index)

        expected_output = [
            action,
            generate_remove_action("root/prefix", [Dist("test1-2.1.4-1")])
        ]
        self.assertEquals(actions, expected_output)
Beispiel #2
0
    def test_update_in_private_env_append_unlink(self, remove_actions):
        required_solves = [
            plan.SpecsForPrefix(prefix="root/prefix/envs/_env_",
                                specs=["test1", "test2"],
                                r=self.res),
            plan.SpecsForPrefix(prefix=context.root_prefix,
                                specs=["whatevs"],
                                r=self.res)
        ]

        action = defaultdict(list)
        action["PREFIX"] = "root/prefix/envs/_env_"
        action["LINK"] = [Dist("test1-2.1.4-1"), Dist("test2-1.1.1-8")]
        action_root = defaultdict(list)
        action_root["PREFIX"] = context.root_prefix
        action_root["LINK"] = [Dist("whatevs-54-54")]
        actions = [action, action_root]

        test_link_data = {context.root_prefix: {Dist("test1-2.1.4-1"): True}}
        with patch("conda.core.linked_data.linked_data_", test_link_data):
            plan.add_unlink_options_for_update(actions, required_solves,
                                               self.res.index)

        aug_action_root = defaultdict(list)
        aug_action_root["PREFIX"] = context.root_prefix
        aug_action_root["LINK"] = [Dist("whatevs-54-54")]
        aug_action_root["UNLINK"] = [Dist("test1-2.1.4-1")]
        expected_output = [action, aug_action_root]
        self.assertEquals(actions, expected_output)
Beispiel #3
0
 def test_determine_dists_per_prefix(self, not_requires):
     with patch.object(plan, "get_resolve_object") as gen_resolve_object_mock:
         gen_resolve_object_mock.return_value = self.res
         dists_for_envs = [plan.SpecForEnv(env=None, spec="test-spec"),
                           plan.SpecForEnv(env=None, spec="test-spec2"),
                           plan.SpecForEnv(env="ranenv", spec="test")]
         specs_for_prefix = plan.determine_dists_per_prefix(
             self.res, "some/prefix", self.res.index, ["ranenv", None], dists_for_envs, self.context)
         expected_output = [
             plan.SpecsForPrefix(prefix="some/prefix/envs/_ranenv_",
                                 r=gen_resolve_object_mock(),
                                 specs={"test"}),
             plan.SpecsForPrefix(prefix="some/prefix", r=self.res,
                                 specs=IndexedSet(("test-spec", "test-spec2")))
         ]
     self.assertEquals(expected_output, specs_for_prefix)
Beispiel #4
0
    def test_get_actions_multiple_dists_and_unlink(self, load_linked_data):
        install = [Dist("testspec2-4.3.0-2"), Dist("testspec1-1.1.1-py27_0")]
        r = generate_mocked_resolve(self.pkgs, install)
        dists_for_prefix = plan.SpecsForPrefix(
            prefix="root/prefix",
            r=r,
            specs=["testspec2 <4.3", "testspec1 1.1*"])

        test_link_data = {
            "root/prefix": {
                Dist("testspec1-0.9.1-py27_2"): True
            }
        }
        with patch("conda.core.linked_data.linked_data_", test_link_data):
            actions = plan.get_actions_for_dists(dists_for_prefix, None,
                                                 self.res.index, None, False,
                                                 False, True, True)

        expected_output = defaultdict(list)
        expected_output["PREFIX"] = "root/prefix"
        expected_output["op_order"] = ('CHECK_FETCH', 'RM_FETCHED', 'FETCH',
                                       'CHECK_EXTRACT', 'RM_EXTRACTED',
                                       'EXTRACT', 'UNLINK', 'LINK',
                                       'SYMLINK_CONDA')
        expected_output["LINK"] = [
            Dist("testspec2-4.3.0-2"),
            Dist("testspec1-1.1.1-py27_0")
        ]
        expected_output["UNLINK"] = [Dist("testspec1-0.9.1-py27_2")]

        expected_output["SYMLINK_CONDA"] = [context.root_dir]
        assert expected_output["LINK"] == actions["LINK"]
        assert actions == expected_output
Beispiel #5
0
    def test_match_to_original_specs(self):
        str_specs = ["test 1.2.0", "test-spec 1.1*", "test-spec2 <4.3"]
        test_r = self.res
        grouped_specs = [
            plan.SpecsForPrefix(prefix="some/prefix/envs/_ranenv_",
                                r=test_r,
                                specs=IndexedSet(("test",))),
            plan.SpecsForPrefix(prefix="some/prefix", r=self.res,
                                specs=IndexedSet(("test-spec", "test-spec2")))]
        matched = plan.match_to_original_specs(str_specs, grouped_specs)
        expected_output = [
            plan.SpecsForPrefix(prefix="some/prefix/envs/_ranenv_",
                                r=test_r,
                                specs=["test 1.2.0"]),
            plan.SpecsForPrefix(prefix="some/prefix", r=self.res,
                                specs=["test-spec 1.1*", "test-spec2 <4.3"])]

        assert len(matched) == len(expected_output)
        assert matched == expected_output
Beispiel #6
0
 def test_not_requires_private_env(self):
     with patch.object(plan, "not_requires_private_env") as not_requires:
         not_requires.return_value = True
         dists_for_envs = [plan.SpecForEnv(env=None, spec="test-spec"),
                           plan.SpecForEnv(env=None, spec="test-spec2")]
         specs_for_prefix = plan.determine_dists_per_prefix(
             self.res, "some/envs/prefix", self.res.index, "prefix", dists_for_envs, self.context)
     expected_output = [plan.SpecsForPrefix(
         prefix="some/envs/prefix", r=self.res, specs={"test-spec", "test-spec2"})]
     self.assertEquals(specs_for_prefix, expected_output)
Beispiel #7
0
    def test_update_in_root_env(self, prefix_if_in_private_env):
        required_solves = [plan.SpecsForPrefix(prefix=context.root_dir, specs=["test3", "test4"],
                                               r=self.res)]

        action = defaultdict(list)
        action["PREFIX"] = "root/prefix"
        action["LINK"] = [Dist("test3-1.2.0"), Dist("test4-1.2.1")]
        actions = [action]
        plan.add_unlink_options_for_update(actions, required_solves, self.res.index)
        expected_output = [action, generate_remove_action(
            "some/prefix/envs/_env_", [Dist("test3-1.2.0"), Dist("test4-2.1.0-22")])]
        self.assertEquals(actions, expected_output)
Beispiel #8
0
    def test_get_actions_multiple_dists(self):
        install = [Dist("testspec2-4.3.0-1"), Dist("testspecs-1.1.1-4")]
        r = generate_mocked_resolve(self.pkgs, install)
        dists_for_prefix = plan.SpecsForPrefix(prefix="root/prefix", r=r,
                                               specs=["testspec2 <4.3", "testspecs 1.1*"])
        actions = plan.get_actions_for_dists(dists_for_prefix, None, self.res.index, None, False,
                                             False, True, True)

        expected_output = defaultdict(list)
        expected_output["PREFIX"] = "root/prefix"
        expected_output["op_order"] = ('CHECK_FETCH', 'RM_FETCHED', 'FETCH', 'CHECK_EXTRACT',
                                       'RM_EXTRACTED', 'EXTRACT', 'UNLINK', 'LINK',
                                       'SYMLINK_CONDA')
        expected_output["LINK"] = [Dist("testspec2-4.3.0-1"), Dist("testspecs-1.1.1-4")]
        expected_output["SYMLINK_CONDA"] = [context.root_dir]

        assert actions == expected_output
Beispiel #9
0
    def test_get_actions_for_dist(self):
        install = [Dist("test-1.2.0-py36_7")]
        r = generate_mocked_resolve(self.pkgs, install)
        dists_for_prefix = plan.SpecsForPrefix(prefix="some/prefix/envs/_ranenv_", r=r,
                                               specs=["test 1.2.0"])
        actions = plan.get_actions_for_dists(dists_for_prefix, None, self.res.index, None, False,
                                             False, True, True)

        expected_output = defaultdict(list)
        expected_output["PREFIX"] = "some/prefix/envs/_ranenv_"
        expected_output["op_order"] = ('CHECK_FETCH', 'RM_FETCHED', 'FETCH', 'CHECK_EXTRACT',
                                       'RM_EXTRACTED', 'EXTRACT', 'UNLINK', 'LINK',
                                       'SYMLINK_CONDA')
        expected_output["LINK"] = [Dist("test-1.2.0-py36_7")]
        expected_output["SYMLINK_CONDA"] = [context.root_dir]

        self.assertEquals(actions, expected_output)