184791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org#!/usr/bin/env python 284791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org 384791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org# Copyright (c) 2012 Google Inc. All rights reserved. 484791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org# Use of this source code is governed by a BSD-style license that can be 584791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org# found in the LICENSE file. 684791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org 784791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org""" 8d3a78a9cab563bf52c69a382ac65dda2c1c8b5cffischman@chromium.orgVerifies that GC objc settings are handled correctly. 984791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org""" 1084791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org 1184791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.orgimport TestGyp 12b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.orgimport TestMac 1384791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org 1484791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.orgimport sys 1584791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org 1684791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.orgif sys.platform == 'darwin': 1784791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org # set |match| to ignore build stderr output. 1884791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org test = TestGyp.TestGyp(formats=['ninja', 'make', 'xcode'], 1984791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org match = lambda a, b: True) 2084791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org 21b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org # Xcode 5.1 removed support for garbage-collection: 22b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org # error: garbage collection is no longer supported 23b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org if TestMac.Xcode.Version() < '0510': 2484791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org 25b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org CHDIR = 'objc-gc' 26b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org test.run_gyp('test.gyp', chdir=CHDIR) 2784791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org 28b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org build_error_code = { 29b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org 'xcode': [1, 65], # 1 for xcode 3, 65 for xcode 4 (see `man sysexits`) 30b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org 'make': 2, 31b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org 'ninja': 1, 32b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org }[test.format] 3384791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org 34b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org test.build('test.gyp', 'gc_exe_fails', chdir=CHDIR, status=build_error_code) 35b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org test.build( 36b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org 'test.gyp', 'gc_off_exe_req_lib', chdir=CHDIR, status=build_error_code) 3784791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org 38b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org test.build('test.gyp', 'gc_req_exe', chdir=CHDIR) 39b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org test.run_built_executable('gc_req_exe', chdir=CHDIR, stdout="gc on: 1\n") 4084791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org 41b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org test.build('test.gyp', 'gc_exe_req_lib', chdir=CHDIR) 42b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org test.run_built_executable( 43b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org 'gc_exe_req_lib', chdir=CHDIR, stdout="gc on: 1\n") 4484791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org 45b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org test.build('test.gyp', 'gc_exe', chdir=CHDIR) 46b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org test.run_built_executable('gc_exe', chdir=CHDIR, stdout="gc on: 1\n") 47b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org 48b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org test.build('test.gyp', 'gc_off_exe', chdir=CHDIR) 49b7e8af6ef92c0244bd5121c528e3e85441b0d835sdefresne@chromium.org test.run_built_executable('gc_off_exe', chdir=CHDIR, stdout="gc on: 0\n") 5084791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org 5184791a1bd5c7e5336b3dbc61d14c99130183aca2thakis@chromium.org test.pass_test() 52