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)
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)
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)
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
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
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)
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)
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
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)