10c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org#!/usr/bin/env python
20c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
3ea13fb0eee7f81ce6037b95339566fa0fb9d7bd9thomasvl@chromium.org# Copyright (c) 2009 Google Inc. All rights reserved.
4ea13fb0eee7f81ce6037b95339566fa0fb9d7bd9thomasvl@chromium.org# Use of this source code is governed by a BSD-style license that can be
5ea13fb0eee7f81ce6037b95339566fa0fb9d7bd9thomasvl@chromium.org# found in the LICENSE file.
6ea13fb0eee7f81ce6037b95339566fa0fb9d7bd9thomasvl@chromium.org
70c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org"""
80c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgVerifies that a rule that generates multiple outputs rebuilds
90c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgcorrectly when the inputs change.
100c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org"""
110c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
120c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgimport TestGyp
130c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
14c55f9ca139f2900a3e612c892b4276ed4652328bjeanluc@google.comtest = TestGyp.TestGyp(workdir='workarea_all')
150c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
160c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgtest.run_gyp('same_target.gyp', chdir='src')
170c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
180c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgtest.relocate('src', 'relocate/src')
190c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
200c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
210c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgtest.build('same_target.gyp', test.ALL, chdir='relocate/src')
220c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
230c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgexpect = """\
240c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgHello from main.c
250c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgHello from prog1.in!
260c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgHello from prog2.in!
270c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org"""
280c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
290c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgtest.run_built_executable('program', chdir='relocate/src', stdout=expect)
300c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
310c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgtest.up_to_date('same_target.gyp', 'program', chdir='relocate/src')
320c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
330c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
340c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgtest.sleep()
350c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgcontents = test.read(['relocate', 'src', 'prog1.in'])
360c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgcontents = contents.replace('!', ' AGAIN!')
370c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgtest.write(['relocate', 'src', 'prog1.in'], contents)
380c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
390c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgtest.build('same_target.gyp', test.ALL, chdir='relocate/src')
400c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
410c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgexpect = """\
420c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgHello from main.c
430c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgHello from prog1.in AGAIN!
440c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgHello from prog2.in!
450c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org"""
460c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
470c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgtest.run_built_executable('program', chdir='relocate/src', stdout=expect)
480c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
490c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgtest.up_to_date('same_target.gyp', 'program', chdir='relocate/src')
500c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
510c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
520c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgtest.sleep()
530c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgcontents = test.read(['relocate', 'src', 'prog2.in'])
540c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgcontents = contents.replace('!', ' AGAIN!')
550c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgtest.write(['relocate', 'src', 'prog2.in'], contents)
560c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
570c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgtest.build('same_target.gyp', test.ALL, chdir='relocate/src')
580c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
590c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgexpect = """\
600c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgHello from main.c
610c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgHello from prog1.in AGAIN!
620c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgHello from prog2.in AGAIN!
630c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org"""
640c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
650c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgtest.run_built_executable('program', chdir='relocate/src', stdout=expect)
660c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
670c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgtest.up_to_date('same_target.gyp', 'program', chdir='relocate/src')
680c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
690c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.org
700c391ffe6d7c2264f8e237aaf2cee6ad7178e8e7sgk@chromium.orgtest.pass_test()
71