@@ -561,6 +561,39 @@ def test_envbinddir_path(self, newmocksession, monkeypatch):
561561 assert 'PIP_REQUIRE_VIRTUALENV' not in os .environ
562562 assert '__PYVENV_LAUNCHER__' not in os .environ
563563
564+ def test_pythonpath_usage (self , newmocksession , monkeypatch ):
565+ monkeypatch .setenv ("PYTHONPATH" , "/my/awesome/library" )
566+ mocksession = newmocksession ([], """
567+ [testenv:python]
568+ commands=abc
569+ """ )
570+ venv = mocksession .getenv ("python" )
571+ action = mocksession .newaction (venv , "getenv" )
572+ venv .run_install_command (['qwe' ], action = action )
573+ assert 'PYTHONPATH' not in os .environ
574+ mocksession .report .expect ("warning" , "*Discarding $PYTHONPATH from environment*" )
575+
576+ l = mocksession ._pcalls
577+ assert len (l ) == 1
578+ assert 'PYTHONPATH' not in l [0 ].env
579+
580+ # passenv = PYTHONPATH allows PYTHONPATH to stay in environment
581+ monkeypatch .setenv ("PYTHONPATH" , "/my/awesome/library" )
582+ mocksession = newmocksession ([], """
583+ [testenv:python]
584+ commands=abc
585+ passenv = PYTHONPATH
586+ """ )
587+ venv = mocksession .getenv ("python" )
588+ action = mocksession .newaction (venv , "getenv" )
589+ venv .run_install_command (['qwe' ], action = action )
590+ assert 'PYTHONPATH' in os .environ
591+ mocksession .report .not_expect ("warning" , "*Discarding $PYTHONPATH from environment*" )
592+
593+ l = mocksession ._pcalls
594+ assert len (l ) == 2
595+ assert l [1 ].env ['PYTHONPATH' ] == '/my/awesome/library'
596+
564597
565598def test_env_variables_added_to_pcall (tmpdir , mocksession , newconfig , monkeypatch ):
566599 pkg = tmpdir .ensure ("package.tar.gz" )
@@ -572,11 +605,11 @@ def test_env_variables_added_to_pcall(tmpdir, mocksession, newconfig, monkeypatc
572605 passenv = x123
573606 setenv =
574607 ENV_VAR = value
608+ PYTHONPATH = value
575609 """ )
576610 mocksession ._clearmocks ()
577611
578612 venv = VirtualEnv (config .envconfigs ['python' ], session = mocksession )
579- # import pdb; pdb.set_trace()
580613 mocksession .installpkg (venv , pkg )
581614 venv .test ()
582615
@@ -589,13 +622,18 @@ def test_env_variables_added_to_pcall(tmpdir, mocksession, newconfig, monkeypatc
589622 assert env ['ENV_VAR' ] == 'value'
590623 assert env ['VIRTUAL_ENV' ] == str (venv .path )
591624 assert env ['X123' ] == "123"
625+ assert 'PYTHONPATH' in env
626+ assert env ['PYTHONPATH' ] == 'value'
592627 # all env variables are passed for installation
593628 assert l [0 ].env ["YY" ] == "456"
594629 assert "YY" not in l [1 ].env
595630
596631 assert set (["ENV_VAR" , "VIRTUAL_ENV" , "PYTHONHASHSEED" , "X123" , "PATH" ])\
597632 .issubset (l [1 ].env )
598633
634+ # setenv does not trigger PYTHONPATH warnings
635+ mocksession .report .not_expect ("warning" , "*Discarding $PYTHONPATH from environment*" )
636+
599637 # for e in os.environ:
600638 # assert e in env
601639
0 commit comments