@@ -2973,7 +2973,7 @@ def test_cross_fetch_top_level(fake_dists, runner, platform):
29732973 """
29742974 )
29752975
2976- assert out .exit_code == 0 , out
2976+ assert out .exit_code == 0 , out . stderr
29772977 assert expected_output == out .stdout
29782978
29792979
@@ -3041,5 +3041,136 @@ def test_cross_fetch_transitive_deps(
30413041 + expected_output
30423042 )
30433043
3044- assert out .exit_code == 0 , out
3044+ assert out .exit_code == 0 , out .stderr
3045+ assert expected_output == out .stdout
3046+
3047+
3048+ def test_multiple_env_overrides (fake_dists , runner ):
3049+ """
3050+ test passing multiple `--override-environment` evaluates top level
3051+ requirements correctly.
3052+ """
3053+
3054+ # Use arbitrary values for the markers that aren't reasonable values that
3055+ # might come from the test environment.
3056+ with open ("requirements.in" , "w" ) as req_in :
3057+ req_in .write ('small-fake-a==0.1 ; sys_platform == "foo"\n ' )
3058+ req_in .write ('small-fake-b==0.2 ; sys_platform == "bar"\n ' )
3059+ req_in .write ('small-fake-c==0.3 ; implementation_name == "baz"\n ' )
3060+
3061+ out = runner .invoke (
3062+ cli ,
3063+ [
3064+ "--output-file" ,
3065+ "-" ,
3066+ "--quiet" ,
3067+ "--find-links" ,
3068+ fake_dists ,
3069+ "--no-annotate" ,
3070+ "--no-emit-options" ,
3071+ "--no-header" ,
3072+ "--override-environment" ,
3073+ "sys_platform" ,
3074+ "foo" ,
3075+ "--override-environment" ,
3076+ "implementation_name" ,
3077+ "baz" ,
3078+ ],
3079+ )
3080+
3081+ expected_output = dedent (
3082+ """\
3083+ small-fake-a==0.1 ; sys_platform == "foo"
3084+ small-fake-c==0.3 ; implementation_name == "baz"
3085+ """
3086+ )
3087+
3088+ assert out .exit_code == 0 , out .stderr
30453089 assert expected_output == out .stdout
3090+
3091+
3092+ @pytest .mark .parametrize (
3093+ "marker" ,
3094+ (
3095+ "os_name" ,
3096+ "sys_platform" ,
3097+ "platform_machine" ,
3098+ "platform_python_implementation" ,
3099+ "platform_release" ,
3100+ "platform_version" ,
3101+ "python_version" ,
3102+ "python_full_version" ,
3103+ "implementation_name" ,
3104+ "implementation_version" ,
3105+ ),
3106+ )
3107+ def test_all_env_overrides (fake_dists , runner , marker ):
3108+ """
3109+ test that each valid `--override-environment` key can be used to select
3110+ requirements.
3111+ """
3112+
3113+ # Use arbitrary values for the markers that aren't reasonable values that
3114+ # might come from the test environment.
3115+ with open ("requirements.in" , "w" ) as req_in :
3116+ req_in .write (f'small-fake-a==0.1 ; { marker } == "foo"\n ' )
3117+ req_in .write (f'small-fake-b==0.2 ; { marker } == "bar"\n ' )
3118+
3119+ for marker_value in ["foo" , "bar" ]:
3120+ out = runner .invoke (
3121+ cli ,
3122+ [
3123+ "--output-file" ,
3124+ "-" ,
3125+ "--quiet" ,
3126+ "--find-links" ,
3127+ fake_dists ,
3128+ "--no-annotate" ,
3129+ "--no-emit-options" ,
3130+ "--no-header" ,
3131+ "--override-environment" ,
3132+ marker ,
3133+ marker_value ,
3134+ ],
3135+ )
3136+
3137+ if marker_value == "foo" :
3138+ expected_output = dedent (
3139+ f"""\
3140+ small-fake-a==0.1 ; { marker } == "foo"
3141+ """
3142+ )
3143+ else :
3144+ expected_output = dedent (
3145+ f"""\
3146+ small-fake-b==0.2 ; { marker } == "bar"
3147+ """
3148+ )
3149+
3150+ assert out .exit_code == 0 , out .stderr
3151+ assert expected_output == out .stdout
3152+
3153+
3154+ def test_invalid_env_override (runner ):
3155+ """
3156+ test passing an invalid `--override-environment` key triggers an error.
3157+ """
3158+
3159+ with open ("requirements.in" , "w" ):
3160+ pass
3161+
3162+ out = runner .invoke (
3163+ cli ,
3164+ [
3165+ "--output-file" ,
3166+ "-" ,
3167+ "--override-environment" ,
3168+ "foo" ,
3169+ "bar" ,
3170+ ],
3171+ )
3172+
3173+ expected_error = "Invalid value for '--override-environment'"
3174+
3175+ assert out .exit_code == 2
3176+ assert expected_error in out .stderr
0 commit comments