summaryrefslogtreecommitdiffstats
path: root/third_party/python/gyp/test/actions-multiple/gyptest-all.py
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/python/gyp/test/actions-multiple/gyptest-all.py')
-rwxr-xr-xthird_party/python/gyp/test/actions-multiple/gyptest-all.py72
1 files changed, 72 insertions, 0 deletions
diff --git a/third_party/python/gyp/test/actions-multiple/gyptest-all.py b/third_party/python/gyp/test/actions-multiple/gyptest-all.py
new file mode 100755
index 0000000000..2a083de9b0
--- /dev/null
+++ b/third_party/python/gyp/test/actions-multiple/gyptest-all.py
@@ -0,0 +1,72 @@
+#!/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()