| #!/usr/bin/env python |
| |
| # Copyright (c) 2012 Google Inc. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """ |
| Verifies two actions can be attached to the same input files. |
| """ |
| |
| import sys |
| |
| import TestGyp |
| |
| test = TestGyp.TestGyp() |
| |
| test.run_gyp('actions.gyp', chdir='src') |
| |
| test.relocate('src', 'relocate/src') |
| |
| # Test of fine-grained dependencies for generators that can build individual |
| # files on demand. |
| # In particular: |
| # - TargetA depends on TargetB. |
| # - TargetA and TargetB are 'none' type with actions attached. |
| # - TargetA has multiple actions. |
| # - An output from one of the actions in TargetA (not the first listed), |
| # is requested as the build target. |
| # Ensure that TargetB gets built. |
| # |
| # This sub-test can only be done with generators/build tools that can |
| # be asked to build individual files rather than whole targets (make, ninja). |
| if test.format in ['make', 'ninja']: |
| # Select location of target based on generator. |
| if test.format == 'make': |
| target = 'multi2.txt' |
| elif test.format == 'ninja': |
| if sys.platform in ['win32', 'cygwin']: |
| target = '..\\..\\multi2.txt' |
| else: |
| target = '../../multi2.txt' |
| else: |
| assert False |
| test.build('actions.gyp', chdir='relocate/src', target=target) |
| test.must_contain('relocate/src/multi2.txt', 'hello there') |
| test.must_contain('relocate/src/multi_dep.txt', 'hello there') |
| |
| |
| # Test that two actions can be attached to the same inputs. |
| test.build('actions.gyp', test.ALL, chdir='relocate/src') |
| test.must_contain('relocate/src/output1.txt', 'hello there') |
| test.must_contain('relocate/src/output2.txt', 'hello there') |
| test.must_contain('relocate/src/output3.txt', 'hello there') |
| test.must_contain('relocate/src/output4.txt', 'hello there') |
| |
| # Test that process_outputs_as_sources works in conjuction with merged |
| # actions. |
| test.run_built_executable( |
| 'multiple_action_source_filter', |
| chdir='relocate/src', |
| stdout=( |
| '{\n' |
| 'bar\n' |
| 'car\n' |
| 'dar\n' |
| 'ear\n' |
| '}\n' |
| ), |
| ) |
| |
| |
| test.pass_test() |