blob: 2a083de9b054a497bde61fb5d6cb45802f8147a0 [file] [log] [blame]
Ben Murdoch097c5b22016-05-18 11:27:45 +01001#!/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"""
8Verifies two actions can be attached to the same input files.
9"""
10
11import sys
12
13import TestGyp
14
15test = TestGyp.TestGyp()
16
17test.run_gyp('actions.gyp', chdir='src')
18
19test.relocate('src', 'relocate/src')
20
21# Test of fine-grained dependencies for generators that can build individual
22# files on demand.
23# In particular:
24# - TargetA depends on TargetB.
25# - TargetA and TargetB are 'none' type with actions attached.
26# - TargetA has multiple actions.
27# - An output from one of the actions in TargetA (not the first listed),
28# is requested as the build target.
29# Ensure that TargetB gets built.
30#
31# This sub-test can only be done with generators/build tools that can
32# be asked to build individual files rather than whole targets (make, ninja).
33if test.format in ['make', 'ninja']:
34 # Select location of target based on generator.
35 if test.format == 'make':
36 target = 'multi2.txt'
37 elif test.format == 'ninja':
38 if sys.platform in ['win32', 'cygwin']:
39 target = '..\\..\\multi2.txt'
40 else:
41 target = '../../multi2.txt'
42 else:
43 assert False
44 test.build('actions.gyp', chdir='relocate/src', target=target)
45 test.must_contain('relocate/src/multi2.txt', 'hello there')
46 test.must_contain('relocate/src/multi_dep.txt', 'hello there')
47
48
49# Test that two actions can be attached to the same inputs.
50test.build('actions.gyp', test.ALL, chdir='relocate/src')
51test.must_contain('relocate/src/output1.txt', 'hello there')
52test.must_contain('relocate/src/output2.txt', 'hello there')
53test.must_contain('relocate/src/output3.txt', 'hello there')
54test.must_contain('relocate/src/output4.txt', 'hello there')
55
56# Test that process_outputs_as_sources works in conjuction with merged
57# actions.
58test.run_built_executable(
59 'multiple_action_source_filter',
60 chdir='relocate/src',
61 stdout=(
62 '{\n'
63 'bar\n'
64 'car\n'
65 'dar\n'
66 'ear\n'
67 '}\n'
68 ),
69)
70
71
72test.pass_test()