1f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org#!/usr/bin/env python 2f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org 39be1d37a9a6561f135412db66806def9f82a29c1steveblock@chromium.org# Copyright (c) 2012 Google Inc. All rights reserved. 4df8224662e615bd36cf8bebae8e58c017201f998sgk@chromium.org# Use of this source code is governed by a BSD-style license that can be 5df8224662e615bd36cf8bebae8e58c017201f998sgk@chromium.org# found in the LICENSE file. 6df8224662e615bd36cf8bebae8e58c017201f998sgk@chromium.org 7f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org""" 8f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.orgVerifies --generator-output= behavior when using actions. 9f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org""" 10f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org 11f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.orgimport TestGyp 12f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org 132724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org# Android doesn't support --generator-output. 142724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgtest = TestGyp.TestGyp(formats=['!android']) 15f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org 160a7b25b553ea0b2519ea5d24289e7c1542ddaeb0mmoss@chromium.org# All the generated files should go under 'gypfiles'. The source directory 170a7b25b553ea0b2519ea5d24289e7c1542ddaeb0mmoss@chromium.org# ('actions') should be untouched. 18f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.orgtest.writable(test.workpath('actions'), False) 19f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.orgtest.run_gyp('actions.gyp', 20f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org '--generator-output=' + test.workpath('gypfiles'), 216bd80e4bba1e6076b262fbfa67517ec683a144c8sdefresne@chromium.org '-G', 'xcode_ninja_target_pattern=^pull_in_all_actions$', 22f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org chdir='actions') 23f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org 24f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.orgtest.writable(test.workpath('actions'), True) 25f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org 26fa5b46b96b21ff75d8b6b3dacc4693b69c43654csgk@chromium.orgtest.relocate('actions', 'relocate/actions') 27fa5b46b96b21ff75d8b6b3dacc4693b69c43654csgk@chromium.orgtest.relocate('gypfiles', 'relocate/gypfiles') 28f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org 29f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.orgtest.writable(test.workpath('relocate/actions'), False) 30f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org 310a7b25b553ea0b2519ea5d24289e7c1542ddaeb0mmoss@chromium.org# Some of the action outputs use "pure" relative paths (i.e. without prefixes 320a7b25b553ea0b2519ea5d24289e7c1542ddaeb0mmoss@chromium.org# like <(INTERMEDIATE_DIR) or <(PROGRAM_DIR)). Even though we are building under 330a7b25b553ea0b2519ea5d24289e7c1542ddaeb0mmoss@chromium.org# 'gypfiles', such outputs will still be created relative to the original .gyp 340a7b25b553ea0b2519ea5d24289e7c1542ddaeb0mmoss@chromium.org# sources. Projects probably wouldn't normally do this, since it kind of defeats 350a7b25b553ea0b2519ea5d24289e7c1542ddaeb0mmoss@chromium.org# the purpose of '--generator-output', but it is supported behaviour. 36f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.orgtest.writable(test.workpath('relocate/actions/build'), True) 37f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.orgtest.writable(test.workpath('relocate/actions/subdir1/build'), True) 38f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.orgtest.writable(test.workpath('relocate/actions/subdir1/actions-out'), True) 39f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.orgtest.writable(test.workpath('relocate/actions/subdir2/build'), True) 40f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.orgtest.writable(test.workpath('relocate/actions/subdir2/actions-out'), True) 41f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org 42040d50e7277c41a0b9641dc42c76be8605055637sgk@chromium.orgtest.build('actions.gyp', test.ALL, chdir='relocate/gypfiles') 43f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org 44f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.orgexpect = """\ 45f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.orgHello from program.c 46f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.orgHello from make-prog1.py 47f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.orgHello from make-prog2.py 48f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org""" 49f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org 5065f1cdd22ad8f73f507077d3baab38c6314f13c8mmoss@chromium.orgif test.format == 'xcode': 51f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org chdir = 'relocate/actions/subdir1' 52f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.orgelse: 53f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org chdir = 'relocate/gypfiles' 54f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.orgtest.run_built_executable('program', chdir=chdir, stdout=expect) 55f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org 56f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.orgtest.must_match('relocate/actions/subdir2/actions-out/file.out', 57f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org "Hello from make-file.py\n") 58f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.org 59f187950af9c156ac83af453d63b57edfeed6b200sgk@chromium.orgtest.pass_test() 60