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 shared 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=shared_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=shared_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=shared_library', 59 '-Dmoveable_function=lib1', 60 chdir='relocate/src') 61 62 # Update program.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