Home | History | Annotate | Download | only in actions
      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 simple actions when using the default build target.
      9 """
     10 
     11 import TestGyp
     12 
     13 test = TestGyp.TestGyp(workdir='workarea_default')
     14 
     15 test.run_gyp('actions.gyp', chdir='src')
     16 
     17 test.relocate('src', 'relocate/src')
     18 
     19 # Some gyp files use an action that mentions an output but never
     20 # writes it as a means to making the action run on every build.  That
     21 # doesn't mesh well with ninja's semantics.  TODO(evan): figure out
     22 # how to work always-run actions in to ninja.
     23 if test.format in ['ninja', 'xcode-ninja']:
     24   test.build('actions.gyp', test.ALL, chdir='relocate/src')
     25 else:
     26   # Test that an "always run" action increases a counter on multiple
     27   # invocations, and that a dependent action updates in step.
     28   test.build('actions.gyp', chdir='relocate/src')
     29   test.must_match('relocate/src/subdir1/actions-out/action-counter.txt', '1')
     30   test.must_match('relocate/src/subdir1/actions-out/action-counter_2.txt', '1')
     31   test.build('actions.gyp', chdir='relocate/src')
     32   test.must_match('relocate/src/subdir1/actions-out/action-counter.txt', '2')
     33   test.must_match('relocate/src/subdir1/actions-out/action-counter_2.txt', '2')
     34 
     35   # The "always run" action only counts to 2, but the dependent target
     36   # will count forever if it's allowed to run. This verifies that the
     37   # dependent target only runs when the "always run" action generates
     38   # new output, not just because the "always run" ran.
     39   test.build('actions.gyp', test.ALL, chdir='relocate/src')
     40   test.must_match('relocate/src/subdir1/actions-out/action-counter.txt', '2')
     41   test.must_match('relocate/src/subdir1/actions-out/action-counter_2.txt', '2')
     42 
     43 expect = """\
     44 Hello from program.c
     45 Hello from make-prog1.py
     46 Hello from make-prog2.py
     47 """
     48 
     49 if test.format == 'xcode':
     50   chdir = 'relocate/src/subdir1'
     51 else:
     52   chdir = 'relocate/src'
     53 test.run_built_executable('program', chdir=chdir, stdout=expect)
     54 
     55 
     56 test.must_match('relocate/src/subdir2/file.out', "Hello from make-file.py\n")
     57 
     58 
     59 expect = "Hello from generate_main.py\n"
     60 
     61 if test.format == 'xcode':
     62   chdir = 'relocate/src/subdir3'
     63 else:
     64   chdir = 'relocate/src'
     65 test.run_built_executable('null_input', chdir=chdir, stdout=expect)
     66 
     67 
     68 test.pass_test()
     69