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