diff options
Diffstat (limited to 'third_party/python/gyp/test/gyp-defines')
4 files changed, 113 insertions, 0 deletions
diff --git a/third_party/python/gyp/test/gyp-defines/defines.gyp b/third_party/python/gyp/test/gyp-defines/defines.gyp new file mode 100644 index 0000000000..f59bbd20d2 --- /dev/null +++ b/third_party/python/gyp/test/gyp-defines/defines.gyp @@ -0,0 +1,26 @@ +# 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. + +{ + 'targets': [ + { + 'target_name': 'test_target', + 'type': 'none', + 'actions': [ + { + 'action_name': 'test_action', + 'inputs': [], + 'outputs': [ 'action.txt' ], + 'action': [ + 'python', + 'echo.py', + '<(key)', + '<(_outputs)', + ], + 'msvs_cygwin_shell': 0, + } + ], + }, + ], +} diff --git a/third_party/python/gyp/test/gyp-defines/echo.py b/third_party/python/gyp/test/gyp-defines/echo.py new file mode 100644 index 0000000000..b85add12f6 --- /dev/null +++ b/third_party/python/gyp/test/gyp-defines/echo.py @@ -0,0 +1,11 @@ +#!/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. + +import sys + +f = open(sys.argv[2], 'w+') +f.write(sys.argv[1]) +f.close() diff --git a/third_party/python/gyp/test/gyp-defines/gyptest-multiple-values.py b/third_party/python/gyp/test/gyp-defines/gyptest-multiple-values.py new file mode 100644 index 0000000000..67735cce6a --- /dev/null +++ b/third_party/python/gyp/test/gyp-defines/gyptest-multiple-values.py @@ -0,0 +1,36 @@ +#!/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. + +""" +Verifies that when multiple values are supplied for a gyp define, the last one +is used. +""" + +import os +import TestGyp + +test = TestGyp.TestGyp() + +os.environ['GYP_DEFINES'] = 'key=value1 key=value2 key=value3' +test.run_gyp('defines.gyp') + +test.build('defines.gyp') +test.must_contain('action.txt', 'value3') + +# The last occurrence of a repeated set should take precedence over other +# values. +os.environ['GYP_DEFINES'] = 'key=repeated_value key=value1 key=repeated_value' +test.run_gyp('defines.gyp') + +if test.format == 'msvs' and not test.uses_msbuild: + # msvs versions before 2010 don't detect build rule changes not reflected + # in file system timestamps. Rebuild to see differences. + test.build('defines.gyp', rebuild=True) +else: + test.build('defines.gyp') +test.must_contain('action.txt', 'repeated_value') + +test.pass_test() diff --git a/third_party/python/gyp/test/gyp-defines/gyptest-regyp.py b/third_party/python/gyp/test/gyp-defines/gyptest-regyp.py new file mode 100644 index 0000000000..0895d81d4f --- /dev/null +++ b/third_party/python/gyp/test/gyp-defines/gyptest-regyp.py @@ -0,0 +1,40 @@ +#!/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. + +""" +Verifies that when the same value is repeated for a gyp define, duplicates are +stripped from the regeneration rule. +""" + +import os +import TestGyp + +# Regenerating build files when a gyp file changes is currently only supported +# by the make generator. +test = TestGyp.TestGyp(formats=['make']) + +os.environ['GYP_DEFINES'] = 'key=repeated_value key=value1 key=repeated_value' +test.run_gyp('defines.gyp') +test.build('defines.gyp') + +# The last occurrence of a repeated set should take precedence over other +# values. See gyptest-multiple-values.py. +test.must_contain('action.txt', 'repeated_value') + +# So the regeneration rule needs to use the correct order. +test.must_not_contain( + 'Makefile', '"-Dkey=repeated_value" "-Dkey=value1" "-Dkey=repeated_value"') +test.must_contain('Makefile', '"-Dkey=value1" "-Dkey=repeated_value"') + +# Sleep so that the changed gyp file will have a newer timestamp than the +# previously generated build files. +test.sleep() +os.utime("defines.gyp", None) + +test.build('defines.gyp') +test.must_contain('action.txt', 'repeated_value') + +test.pass_test() |