@@ -802,6 +802,55 @@ def test_underpth_dll_file(self):
802802 )], env = env )
803803 self .assertTrue (rc , "sys.path is incorrect" )
804804
805+ class TestSiteCLI (unittest .TestCase ):
806+ """Tests for the site module command-line interface."""
807+
808+ @support .requires_subprocess ()
809+ def test_cli_no_args (self ):
810+ """Test 'python -m site' with no arguments."""
811+ output = subprocess .check_output ([sys .executable , '-m' , 'site' ],
812+ text = True , stderr = subprocess .STDOUT )
813+ self .assertIn ('sys.path' , output )
814+ self .assertIn ('USER_BASE:' , output )
815+ self .assertIn ('USER_SITE:' , output )
816+ self .assertIn ('ENABLE_USER_SITE:' , output )
817+
818+ @support .requires_subprocess ()
819+ def test_cli_user_site (self ):
820+ """Test 'python -m site --user-site'."""
821+ output = subprocess .check_output ([sys .executable , '-m' , 'site' , '--user-site' ],
822+ text = True , stderr = subprocess .STDOUT )
823+ self .assertIn ('site-packages' , output .strip ())
824+ self .assertNotIn ('sys.path' , output )
825+
826+ @support .requires_subprocess ()
827+ def test_cli_user_base (self ):
828+ """Test 'python -m site --user-base'."""
829+ output = subprocess .check_output ([sys .executable , '-m' , 'site' , '--user-base' ],
830+ text = True , stderr = subprocess .STDOUT )
831+ self .assertNotIn ('site-packages' , output )
832+ self .assertNotIn ('sys.path' , output )
833+ self .assertTrue (len (output .strip ()) > 0 )
834+
835+ @support .requires_subprocess ()
836+ def test_cli_user_base_and_user_site (self ):
837+ """Test 'python -m site --user-base --user-site'."""
838+ output = subprocess .check_output ([sys .executable , '-m' , 'site' , '--user-base' , '--user-site' ],
839+ text = True , stderr = subprocess .STDOUT )
840+ lines = output .strip ().split ('\n ' )
841+ self .assertEqual (len (lines ), 1 )
842+ paths = lines [0 ].split (':' )
843+ self .assertEqual (len (paths ), 2 )
844+ self .assertNotIn ('site-packages' , paths [0 ])
845+ self .assertIn ('site-packages' , paths [1 ])
846+
847+ @support .requires_subprocess ()
848+ def test_cli_invalid_option (self ):
849+ """Test 'python -m site' with invalid option."""
850+ with self .assertRaises (subprocess .CalledProcessError ) as cm :
851+ subprocess .check_output ([sys .executable , '-m' , 'site' , '--invalid' ],
852+ text = True , stderr = subprocess .STDOUT )
853+ self .assertNotEqual (cm .exception .returncode , 0 )
805854
806855if __name__ == "__main__" :
807856 unittest .main ()
0 commit comments