1#!/usr/bin/env python 2 3# Copyright (c) 2012 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. 6 7""" 8Verifies that invalid strings files cause the build to fail. 9""" 10 11import TestCmd 12import TestGyp 13 14import sys 15 16if sys.platform == 'darwin': 17 expected_error = 'Old-style plist parser: missing semicolon in dictionary' 18 saw_expected_error = [False] # Python2 has no "nonlocal" keyword. 19 def match(a, b): 20 if a == b: 21 return True 22 if not TestCmd.is_List(a): 23 a = a.split('\n') 24 if not TestCmd.is_List(b): 25 b = b.split('\n') 26 if expected_error in '\n'.join(a) + '\n'.join(b): 27 saw_expected_error[0] = True 28 return True 29 return False 30 test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'], match=match) 31 32 test.run_gyp('test-error.gyp', chdir='app-bundle') 33 34 test.build('test-error.gyp', test.ALL, chdir='app-bundle') 35 36 # Ninja pipes stderr of subprocesses to stdout. 37 if test.format == 'ninja' and expected_error in test.stdout(): 38 saw_expected_error[0] = True 39 40 if saw_expected_error[0]: 41 test.pass_test() 42 else: 43 test.fail_test() 44