Skip to content

Commit

Permalink
Avoid warning when environment variables have the same value of OS on…
Browse files Browse the repository at this point in the history
…es (conda#12128)

* Avoid warning when env var has same value of os

Co-authored-by: Bianca Henderson <[email protected]>
  • Loading branch information
dariocurr and beeankha authored Dec 7, 2022
1 parent 71d70e6 commit b038a8e
Show file tree
Hide file tree
Showing 2 changed files with 111 additions and 86 deletions.
1 change: 1 addition & 0 deletions conda/activate.py
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,7 @@ def _build_activate_stack(self, env_name_or_prefix, stack):

# get clobbered environment variables
clobber_vars = set(env_vars.keys()).intersection(os.environ.keys())
clobber_vars = set(filter(lambda var: env_vars[var] != os.environ[var], clobber_vars))
if clobber_vars:
print("WARNING: overwriting environment variables set in the machine", file=sys.stderr)
print(f"overwriting variable {clobber_vars}", file=sys.stderr)
Expand Down
196 changes: 110 additions & 86 deletions tests/test_activate.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,8 @@
"env_vars": {
"ENV_ONE": "one",
"ENV_TWO": "you",
"ENV_THREE": "me"
"ENV_THREE": "me",
"ENV_WITH_SAME_VALUE": "with_same_value"
}
}'''

Expand Down Expand Up @@ -456,24 +457,31 @@ def test_build_activate_shlvl_0(self):
'PS1': ps1,
}

export_vars = OrderedDict((
('PATH', new_path),
('CONDA_PREFIX', td),
('CONDA_SHLVL', 1),
('CONDA_DEFAULT_ENV', td),
('CONDA_PROMPT_MODIFIER', conda_prompt_modifier),
('PKG_A_ENV', 'yerp'),
('PKG_B_ENV', 'berp'),
('ENV_ONE', 'one'),
('ENV_TWO', 'you'),
('ENV_THREE', 'me'),
))
export_vars, unset_vars = activator.add_export_unset_vars(export_vars, unset_vars)
assert builder['unset_vars'] == unset_vars
assert builder['set_vars'] == set_vars
assert builder['export_vars'] == export_vars
assert builder['activate_scripts'] == (activator.path_conversion(activate_d_1),)
assert builder['deactivate_scripts'] == ()
export_vars = OrderedDict(
(
("PATH", new_path),
("CONDA_PREFIX", td),
("CONDA_SHLVL", 1),
("CONDA_DEFAULT_ENV", td),
("CONDA_PROMPT_MODIFIER", conda_prompt_modifier),
("PKG_A_ENV", "yerp"),
("PKG_B_ENV", "berp"),
("ENV_ONE", "one"),
("ENV_TWO", "you"),
("ENV_THREE", "me"),
("ENV_WITH_SAME_VALUE", "with_same_value"),
)
)
export_vars, unset_vars = activator.add_export_unset_vars(
export_vars, unset_vars
)
assert builder["unset_vars"] == unset_vars
assert builder["set_vars"] == set_vars
assert builder["export_vars"] == export_vars
assert builder["activate_scripts"] == (
activator.path_conversion(activate_d_1),
)
assert builder["deactivate_scripts"] == ()

@pytest.mark.skipif(bash_unsupported_win(), reason=bash_unsupported_win_because())
def test_build_activate_shlvl_1(self):
Expand Down Expand Up @@ -512,21 +520,22 @@ def test_build_activate_shlvl_1(self):

unset_vars = []

set_vars = {
'PS1': ps1
}
export_vars = OrderedDict((
('PATH', new_path),
('CONDA_PREFIX', td),
('CONDA_SHLVL', 2),
('CONDA_DEFAULT_ENV', td),
('CONDA_PROMPT_MODIFIER', conda_prompt_modifier),
('PKG_A_ENV', 'yerp'),
('PKG_B_ENV', 'berp'),
('ENV_ONE', 'one'),
('ENV_TWO', 'you'),
('ENV_THREE', 'me')
))
set_vars = {"PS1": ps1}
export_vars = OrderedDict(
(
("PATH", new_path),
("CONDA_PREFIX", td),
("CONDA_SHLVL", 2),
("CONDA_DEFAULT_ENV", td),
("CONDA_PROMPT_MODIFIER", conda_prompt_modifier),
("PKG_A_ENV", "yerp"),
("PKG_B_ENV", "berp"),
("ENV_ONE", "one"),
("ENV_TWO", "you"),
("ENV_THREE", "me"),
("ENV_WITH_SAME_VALUE", "with_same_value"),
)
)
export_vars, _ = activator.add_export_unset_vars(export_vars, None)
export_vars['CONDA_PREFIX_1'] = old_prefix
export_vars, unset_vars = activator.add_export_unset_vars(export_vars, unset_vars)
Expand All @@ -537,29 +546,33 @@ def test_build_activate_shlvl_1(self):
assert builder['activate_scripts'] == (activator.path_conversion(activate_d_1),)
assert builder['deactivate_scripts'] == ()

with env_vars({
'PATH': new_path,
'CONDA_PREFIX': td,
'CONDA_PREFIX_1': old_prefix,
'CONDA_SHLVL': 2,
'CONDA_DEFAULT_ENV': td,
'CONDA_PROMPT_MODIFIER': conda_prompt_modifier,
'PKG_B_ENV': 'berp',
'PKG_A_ENV': 'yerp',
'ENV_ONE': 'one',
'ENV_TWO': 'you',
'ENV_THREE': 'me'
}):
with env_vars(
{
"PATH": new_path,
"CONDA_PREFIX": td,
"CONDA_PREFIX_1": old_prefix,
"CONDA_SHLVL": 2,
"CONDA_DEFAULT_ENV": td,
"CONDA_PROMPT_MODIFIER": conda_prompt_modifier,
"PKG_B_ENV": "berp",
"PKG_A_ENV": "yerp",
"ENV_ONE": "one",
"ENV_TWO": "you",
"ENV_THREE": "me",
"ENV_WITH_SAME_VALUE": "with_same_value",
}
):
activator = PosixActivator()
builder = activator.build_deactivate()

unset_vars = [
'CONDA_PREFIX_1',
'PKG_A_ENV',
'PKG_B_ENV',
'ENV_ONE',
'ENV_TWO',
'ENV_THREE'
"CONDA_PREFIX_1",
"PKG_A_ENV",
"PKG_B_ENV",
"ENV_ONE",
"ENV_TWO",
"ENV_THREE",
"ENV_WITH_SAME_VALUE",
]
assert builder['set_vars'] == {
'PS1': '(/old/prefix)',
Expand Down Expand Up @@ -616,18 +629,21 @@ def test_build_stack_shlvl_1(self):
set_vars = {
'PS1': ps1,
}
export_vars = OrderedDict((
('PATH', new_path),
('CONDA_PREFIX', td),
('CONDA_SHLVL', 2),
('CONDA_DEFAULT_ENV', td),
('CONDA_PROMPT_MODIFIER', conda_prompt_modifier),
('PKG_A_ENV', 'yerp'),
('PKG_B_ENV', 'berp'),
('ENV_ONE', 'one'),
('ENV_TWO', 'you'),
('ENV_THREE', 'me')
))
export_vars = OrderedDict(
(
("PATH", new_path),
("CONDA_PREFIX", td),
("CONDA_SHLVL", 2),
("CONDA_DEFAULT_ENV", td),
("CONDA_PROMPT_MODIFIER", conda_prompt_modifier),
("PKG_A_ENV", "yerp"),
("PKG_B_ENV", "berp"),
("ENV_ONE", "one"),
("ENV_TWO", "you"),
("ENV_THREE", "me"),
("ENV_WITH_SAME_VALUE", "with_same_value"),
)
)
export_vars, unset_vars = activator.add_export_unset_vars(export_vars, [])
export_vars['CONDA_PREFIX_1'] = old_prefix
export_vars['CONDA_STACKED_2'] = 'true'
Expand Down Expand Up @@ -656,13 +672,14 @@ def test_build_stack_shlvl_1(self):
builder = activator.build_deactivate()

unset_vars = [
'CONDA_PREFIX_1',
'CONDA_STACKED_2',
'PKG_A_ENV',
'PKG_B_ENV',
'ENV_ONE',
'ENV_TWO',
'ENV_THREE'
"CONDA_PREFIX_1",
"CONDA_STACKED_2",
"PKG_A_ENV",
"PKG_B_ENV",
"ENV_ONE",
"ENV_TWO",
"ENV_THREE",
"ENV_WITH_SAME_VALUE",
]
assert builder['set_vars'] == {
'PS1': '(/old/prefix)',
Expand Down Expand Up @@ -787,12 +804,13 @@ def test_build_deactivate_shlvl_2_from_stack(self):
builder = activator.build_deactivate()

unset_vars = [
'CONDA_PREFIX_1',
'CONDA_STACKED_2',
'PKG_A_ENV',
'ENV_ONE',
'ENV_TWO',
'ENV_THREE'
"CONDA_PREFIX_1",
"CONDA_STACKED_2",
"PKG_A_ENV",
"ENV_ONE",
"ENV_TWO",
"ENV_THREE",
"ENV_WITH_SAME_VALUE",
]

conda_prompt_modifier = "(%s) " % old_prefix
Expand Down Expand Up @@ -880,11 +898,12 @@ def test_build_deactivate_shlvl_2_from_activate(self):
builder = activator.build_deactivate()

unset_vars = [
'CONDA_PREFIX_1',
'PKG_A_ENV',
'ENV_ONE',
'ENV_TWO',
'ENV_THREE'
"CONDA_PREFIX_1",
"PKG_A_ENV",
"ENV_ONE",
"ENV_TWO",
"ENV_THREE",
"ENV_WITH_SAME_VALUE",
]

conda_prompt_modifier = "(%s) " % old_prefix
Expand Down Expand Up @@ -945,6 +964,7 @@ def test_build_deactivate_shlvl_1(self):
"ENV_ONE",
"ENV_TWO",
"ENV_THREE",
"ENV_WITH_SAME_VALUE",
],
)
assert builder["set_vars"] == {"PS1": os.environ.get("PS1", "")}
Expand Down Expand Up @@ -1010,7 +1030,8 @@ def test_build_activate_restore_unset_env_vars(self):
'CONDA_PREFIX': old_prefix,
'PATH': old_path,
'CONDA_ENV_PROMPT': '({default_env})',
'ENV_ONE': 'already_set_env_var'
'ENV_ONE': 'already_set_env_var',
'ENV_WITH_SAME_VALUE': 'with_same_value'
}, stack_callback=conda_tests_ctxt_mgmt_def_pol):
activator = PosixActivator()
builder = activator.build_activate(td)
Expand All @@ -1037,6 +1058,7 @@ def test_build_activate_restore_unset_env_vars(self):
('ENV_ONE', 'one'),
('ENV_TWO', 'you'),
('ENV_THREE', 'me'),
('ENV_WITH_SAME_VALUE', 'with_same_value'),
('__CONDA_SHLVL_1_ENV_ONE', 'already_set_env_var')
))
export_vars, _ = activator.add_export_unset_vars(export_vars, None)
Expand All @@ -1061,7 +1083,8 @@ def test_build_activate_restore_unset_env_vars(self):
'PKG_A_ENV': 'yerp',
'ENV_ONE': 'one',
'ENV_TWO': 'you',
'ENV_THREE': 'me'
'ENV_THREE': 'me',
'ENV_WITH_SAME_VALUE': 'with_same_value'
}):
activator = PosixActivator()
builder = activator.build_deactivate()
Expand All @@ -1072,7 +1095,8 @@ def test_build_activate_restore_unset_env_vars(self):
'PKG_B_ENV',
'ENV_ONE',
'ENV_TWO',
'ENV_THREE'
'ENV_THREE',
"ENV_WITH_SAME_VALUE"
]
assert builder['set_vars'] == {
'PS1': '(/old/prefix)',
Expand Down

0 comments on commit b038a8e

Please sign in to comment.