3
# Copyright (c) 2009 Google Inc. All rights reserved.
4
# Use of this source code is governed by a BSD-style license that can be
5
# found in the LICENSE file.
8
Verify the settings that cause a set of programs to be created in
9
a specific build directory, and that no intermediate built files
10
get created outside of that build directory hierarchy even when
11
referred to with deeply-nested ../../.. paths.
16
# TODO(mmoss): Make only supports (theoretically) a single, global build
17
# directory (through GYP_GENERATOR_FLAGS 'output_dir'), rather than
18
# gyp-file-specific settings (e.g. the stuff in builddir.gypi) that the other
19
# generators support, so this doesn't work yet for make.
20
# TODO(mmoss) Make also has the issue that the top-level Makefile is written to
21
# the "--depth" location, which is one level above 'src', but then this test
22
# moves 'src' somewhere else, leaving the Makefile behind, so make can't find
23
# its sources. I'm not sure if make is wrong for writing outside the current
24
# directory, or if the test is wrong for assuming everything generated is under
25
# the current directory.
26
test = TestGyp.TestGyp(formats=['!make'])
28
test.run_gyp('prog1.gyp', '--depth=..', chdir='src')
30
test.relocate('src', 'relocate/src')
32
test.subdir('relocate/builddir')
34
# Make sure that all the built ../../etc. files only get put under builddir,
35
# by making all of relocate read-only and then making only builddir writable.
36
test.writable('relocate', False)
37
test.writable('relocate/builddir', True)
39
# Suppress the test infrastructure's setting SYMROOT on the command line.
40
test.build('prog1.gyp', test.ALL, SYMROOT=None, chdir='relocate/src')
48
Hello from subdir2/prog2.c
53
Hello from subdir2/subdir3/prog3.c
58
Hello from subdir2/subdir3/subdir4/prog4.c
63
Hello from subdir2/subdir3/subdir4/subdir5/prog5.c
67
def run_builddir(prog, expect):
68
dir = 'relocate/builddir/Default/'
69
test.run(program=test.workpath(dir + prog), stdout=expect)
71
run_builddir('prog1', expect1)
72
run_builddir('prog2', expect2)
73
run_builddir('prog3', expect3)
74
run_builddir('prog4', expect4)
75
run_builddir('prog5', expect5)