55import os
66import re
77import shutil
8+ import sys
89import unittest
910
1011import gyp
1112
1213fixture_dir = os .path .join (os .path .dirname (__file__ ), "fixtures" )
1314gyp_file = os .path .join (os .path .dirname (__file__ ), "fixtures/integration.gyp" )
1415
15- supported_sysnames = {"darwin" , "linux" }
16- sysname = os .uname ().sysname .lower ()
16+ if sys .platform == "win32" :
17+ sysname = sys .platform
18+ else :
19+ sysname = os .uname ().sysname .lower ()
1720expected_dir = os .path .join (fixture_dir , f"expected-{ sysname } " )
1821
1922
20- class TestGyp (unittest .TestCase ):
21- def setUp (self ) -> None :
22- if sysname not in supported_sysnames :
23- self .skipTest (f"Unsupported system: { sysname } " )
24- shutil .rmtree (os .path .join (fixture_dir , "out" ), ignore_errors = True )
23+ def assert_file (test , actual , expected ) -> None :
24+ actual_filepath = os .path .join (fixture_dir , actual )
25+ expected_filepath = os .path .join (expected_dir , expected )
26+
27+ with open (expected_filepath ) as in_file :
28+ in_bytes = in_file .read ()
29+ in_bytes = in_bytes .strip ()
30+ expected_bytes = re .escape (in_bytes )
31+ expected_bytes = expected_bytes .replace ("\\ *" , ".*" )
32+ expected_re = re .compile (expected_bytes )
2533
26- def assert_file ( self , actual , expected ) -> None :
27- actual_filepath = os . path . join ( fixture_dir , actual )
28- expected_filepath = os . path . join ( expected_dir , expected )
34+ with open ( actual_filepath ) as in_file :
35+ actual_bytes = in_file . read ( )
36+ actual_bytes = actual_bytes . strip ( )
2937
30- with open (expected_filepath ) as in_file :
31- expected_bytes = re .escape (in_file .read ())
32- expected_bytes = expected_bytes .replace ("\\ *" , ".*" )
33- expected_re = re .compile (expected_bytes )
38+ try :
39+ test .assertRegex (actual_bytes , expected_re )
40+ except Exception :
41+ shutil .copyfile (actual_filepath , f"{ expected_filepath } .actual" )
42+ raise
3443
35- with open (actual_filepath ) as in_file :
36- actual_bytes = in_file .read ()
3744
38- try :
39- self .assertRegex (actual_bytes , expected_re )
40- except Exception :
41- shutil .copyfile (actual_filepath , f"{ expected_filepath } .actual" )
42- raise
45+ class TestGypUnix (unittest .TestCase ):
46+ supported_sysnames = {"darwin" , "linux" }
47+
48+ def setUp (self ) -> None :
49+ if sysname not in TestGypUnix .supported_sysnames :
50+ self .skipTest (f"Unsupported system: { sysname } " )
51+ shutil .rmtree (os .path .join (fixture_dir , "out" ), ignore_errors = True )
4352
4453 def test_ninja (self ) -> None :
4554 rc = gyp .main (["-f" , "ninja" , "--depth" , fixture_dir , gyp_file ])
4655 assert rc == 0
4756
48- self . assert_file ("out/Default/obj/test.ninja" , "ninja/test.ninja" )
57+ assert_file (self , "out/Default/obj/test.ninja" , "ninja/test.ninja" )
4958
5059 def test_make (self ) -> None :
5160 rc = gyp .main (
@@ -61,10 +70,24 @@ def test_make(self) -> None:
6170 )
6271 assert rc == 0
6372
64- self . assert_file ("out/test.target.mk" , "make/test.target.mk" )
73+ assert_file (self , "out/test.target.mk" , "make/test.target.mk" )
6574
6675 def test_cmake (self ) -> None :
6776 rc = gyp .main (["-f" , "cmake" , "--depth" , fixture_dir , gyp_file ])
6877 assert rc == 0
6978
70- self .assert_file ("out/Default/CMakeLists.txt" , "cmake/CMakeLists.txt" )
79+ assert_file (self , "out/Default/CMakeLists.txt" , "cmake/CMakeLists.txt" )
80+
81+
82+ class TestGypWindows (unittest .TestCase ):
83+ def setUp (self ) -> None :
84+ if sys .platform != "win32" :
85+ self .skipTest ("Windows-only test" )
86+ shutil .rmtree (os .path .join (fixture_dir , "out" ), ignore_errors = True )
87+
88+ def test_msvs (self ) -> None :
89+ rc = gyp .main (["-f" , "msvs" , "--depth" , fixture_dir , gyp_file ])
90+ assert rc == 0
91+
92+ assert_file (self , "test.vcproj" , "msvs/test.vcproj" )
93+ assert_file (self , "integration.sln" , "msvs/integration.sln" )
0 commit comments