12724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org#!/usr/bin/env python
22724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org
32724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org# Copyright (c) 2012 Google Inc. All rights reserved.
42724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org# Use of this source code is governed by a BSD-style license that can be
52724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org# found in the LICENSE file.
62724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org
72724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org"""
82724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgVerifies building a target when the --generator-output= option is used to put
92724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgthe build configuration files in a separate directory tree referenced by a
102724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgsymlink.
112724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org"""
122724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org
132724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgimport TestGyp
142724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgimport os
152724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org
162724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org# Android doesn't support --generator-output.
172724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgtest = TestGyp.TestGyp(formats=['!android'])
182724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgif not hasattr(os, 'symlink'):
192724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org  test.skip_test('Missing os.symlink -- skipping test.\n')
202724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org
212724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgtest.writable(test.workpath('src'), False)
222724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org
232724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgtest.writable(test.workpath('src/subdir2/deeper/build'), True)
242724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org
252724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgtest.subdir(test.workpath('build'))
262724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgtest.subdir(test.workpath('build/deeper'))
272724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgtest.symlink('build/deeper', test.workpath('symlink'))
282724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org
292724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgtest.writable(test.workpath('build/deeper'), True)
302724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgtest.run_gyp('deeper.gyp',
312724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org             '-Dset_symroot=2',
322724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org             '--generator-output=' + test.workpath('symlink'),
332724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org             chdir='src/subdir2/deeper')
342724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org
352724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgchdir = 'symlink'
362724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgtest.build('deeper.gyp', test.ALL, chdir=chdir)
372724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org
382724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgif test.format == 'xcode':
392724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org  chdir = 'src/subdir2/deeper'
402724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgtest.run_built_executable('deeper',
412724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org                          chdir=chdir,
422724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.org                          stdout="Hello from deeper.c\n")
432724da9e5f57957af502ff40ed586fd6351a5f71thakis@chromium.orgtest.pass_test()
44