Home | History | Annotate | Download | only in cxxflags
      1 #!/usr/bin/env python
      2 
      3 # Copyright (c) 2012 Google Inc. All rights reserved.
      4 # Use of this source code is governed by a BSD-style license that can be
      5 # found in the LICENSE file.
      6 
      7 """
      8 Verifies build of an executable with C++ define specified by a gyp define, and
      9 the use of the environment during regeneration when the gyp file changes.
     10 """
     11 
     12 import os
     13 import TestGyp
     14 
     15 env_stack = []
     16 
     17 
     18 def PushEnv():
     19   env_copy = os.environ.copy()
     20   env_stack.append(env_copy)
     21 
     22 def PopEnv():
     23   os.eniron=env_stack.pop()
     24 
     25 # Regenerating build files when a gyp file changes is currently only supported
     26 # by the make generator.
     27 test = TestGyp.TestGyp(formats=['make'])
     28 
     29 try:
     30   PushEnv()
     31   os.environ['CXXFLAGS'] = '-O0'
     32   test.run_gyp('cxxflags.gyp')
     33 finally:
     34   # We clear the environ after calling gyp.  When the auto-regeneration happens,
     35   # the same define should be reused anyway.  Reset to empty string first in
     36   # case the platform doesn't support unsetenv.
     37   PopEnv()
     38 
     39 test.build('cxxflags.gyp')
     40 
     41 expect = """\
     42 Using no optimization flag
     43 """
     44 test.run_built_executable('cxxflags', stdout=expect)
     45 
     46 test.sleep()
     47 
     48 try:
     49   PushEnv()
     50   os.environ['CXXFLAGS'] = '-O2'
     51   test.run_gyp('cxxflags.gyp')
     52 finally:
     53   # We clear the environ after calling gyp.  When the auto-regeneration happens,
     54   # the same define should be reused anyway.  Reset to empty string first in
     55   # case the platform doesn't support unsetenv.
     56   PopEnv()
     57 
     58 test.build('cxxflags.gyp')
     59 
     60 expect = """\
     61 Using an optimization flag
     62 """
     63 test.run_built_executable('cxxflags', stdout=expect)
     64 
     65 test.pass_test()
     66