Home | History | Annotate | Download | only in library
      1 #!/usr/bin/env python
      2 
      3 # Copyright (c) 2009 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 simple build of a "Hello, world!" program with static libraries,
      9 including verifying that libraries are rebuilt correctly when functions
     10 move between libraries.
     11 """
     12 
     13 import TestGyp
     14 
     15 test = TestGyp.TestGyp()
     16 
     17 test.run_gyp('library.gyp',
     18              '-Dlibrary=static_library',
     19              '-Dmoveable_function=lib1',
     20              chdir='src')
     21 
     22 test.relocate('src', 'relocate/src')
     23 
     24 test.build('library.gyp', test.ALL, chdir='relocate/src')
     25 
     26 expect = """\
     27 Hello from program.c
     28 Hello from lib1.c
     29 Hello from lib2.c
     30 Hello from lib1_moveable.c
     31 """
     32 test.run_built_executable('program', chdir='relocate/src', stdout=expect)
     33 
     34 
     35 test.run_gyp('library.gyp',
     36              '-Dlibrary=static_library',
     37              '-Dmoveable_function=lib2',
     38              chdir='relocate/src')
     39 
     40 # Update program.c to force a rebuild.
     41 test.sleep()
     42 contents = test.read('relocate/src/program.c')
     43 contents = contents.replace('Hello', 'Hello again')
     44 test.write('relocate/src/program.c', contents)
     45 
     46 test.build('library.gyp', test.ALL, chdir='relocate/src')
     47 
     48 expect = """\
     49 Hello again from program.c
     50 Hello from lib1.c
     51 Hello from lib2.c
     52 Hello from lib2_moveable.c
     53 """
     54 test.run_built_executable('program', chdir='relocate/src', stdout=expect)
     55 
     56 
     57 test.run_gyp('library.gyp',
     58              '-Dlibrary=static_library',
     59              '-Dmoveable_function=lib1',
     60              chdir='relocate/src')
     61 
     62 # Update program.c and lib2.c to force a rebuild.
     63 test.sleep()
     64 contents = test.read('relocate/src/program.c')
     65 contents = contents.replace('again', 'again again')
     66 test.write('relocate/src/program.c', contents)
     67 
     68 # TODO(sgk):  we have to force a rebuild of lib2 so that it weeds out
     69 # the "moved" module.  This should be done in gyp by adding a dependency
     70 # on the generated .vcproj file itself.
     71 test.touch('relocate/src/lib2.c')
     72 
     73 test.build('library.gyp', test.ALL, chdir='relocate/src')
     74 
     75 expect = """\
     76 Hello again again from program.c
     77 Hello from lib1.c
     78 Hello from lib2.c
     79 Hello from lib1_moveable.c
     80 """
     81 test.run_built_executable('program', chdir='relocate/src', stdout=expect)
     82 
     83 
     84 test.pass_test()
     85