summaryrefslogtreecommitdiffstats
path: root/third_party/python/gyp/test/builddir
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/python/gyp/test/builddir')
-rwxr-xr-xthird_party/python/gyp/test/builddir/gyptest-all.py85
-rwxr-xr-xthird_party/python/gyp/test/builddir/gyptest-default.py85
-rw-r--r--third_party/python/gyp/test/builddir/src/builddir.gypi18
-rw-r--r--third_party/python/gyp/test/builddir/src/func1.c6
-rw-r--r--third_party/python/gyp/test/builddir/src/func2.c6
-rw-r--r--third_party/python/gyp/test/builddir/src/func3.c6
-rw-r--r--third_party/python/gyp/test/builddir/src/func4.c6
-rw-r--r--third_party/python/gyp/test/builddir/src/func5.c6
-rw-r--r--third_party/python/gyp/test/builddir/src/prog1.c10
-rw-r--r--third_party/python/gyp/test/builddir/src/prog1.gyp30
-rw-r--r--third_party/python/gyp/test/builddir/src/subdir2/prog2.c10
-rw-r--r--third_party/python/gyp/test/builddir/src/subdir2/prog2.gyp19
-rw-r--r--third_party/python/gyp/test/builddir/src/subdir2/subdir3/prog3.c10
-rw-r--r--third_party/python/gyp/test/builddir/src/subdir2/subdir3/prog3.gyp19
-rw-r--r--third_party/python/gyp/test/builddir/src/subdir2/subdir3/subdir4/prog4.c10
-rw-r--r--third_party/python/gyp/test/builddir/src/subdir2/subdir3/subdir4/prog4.gyp19
-rw-r--r--third_party/python/gyp/test/builddir/src/subdir2/subdir3/subdir4/subdir5/prog5.c10
-rw-r--r--third_party/python/gyp/test/builddir/src/subdir2/subdir3/subdir4/subdir5/prog5.gyp19
18 files changed, 374 insertions, 0 deletions
diff --git a/third_party/python/gyp/test/builddir/gyptest-all.py b/third_party/python/gyp/test/builddir/gyptest-all.py
new file mode 100755
index 0000000000..a26543f49e
--- /dev/null
+++ b/third_party/python/gyp/test/builddir/gyptest-all.py
@@ -0,0 +1,85 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2012 Google Inc. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""
+Verify the settings that cause a set of programs to be created in
+a specific build directory, and that no intermediate built files
+get created outside of that build directory hierarchy even when
+referred to with deeply-nested ../../.. paths.
+"""
+
+import TestGyp
+
+# TODO(mmoss): Make only supports (theoretically) a single, global build
+# directory (through GYP_GENERATOR_FLAGS 'output_dir'), rather than
+# gyp-file-specific settings (e.g. the stuff in builddir.gypi) that the other
+# generators support, so this doesn't work yet for make.
+# TODO(mmoss) Make also has the issue that the top-level Makefile is written to
+# the "--depth" location, which is one level above 'src', but then this test
+# moves 'src' somewhere else, leaving the Makefile behind, so make can't find
+# its sources. I'm not sure if make is wrong for writing outside the current
+# directory, or if the test is wrong for assuming everything generated is under
+# the current directory.
+# Ninja and CMake do not support setting the build directory.
+test = TestGyp.TestGyp(formats=['!make', '!ninja', '!cmake'])
+
+test.run_gyp('prog1.gyp', '--depth=..', chdir='src')
+if test.format == 'msvs':
+ if test.uses_msbuild:
+ test.must_contain('src/prog1.vcxproj',
+ '<OutDir>..\\builddir\\Default\\</OutDir>')
+ else:
+ test.must_contain('src/prog1.vcproj',
+ 'OutputDirectory="..\\builddir\\Default\\"')
+
+test.relocate('src', 'relocate/src')
+
+test.subdir('relocate/builddir')
+
+# Make sure that all the built ../../etc. files only get put under builddir,
+# by making all of relocate read-only and then making only builddir writable.
+test.writable('relocate', False)
+test.writable('relocate/builddir', True)
+
+# Suppress the test infrastructure's setting SYMROOT on the command line.
+test.build('prog1.gyp', test.ALL, SYMROOT=None, chdir='relocate/src')
+
+expect1 = """\
+Hello from prog1.c
+Hello from func1.c
+"""
+
+expect2 = """\
+Hello from subdir2/prog2.c
+Hello from func2.c
+"""
+
+expect3 = """\
+Hello from subdir2/subdir3/prog3.c
+Hello from func3.c
+"""
+
+expect4 = """\
+Hello from subdir2/subdir3/subdir4/prog4.c
+Hello from func4.c
+"""
+
+expect5 = """\
+Hello from subdir2/subdir3/subdir4/subdir5/prog5.c
+Hello from func5.c
+"""
+
+def run_builddir(prog, expect):
+ dir = 'relocate/builddir/Default/'
+ test.run(program=test.workpath(dir + prog), stdout=expect)
+
+run_builddir('prog1', expect1)
+run_builddir('prog2', expect2)
+run_builddir('prog3', expect3)
+run_builddir('prog4', expect4)
+run_builddir('prog5', expect5)
+
+test.pass_test()
diff --git a/third_party/python/gyp/test/builddir/gyptest-default.py b/third_party/python/gyp/test/builddir/gyptest-default.py
new file mode 100755
index 0000000000..4904cdab42
--- /dev/null
+++ b/third_party/python/gyp/test/builddir/gyptest-default.py
@@ -0,0 +1,85 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2012 Google Inc. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""
+Verify the settings that cause a set of programs to be created in
+a specific build directory, and that no intermediate built files
+get created outside of that build directory hierarchy even when
+referred to with deeply-nested ../../.. paths.
+"""
+
+import TestGyp
+
+# TODO(mmoss): Make only supports (theoretically) a single, global build
+# directory (through GYP_GENERATOR_FLAGS 'output_dir'), rather than
+# gyp-file-specific settings (e.g. the stuff in builddir.gypi) that the other
+# generators support, so this doesn't work yet for make.
+# TODO(mmoss) Make also has the issue that the top-level Makefile is written to
+# the "--depth" location, which is one level above 'src', but then this test
+# moves 'src' somewhere else, leaving the Makefile behind, so make can't find
+# its sources. I'm not sure if make is wrong for writing outside the current
+# directory, or if the test is wrong for assuming everything generated is under
+# the current directory.
+# Ninja and CMake do not support setting the build directory.
+test = TestGyp.TestGyp(formats=['!make', '!ninja', '!cmake'])
+
+test.run_gyp('prog1.gyp', '--depth=..', chdir='src')
+if test.format == 'msvs':
+ if test.uses_msbuild:
+ test.must_contain('src/prog1.vcxproj',
+ '<OutDir>..\\builddir\\Default\\</OutDir>')
+ else:
+ test.must_contain('src/prog1.vcproj',
+ 'OutputDirectory="..\\builddir\\Default\\"')
+
+test.relocate('src', 'relocate/src')
+
+test.subdir('relocate/builddir')
+
+# Make sure that all the built ../../etc. files only get put under builddir,
+# by making all of relocate read-only and then making only builddir writable.
+test.writable('relocate', False)
+test.writable('relocate/builddir', True)
+
+# Suppress the test infrastructure's setting SYMROOT on the command line.
+test.build('prog1.gyp', SYMROOT=None, chdir='relocate/src')
+
+expect1 = """\
+Hello from prog1.c
+Hello from func1.c
+"""
+
+expect2 = """\
+Hello from subdir2/prog2.c
+Hello from func2.c
+"""
+
+expect3 = """\
+Hello from subdir2/subdir3/prog3.c
+Hello from func3.c
+"""
+
+expect4 = """\
+Hello from subdir2/subdir3/subdir4/prog4.c
+Hello from func4.c
+"""
+
+expect5 = """\
+Hello from subdir2/subdir3/subdir4/subdir5/prog5.c
+Hello from func5.c
+"""
+
+def run_builddir(prog, expect):
+ dir = 'relocate/builddir/Default/'
+ test.run(program=test.workpath(dir + prog), stdout=expect)
+
+run_builddir('prog1', expect1)
+run_builddir('prog2', expect2)
+run_builddir('prog3', expect3)
+run_builddir('prog4', expect4)
+run_builddir('prog5', expect5)
+
+test.pass_test()
diff --git a/third_party/python/gyp/test/builddir/src/builddir.gypi b/third_party/python/gyp/test/builddir/src/builddir.gypi
new file mode 100644
index 0000000000..ce175db8f8
--- /dev/null
+++ b/third_party/python/gyp/test/builddir/src/builddir.gypi
@@ -0,0 +1,18 @@
+# Copyright (c) 2009 Google Inc. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+{
+ 'target_defaults': {
+ 'configurations': {
+ 'Default': {
+ 'msvs_configuration_attributes': {
+ 'OutputDirectory': '<(DEPTH)\\builddir/Default',
+ },
+ },
+ },
+ },
+ 'xcode_settings': {
+ 'SYMROOT': '<(DEPTH)/builddir',
+ },
+}
diff --git a/third_party/python/gyp/test/builddir/src/func1.c b/third_party/python/gyp/test/builddir/src/func1.c
new file mode 100644
index 0000000000..b8e6a06951
--- /dev/null
+++ b/third_party/python/gyp/test/builddir/src/func1.c
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+void func1(void)
+{
+ printf("Hello from func1.c\n");
+}
diff --git a/third_party/python/gyp/test/builddir/src/func2.c b/third_party/python/gyp/test/builddir/src/func2.c
new file mode 100644
index 0000000000..14aabac475
--- /dev/null
+++ b/third_party/python/gyp/test/builddir/src/func2.c
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+void func2(void)
+{
+ printf("Hello from func2.c\n");
+}
diff --git a/third_party/python/gyp/test/builddir/src/func3.c b/third_party/python/gyp/test/builddir/src/func3.c
new file mode 100644
index 0000000000..3b4edeae6d
--- /dev/null
+++ b/third_party/python/gyp/test/builddir/src/func3.c
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+void func3(void)
+{
+ printf("Hello from func3.c\n");
+}
diff --git a/third_party/python/gyp/test/builddir/src/func4.c b/third_party/python/gyp/test/builddir/src/func4.c
new file mode 100644
index 0000000000..732891b79a
--- /dev/null
+++ b/third_party/python/gyp/test/builddir/src/func4.c
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+void func4(void)
+{
+ printf("Hello from func4.c\n");
+}
diff --git a/third_party/python/gyp/test/builddir/src/func5.c b/third_party/python/gyp/test/builddir/src/func5.c
new file mode 100644
index 0000000000..18fdfabbbe
--- /dev/null
+++ b/third_party/python/gyp/test/builddir/src/func5.c
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+void func5(void)
+{
+ printf("Hello from func5.c\n");
+}
diff --git a/third_party/python/gyp/test/builddir/src/prog1.c b/third_party/python/gyp/test/builddir/src/prog1.c
new file mode 100644
index 0000000000..a32aaf04f9
--- /dev/null
+++ b/third_party/python/gyp/test/builddir/src/prog1.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+extern void func1(void);
+
+int main(void)
+{
+ printf("Hello from prog1.c\n");
+ func1();
+ return 0;
+}
diff --git a/third_party/python/gyp/test/builddir/src/prog1.gyp b/third_party/python/gyp/test/builddir/src/prog1.gyp
new file mode 100644
index 0000000000..5b96f035ec
--- /dev/null
+++ b/third_party/python/gyp/test/builddir/src/prog1.gyp
@@ -0,0 +1,30 @@
+# Copyright (c) 2009 Google Inc. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+{
+ 'includes': [
+ 'builddir.gypi',
+ ],
+ 'targets': [
+ {
+ 'target_name': 'pull_in_all',
+ 'type': 'none',
+ 'dependencies': [
+ 'prog1',
+ 'subdir2/prog2.gyp:prog2',
+ 'subdir2/subdir3/prog3.gyp:prog3',
+ 'subdir2/subdir3/subdir4/prog4.gyp:prog4',
+ 'subdir2/subdir3/subdir4/subdir5/prog5.gyp:prog5',
+ ],
+ },
+ {
+ 'target_name': 'prog1',
+ 'type': 'executable',
+ 'sources': [
+ 'prog1.c',
+ 'func1.c',
+ ],
+ },
+ ],
+}
diff --git a/third_party/python/gyp/test/builddir/src/subdir2/prog2.c b/third_party/python/gyp/test/builddir/src/subdir2/prog2.c
new file mode 100644
index 0000000000..9d682cd783
--- /dev/null
+++ b/third_party/python/gyp/test/builddir/src/subdir2/prog2.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+extern void func2(void);
+
+int main(void)
+{
+ printf("Hello from subdir2/prog2.c\n");
+ func2();
+ return 0;
+}
diff --git a/third_party/python/gyp/test/builddir/src/subdir2/prog2.gyp b/third_party/python/gyp/test/builddir/src/subdir2/prog2.gyp
new file mode 100644
index 0000000000..96299b646d
--- /dev/null
+++ b/third_party/python/gyp/test/builddir/src/subdir2/prog2.gyp
@@ -0,0 +1,19 @@
+# Copyright (c) 2009 Google Inc. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+{
+ 'includes': [
+ '../builddir.gypi',
+ ],
+ 'targets': [
+ {
+ 'target_name': 'prog2',
+ 'type': 'executable',
+ 'sources': [
+ 'prog2.c',
+ '../func2.c',
+ ],
+ },
+ ],
+}
diff --git a/third_party/python/gyp/test/builddir/src/subdir2/subdir3/prog3.c b/third_party/python/gyp/test/builddir/src/subdir2/subdir3/prog3.c
new file mode 100644
index 0000000000..da74965985
--- /dev/null
+++ b/third_party/python/gyp/test/builddir/src/subdir2/subdir3/prog3.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+extern void func3(void);
+
+int main(void)
+{
+ printf("Hello from subdir2/subdir3/prog3.c\n");
+ func3();
+ return 0;
+}
diff --git a/third_party/python/gyp/test/builddir/src/subdir2/subdir3/prog3.gyp b/third_party/python/gyp/test/builddir/src/subdir2/subdir3/prog3.gyp
new file mode 100644
index 0000000000..d7df43c7bd
--- /dev/null
+++ b/third_party/python/gyp/test/builddir/src/subdir2/subdir3/prog3.gyp
@@ -0,0 +1,19 @@
+# Copyright (c) 2009 Google Inc. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+{
+ 'includes': [
+ '../../builddir.gypi',
+ ],
+ 'targets': [
+ {
+ 'target_name': 'prog3',
+ 'type': 'executable',
+ 'sources': [
+ 'prog3.c',
+ '../../func3.c',
+ ],
+ },
+ ],
+}
diff --git a/third_party/python/gyp/test/builddir/src/subdir2/subdir3/subdir4/prog4.c b/third_party/python/gyp/test/builddir/src/subdir2/subdir3/subdir4/prog4.c
new file mode 100644
index 0000000000..5787d5fa43
--- /dev/null
+++ b/third_party/python/gyp/test/builddir/src/subdir2/subdir3/subdir4/prog4.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+extern void func4(void);
+
+int main(void)
+{
+ printf("Hello from subdir2/subdir3/subdir4/prog4.c\n");
+ func4();
+ return 0;
+}
diff --git a/third_party/python/gyp/test/builddir/src/subdir2/subdir3/subdir4/prog4.gyp b/third_party/python/gyp/test/builddir/src/subdir2/subdir3/subdir4/prog4.gyp
new file mode 100644
index 0000000000..862a8a18cd
--- /dev/null
+++ b/third_party/python/gyp/test/builddir/src/subdir2/subdir3/subdir4/prog4.gyp
@@ -0,0 +1,19 @@
+# Copyright (c) 2009 Google Inc. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+{
+ 'includes': [
+ '../../../builddir.gypi',
+ ],
+ 'targets': [
+ {
+ 'target_name': 'prog4',
+ 'type': 'executable',
+ 'sources': [
+ 'prog4.c',
+ '../../../func4.c',
+ ],
+ },
+ ],
+}
diff --git a/third_party/python/gyp/test/builddir/src/subdir2/subdir3/subdir4/subdir5/prog5.c b/third_party/python/gyp/test/builddir/src/subdir2/subdir3/subdir4/subdir5/prog5.c
new file mode 100644
index 0000000000..c6e2ab521f
--- /dev/null
+++ b/third_party/python/gyp/test/builddir/src/subdir2/subdir3/subdir4/subdir5/prog5.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+extern void func5(void);
+
+int main(void)
+{
+ printf("Hello from subdir2/subdir3/subdir4/subdir5/prog5.c\n");
+ func5();
+ return 0;
+}
diff --git a/third_party/python/gyp/test/builddir/src/subdir2/subdir3/subdir4/subdir5/prog5.gyp b/third_party/python/gyp/test/builddir/src/subdir2/subdir3/subdir4/subdir5/prog5.gyp
new file mode 100644
index 0000000000..fe1c9cbf50
--- /dev/null
+++ b/third_party/python/gyp/test/builddir/src/subdir2/subdir3/subdir4/subdir5/prog5.gyp
@@ -0,0 +1,19 @@
+# Copyright (c) 2009 Google Inc. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+{
+ 'includes': [
+ '../../../../builddir.gypi',
+ ],
+ 'targets': [
+ {
+ 'target_name': 'prog5',
+ 'type': 'executable',
+ 'sources': [
+ 'prog5.c',
+ '../../../../func5.c',
+ ],
+ },
+ ],
+}