Files
cibuildwheel/unit_test/environment_test.py
T

106 lines
3.3 KiB
Python
Raw Normal View History

2019-11-09 12:16:25 +01:00
import os
2019-11-12 23:51:27 +00:00
from cibuildwheel.environment import parse_environment
def test_basic_parsing():
environment_recipe = parse_environment('VAR=1 VBR=2')
environment_dict = environment_recipe.as_dictionary(
2017-09-01 13:24:12 +01:00
prev_environment={}
)
environment_cmds = environment_recipe.as_shell_commands()
assert environment_dict == {'VAR': '1', 'VBR': '2'}
assert environment_cmds == ['export VAR=1', 'export VBR=2']
2019-11-12 23:51:27 +00:00
def test_quotes():
environment_recipe = parse_environment('A=1 VAR="1 NOT_A_VAR=2" VBR=\'vbr\'')
environment_dict = environment_recipe.as_dictionary(
2017-09-01 13:24:12 +01:00
prev_environment={}
)
environment_cmds = environment_recipe.as_shell_commands()
assert environment_dict == {'A': '1', 'VAR': '1 NOT_A_VAR=2', 'VBR': 'vbr'}
2017-09-01 13:24:12 +01:00
assert environment_cmds == ['export A=1', 'export VAR="1 NOT_A_VAR=2"', 'export VBR=\'vbr\'']
2019-11-12 23:51:27 +00:00
def test_inheritance():
environment_recipe = parse_environment('PATH=$PATH:/usr/local/bin')
environment_dict = environment_recipe.as_dictionary(
2017-09-01 13:24:12 +01:00
prev_environment={'PATH': '/usr/bin'}
)
environment_cmds = environment_recipe.as_shell_commands()
assert environment_dict == {'PATH': '/usr/bin:/usr/local/bin'}
assert environment_cmds == ['export PATH=$PATH:/usr/local/bin']
2017-09-01 13:24:12 +01:00
2019-11-12 23:51:27 +00:00
def test_shell_eval():
environment_recipe = parse_environment('VAR="$(echo "a test" string)"')
2019-11-09 12:16:25 +01:00
env_copy = os.environ.copy()
env_copy.pop('VAR', None)
environment_dict = environment_recipe.as_dictionary(
2019-11-09 12:16:25 +01:00
prev_environment=env_copy
)
environment_cmds = environment_recipe.as_shell_commands()
2019-11-09 12:16:25 +01:00
assert environment_dict['VAR'] == 'a test string'
assert environment_cmds == ['export VAR="$(echo "a test" string)"']
2019-11-12 23:51:27 +00:00
def test_shell_eval_and_env():
environment_recipe = parse_environment('VAR="$(echo "$PREV_VAR" string)"')
environment_dict = environment_recipe.as_dictionary(
prev_environment={'PREV_VAR': '1 2 3'}
)
environment_cmds = environment_recipe.as_shell_commands()
assert environment_dict == {'PREV_VAR': '1 2 3', 'VAR': '1 2 3 string'}
assert environment_cmds == ['export VAR="$(echo "$PREV_VAR" string)"']
2019-11-12 23:51:27 +00:00
2017-09-01 13:24:12 +01:00
def test_empty_var():
environment_recipe = parse_environment('CFLAGS=')
environment_dict = environment_recipe.as_dictionary(
prev_environment={'CFLAGS': '-Wall'}
)
environment_cmds = environment_recipe.as_shell_commands()
assert environment_dict == {'CFLAGS': ''}
assert environment_cmds == ['export CFLAGS=']
2017-09-06 18:35:42 +01:00
2019-11-12 23:51:27 +00:00
2017-09-06 18:35:42 +01:00
def test_no_vars():
environment_recipe = parse_environment('')
environment_dict = environment_recipe.as_dictionary(prev_environment={})
environment_cmds = environment_recipe.as_shell_commands()
assert environment_dict == {}
assert environment_cmds == []
2019-11-12 23:51:27 +00:00
2017-09-06 18:35:42 +01:00
def test_no_vars_pass_through():
environment_recipe = parse_environment('')
environment_dict = environment_recipe.as_dictionary(prev_environment={'CIBUILDWHEEL': 'awesome'})
assert environment_dict == {'CIBUILDWHEEL': 'awesome'}
def test_operators_inside_eval():
2020-07-05 17:39:40 +01:00
environment_recipe = parse_environment('SOMETHING="$(echo a; echo b; echo c)"')
2020-07-05 17:39:40 +01:00
# pass the existing process env so PATH is available
environment_dict = environment_recipe.as_dictionary(os.environ.copy())
2020-07-05 17:39:40 +01:00
assert environment_dict.get('SOMETHING') == 'a\nb\nc'