1779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com#!/usr/bin/env python
2779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com
33b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com# Copyright (c) 2012 Google Inc. All rights reserved.
4779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com# Use of this source code is governed by a BSD-style license that can be
5779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com# found in the LICENSE file.
6779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com
7779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com"""
8779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.comVerifies two actions can be attached to the same input files.
9779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com"""
10779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com
113b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.comimport sys
123b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com
13779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.comimport TestGyp
14779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com
15779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.comtest = TestGyp.TestGyp()
16779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com
17779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.comtest.run_gyp('actions.gyp', chdir='src')
18779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com
19779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.comtest.relocate('src', 'relocate/src')
20779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com
213b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com# Test of fine-grained dependencies for generators that can build individual
223b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com# files on demand.
233b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com# In particular:
243b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com#   - TargetA depends on TargetB.
253b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com#   - TargetA and TargetB are 'none' type with actions attached.
263b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com#   - TargetA has multiple actions.
273b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com#   - An output from one of the actions in TargetA (not the first listed),
283b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com#     is requested as the build target.
293b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com# Ensure that TargetB gets built.
303b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com#
313b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com# This sub-test can only be done with generators/build tools that can
323b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com# be asked to build individual files rather than whole targets (make, ninja).
333b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.comif test.format in ['make', 'ninja']:
343b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com  # Select location of target based on generator.
353b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com  if test.format == 'make':
363b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com    target = 'multi2.txt'
373b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com  elif test.format == 'ninja':
383b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com    if sys.platform in ['win32', 'cygwin']:
393b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com      target = '..\\..\\multi2.txt'
403b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com    else:
413b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com      target = '../../multi2.txt'
423b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com  else:
433b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com    assert False
443b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com  test.build('actions.gyp', chdir='relocate/src', target=target)
453b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com  test.must_contain('relocate/src/multi2.txt', 'hello there')
463b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com  test.must_contain('relocate/src/multi_dep.txt', 'hello there')
473b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com
483b4fb7c911dee3f66a9df392a2becdab9ffacba7bradnelson@google.com
49779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com# Test that two actions can be attached to the same inputs.
50779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.comtest.build('actions.gyp', test.ALL, chdir='relocate/src')
51779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.comtest.must_contain('relocate/src/output1.txt', 'hello there')
52779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.comtest.must_contain('relocate/src/output2.txt', 'hello there')
53779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.comtest.must_contain('relocate/src/output3.txt', 'hello there')
54779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.comtest.must_contain('relocate/src/output4.txt', 'hello there')
55779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com
56779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com# Test that process_outputs_as_sources works in conjuction with merged
57779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com# actions.
58779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.comtest.run_built_executable(
59779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com    'multiple_action_source_filter',
60779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com    chdir='relocate/src',
61779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com    stdout=(
62779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com        '{\n'
63779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com        'bar\n'
64779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com        'car\n'
65779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com        'dar\n'
66779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com        'ear\n'
67779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com        '}\n'
68779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com    ),
69779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com)
70779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com
71779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.com
72779d9d4c7ae8ccc2a2805094b6eb130c4d03cfd7bradnelson@google.comtest.pass_test()
73