diff options
| author | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2017-10-03 06:26:58 +0200 | 
|---|---|---|
| committer | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2017-10-03 06:26:58 +0200 | 
| commit | 27b47b5db42407baf5d704bf52c35015b2c0ad7b (patch) | |
| tree | 320f8d5fc315c211f7d073891bd7117754f5f5b3 /src/engine/SCons/SConfTests.py | |
| parent | 6be31f5d140b81227911cabfc61d3802c76c1b61 (diff) | |
| parent | fabd454ddf505302bf41ef4da0609437c29d5605 (diff) | |
Merge branch 'release/3.0.0+repack-1'3.0.0+repack-1
Diffstat (limited to 'src/engine/SCons/SConfTests.py')
| -rw-r--r-- | src/engine/SCons/SConfTests.py | 61 | 
1 files changed, 33 insertions, 28 deletions
diff --git a/src/engine/SCons/SConfTests.py b/src/engine/SCons/SConfTests.py index d326a68..36abc7e 100644 --- a/src/engine/SCons/SConfTests.py +++ b/src/engine/SCons/SConfTests.py @@ -1,5 +1,5 @@  # -# Copyright (c) 2001 - 2016 The SCons Foundation +# Copyright (c) 2001 - 2017 The SCons Foundation  #  # Permission is hereby granted, free of charge, to any person obtaining  # a copy of this software and associated documentation files (the @@ -21,7 +21,7 @@  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  # -__revision__ = "src/engine/SCons/SConfTests.py rel_2.5.1:3735:9dc6cee5c168 2016/11/03 14:02:02 bdbaddog" +__revision__ = "src/engine/SCons/SConfTests.py rel_3.0.0:4395:8972f6a2f699 2017/09/18 12:59:24 bdbaddog"  import SCons.compat @@ -48,7 +48,7 @@ class SConfTestCase(unittest.TestCase):      def setUp(self):          # we always want to start with a clean directory          self.save_cwd = os.getcwd() -        self.test = TestCmd.TestCmd(workdir = '')  +        self.test = TestCmd.TestCmd(workdir = '')          os.chdir(self.test.workpath(''))      def tearDown(self): @@ -62,7 +62,7 @@ class SConfTestCase(unittest.TestCase):          # We try to reset scons' state (including all global variables)          import SCons.SConsign          SCons.SConsign.write() # simulate normal scons-finish -        for n in sys.modules.keys(): +        for n in list(sys.modules.keys()):              if n.split('.')[0] == 'SCons' and n[:12] != 'SCons.compat':                  m = sys.modules[n]                  if isinstance(m, ModuleType): @@ -102,14 +102,17 @@ class SConfTestCase(unittest.TestCase):               import SCons.Platform.win32 -             file = SCons.Platform.win32._builtin_file -             open = SCons.Platform.win32._builtin_open +             try: +                file = SCons.Platform.win32._builtin_file +                open = SCons.Platform.win32._builtin_open +             except AttributeError: +                 pass      def _baseTryXXX(self, TryFunc):          # TryCompile and TryLink are much the same, so we can test them          # in one method, we pass the function as a string ('TryCompile',          # 'TryLink'), so we are aware of reloading modules. -         +          def checks(self, sconf, TryFuncString):              TryFunc = self.SConf.SConfBase.__dict__[TryFuncString]              res1 = TryFunc( sconf, "int main() { return 0; }\n", ".c" ) @@ -128,7 +131,7 @@ class SConfTestCase(unittest.TestCase):              assert res[0] and not res[1], res          finally:              sconf.Finish() -             +          # 2.1 test the error caching mechanism (no dependencies have changed)          self._resetSConfState()          sconf = self.SConf.SConf(self.scons_env, @@ -139,9 +142,9 @@ class SConfTestCase(unittest.TestCase):              assert res[0] and not res[1], res          finally:              sconf.Finish() -        # we should have exactly one one error cached  -        log = self.test.read( self.test.workpath('config.log') ) -        expr = re.compile( ".*failed in a previous run and all", re.DOTALL )  +        # we should have exactly one one error cached +        log = str(self.test.read( self.test.workpath('config.log') )) +        expr = re.compile( ".*failed in a previous run and all", re.DOTALL )          firstOcc = expr.match( log )          assert firstOcc is not None, log          secondOcc = expr.match( log, firstOcc.end(0) ) @@ -171,6 +174,7 @@ class SConfTestCase(unittest.TestCase):                                   conf_dir=self.test.workpath('config.tests'),                                   log_file=self.test.workpath('config.log'))          import SCons.Builder +        import SCons.Node          class MyBuilder(SCons.Builder.BuilderBase):              def __init__(self):                  self.prefix = '' @@ -179,7 +183,7 @@ class SConfTestCase(unittest.TestCase):                  class MyNode(object):                      def __init__(self, name):                          self.name = name -                        self.state = None +                        self.state = SCons.Node.no_state                          self.waiting_parents = set()                          self.side_effects = []                          self.builder = None @@ -238,11 +242,11 @@ class SConfTestCase(unittest.TestCase):          """Test SConf.TryCompile          """          self._baseTryXXX( "TryCompile" ) #self.SConf.SConf.TryCompile ) -         +      def test_TryLink(self):          """Test SConf.TryLink          """ -        self._baseTryXXX( "TryLink" ) #self.SConf.SConf.TryLink )  +        self._baseTryXXX( "TryLink" ) #self.SConf.SConf.TryLink )      def test_TryRun(self):          """Test SConf.TryRun @@ -255,10 +259,10 @@ int main() {    return 0;  }  """ -            res1 = sconf.TryRun( prog, ".c" )  +            res1 = sconf.TryRun( prog, ".c" )              res2 = sconf.TryRun( "not a c program\n", ".c" )              return (res1, res2) -         +          self._resetSConfState()          sconf = self.SConf.SConf(self.scons_env,                                   conf_dir=self.test.workpath('config.tests'), @@ -282,8 +286,9 @@ int main() {              assert not res[1][0] and res[1][1] == "", res          finally:              sconf.Finish() -        # we should have exactly one error cached  -        log = self.test.read( self.test.workpath('config.log') ) +        # we should have exactly one error cached +        # creating string here because it's bytes by default on py3 +        log = str(self.test.read( self.test.workpath('config.log') ))          expr = re.compile( ".*failed in a previous run and all", re.DOTALL )          firstOcc = expr.match( log )          assert firstOcc is not None, log @@ -305,7 +310,7 @@ int main() {                                    log_file=self.test.workpath('config.log'))          try:              (ret, output) = sconf.TryAction(action=actionOK) -            assert ret and output == "RUN OK" + os.linesep, (ret, output) +            assert ret and output.encode('utf-8') == bytearray("RUN OK"+os.linesep,'utf-8'), (ret, output)              (ret, output) = sconf.TryAction(action=actionFAIL)              assert not ret and output == "", (ret, output)          finally: @@ -352,7 +357,7 @@ int main() {              try:                  self._test_check_compilers('CC', sconf.CheckCC, 'CheckCC')              except AssertionError: -                sys.stderr.write(self.test.read('config.log')) +                sys.stderr.write(self.test.read('config.log', mode='r'))                  raise          finally:              sconf.Finish() @@ -368,7 +373,7 @@ int main() {              try:                  self._test_check_compilers('SHCC', sconf.CheckSHCC, 'CheckSHCC')              except AssertionError: -                sys.stderr.write(self.test.read('config.log')) +                sys.stderr.write(self.test.read('config.log', mode='r'))                  raise          finally:              sconf.Finish() @@ -384,7 +389,7 @@ int main() {              try:                  self._test_check_compilers('CXX', sconf.CheckCXX, 'CheckCXX')              except AssertionError: -                sys.stderr.write(self.test.read('config.log')) +                sys.stderr.write(self.test.read('config.log', mode='r'))                  raise          finally:              sconf.Finish() @@ -400,7 +405,7 @@ int main() {              try:                  self._test_check_compilers('SHCXX', sconf.CheckSHCXX, 'CheckSHCXX')              except AssertionError: -                sys.stderr.write(self.test.read('config.log')) +                sys.stderr.write(self.test.read('config.log', mode='r'))                  raise          finally:              sconf.Finish() @@ -625,8 +630,8 @@ int main() {              else:                  r = sconf.CheckProg('cmd.exe')                  self.assertIn('cmd.exe',r) -                 -                 + +              r = sconf.CheckProg('hopefully-not-a-program')              assert r is None @@ -715,7 +720,7 @@ int main() {              # In ANSI C, malloc should be available in stdlib              r = sconf.CheckDeclaration('malloc', includes = "#include <stdlib.h>")              assert r, "malloc not declared ??" -            # For C++, __cplusplus should be declared  +            # For C++, __cplusplus should be declared              r = sconf.CheckDeclaration('__cplusplus', language = 'C++')              assert r, "__cplusplus not declared in C++ ??"              r = sconf.CheckDeclaration('__cplusplus', language = 'C') @@ -759,7 +764,7 @@ int main() {              test.Result( ret )              assert ret and output == "Hello", (ret, output)              return ret -         +          self._resetSConfState()          sconf = self.SConf.SConf(self.scons_env, @@ -771,7 +776,7 @@ int main() {              assert ret, ret          finally:              sconf.Finish() -             +  if __name__ == "__main__":      suite = unittest.makeSuite(SConfTestCase, 'test_')  | 
