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