@@ -338,6 +338,7 @@ def test_output_env_subprocess_error(
338
338
stdout_body ,
339
339
stdout_error ,
340
340
):
341
+ monkeypatch .delenv ('NO_COLOR' )
341
342
monkeypatch .setenv ('FORCE_COLOR' if color else 'NO_COLOR' , '' )
342
343
343
344
importlib .reload (build .__main__ ) # reload module to set _STYLES
@@ -352,3 +353,34 @@ def test_output_env_subprocess_error(
352
353
353
354
assert len (stderr ) == 1
354
355
assert stderr [0 ].startswith ('ERROR: Invalid requirement: ' )
356
+
357
+
358
+ @pytest .mark .parametrize (
359
+ ('tty' , 'env' , 'colors' ),
360
+ [
361
+ (False , {}, build .__main__ ._NO_COLORS ),
362
+ (True , {}, build .__main__ ._COLORS ),
363
+ (False , {'NO_COLOR' : '' }, build .__main__ ._NO_COLORS ),
364
+ (True , {'NO_COLOR' : '' }, build .__main__ ._NO_COLORS ),
365
+ (False , {'FORCE_COLOR' : '' }, build .__main__ ._COLORS ),
366
+ (True , {'FORCE_COLOR' : '' }, build .__main__ ._COLORS ),
367
+ ],
368
+ )
369
+ def test_colors (mocker , monkeypatch , main_reload_styles , tty , env , colors ):
370
+ mocker .patch ('sys.stdout.isatty' , return_value = tty )
371
+ for key , value in env .items ():
372
+ monkeypatch .setenv (key , value )
373
+
374
+ importlib .reload (build .__main__ ) # reload module to set _STYLES
375
+
376
+ assert build .__main__ ._STYLES == colors
377
+
378
+
379
+ def test_colors_conflict (monkeypatch , main_reload_styles ):
380
+ monkeypatch .setenv ('NO_COLOR' , '' )
381
+ monkeypatch .setenv ('FORCE_COLOR' , '' )
382
+
383
+ with pytest .warns (Warning , match = 'Both NO_COLOR and FORCE_COLOR environment variables are set, disabling color' ):
384
+ importlib .reload (build .__main__ )
385
+
386
+ assert build .__main__ ._STYLES == build .__main__ ._NO_COLORS
0 commit comments