from cibuildwheel.environment import parse_environment def test_basic_parsing(): environment_recipe = parse_environment('VAR=1 VBR=2') environment_dict = environment_recipe.as_dictionary( 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'] def test_quotes(): environment_recipe = parse_environment('A=1 VAR="1 NOT_A_VAR=2" VBR=\'vbr\'') environment_dict = environment_recipe.as_dictionary( prev_environment={} ) environment_cmds = environment_recipe.as_shell_commands() assert environment_dict == {'A': '1', 'VAR': '1 NOT_A_VAR=2', 'VBR': 'vbr'} assert environment_cmds == ['export A=1', 'export VAR="1 NOT_A_VAR=2"', 'export VBR=\'vbr\''] def test_inheritance(): environment_recipe = parse_environment('PATH=$PATH:/usr/local/bin') environment_dict = environment_recipe.as_dictionary( 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'] def test_shell_eval(): environment_recipe = parse_environment('VAR="$(echo "a test" string)"') environment_dict = environment_recipe.as_dictionary( prev_environment={} ) environment_cmds = environment_recipe.as_shell_commands() assert environment_dict == {'VAR': 'a test string'} assert environment_cmds == ['export VAR="$(echo "a test" string)"'] 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)"'] 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='] 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 == [] 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'}