diff options
Diffstat (limited to 'media/webrtc/trunk/tools/gyp/test/mac/gyptest-postbuild-fail.py')
-rwxr-xr-x | media/webrtc/trunk/tools/gyp/test/mac/gyptest-postbuild-fail.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/media/webrtc/trunk/tools/gyp/test/mac/gyptest-postbuild-fail.py b/media/webrtc/trunk/tools/gyp/test/mac/gyptest-postbuild-fail.py new file mode 100755 index 000000000..9cd5d47d2 --- /dev/null +++ b/media/webrtc/trunk/tools/gyp/test/mac/gyptest-postbuild-fail.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python + +# Copyright (c) 2011 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 a failing postbuild step lets the build fail. +""" + +import TestGyp + +import sys + +if sys.platform == 'darwin': + # set |match| to ignore build stderr output. + test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'], + match = lambda a, b: True) + + test.run_gyp('test.gyp', chdir='postbuild-fail') + + build_error_code = { + 'xcode': [1, 65], # 1 for xcode 3, 65 for xcode 4 (see `man sysexits`) + 'make': 2, + 'ninja': 1, + 'xcode-ninja': [1, 65], + }[test.format] + + + # If a postbuild fails, all postbuilds should be re-run on the next build. + # In Xcode 3, even if the first postbuild fails the other postbuilds were + # still executed. In Xcode 4, postbuilds are stopped after the first + # failing postbuild. This test checks for the Xcode 4 behavior. + + # Ignore this test on Xcode 3. + import subprocess + job = subprocess.Popen(['xcodebuild', '-version'], + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) + out, err = job.communicate() + if job.returncode != 0: + print out + raise Exception('Error %d running xcodebuild' % job.returncode) + if out.startswith('Xcode 3.'): + test.pass_test() + + # Non-bundles + test.build('test.gyp', 'nonbundle', chdir='postbuild-fail', + status=build_error_code) + test.built_file_must_not_exist('static_touch', + chdir='postbuild-fail') + # Check for non-up-to-date-ness by checking if building again produces an + # error. + test.build('test.gyp', 'nonbundle', chdir='postbuild-fail', + status=build_error_code) + + + # Bundles + test.build('test.gyp', 'bundle', chdir='postbuild-fail', + status=build_error_code) + test.built_file_must_not_exist('dynamic_touch', + chdir='postbuild-fail') + # Check for non-up-to-date-ness by checking if building again produces an + # error. + test.build('test.gyp', 'bundle', chdir='postbuild-fail', + status=build_error_code) + + test.pass_test() |