From 163e9ad484fccff28d2d05596f074bbd1822686b Mon Sep 17 00:00:00 2001 From: Gareth Rees Date: Fri, 8 Mar 2013 10:17:08 +0000 Subject: [PATCH] Test suite runs on os x: * New Xcode target "testrun" runs all the (runnable) test cases. * Makefile provides separate targets test-make-build and test-xcode-build for running test suite on different platforms. * configure selects the appropriate test target. Copied from Perforce Change: 181085 ServerID: perforce.ravenbrook.com --- mps/Makefile.in | 17 ++++-- mps/code/mps.xcodeproj/project.pbxproj | 78 +++++++++++++++++++++++++- mps/configure | 5 ++ mps/configure.ac | 4 ++ 4 files changed, 98 insertions(+), 6 deletions(-) diff --git a/mps/Makefile.in b/mps/Makefile.in index 155d45d898c..b31d1fa4092 100644 --- a/mps/Makefile.in +++ b/mps/Makefile.in @@ -18,6 +18,7 @@ EXTRA_TARGETS=@EXTRA_TARGETS@ export EXTRA_TARGETS prefix=$(DESTDIR)@prefix@ MAKE_FOR_TARGET=$(MAKE) -C code -f $(MPS_TARGET_NAME).gmk +XCODEBUILD=xcodebuild -project code/mps.xcodeproj all: @BUILD_TARGET@ @@ -34,12 +35,12 @@ install-make-build: make-install-dirs build-via-make for PROGRAM in $(EXTRA_TARGETS); do $(INSTALL_PROGRAM) code/$(MPS_TARGET_NAME)/hot/$$PROGRAM $(prefix)/bin/$$PROGRAM; done build-via-xcode: - xcodebuild -project code/mps.xcodeproj -config Release - xcodebuild -project code/mps.xcodeproj -config Debug + $(XCODEBUILD) -config Release + $(XCODEBUILD) -config Debug clean-xcode-build: - xcodebuild -project code/mps.xcodeproj -config Release clean - xcodebuild -project code/mps.xcodeproj -config Debug clean + $(XCODEBUILD) -config Release clean + $(XCODEBUILD) -config Debug clean install-xcode-build: make-install-dirs build-via-xcode $(INSTALL_DATA) code/mps*.h $(prefix)/include/ @@ -67,6 +68,12 @@ make-install-dirs: install: @INSTALL_TARGET@ -test: @BUILD_TARGET@ +test-make-build: @BUILD_TARGET@ $(MAKE_FOR_TARGET) VARIETY=cool testrun $(MAKE_FOR_TARGET) VARIETY=hot testrun + +test-xcode-build: + $(XCODEBUILD) -config Release -target testrun + $(XCODEBUILD) -config Debug -target testrun + +test: @TEST_TARGET@ diff --git a/mps/code/mps.xcodeproj/project.pbxproj b/mps/code/mps.xcodeproj/project.pbxproj index e238cc981e8..375124a990f 100644 --- a/mps/code/mps.xcodeproj/project.pbxproj +++ b/mps/code/mps.xcodeproj/project.pbxproj @@ -7,6 +7,18 @@ objects = { /* Begin PBXAggregateTarget section */ + 22CDE8EF16E9E97D00366D0A /* testrun */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 22CDE8F016E9E97E00366D0A /* Build configuration list for PBXAggregateTarget "testrun" */; + buildPhases = ( + 22CDE8F416E9E9D400366D0A /* ShellScript */, + ); + dependencies = ( + 22CDE92E16E9EB9300366D0A /* PBXTargetDependency */, + ); + name = testrun; + productName = testrun; + }; 3104AFF1156D37A0000A585A /* all */ = { isa = PBXAggregateTarget; buildConfigurationList = 3104AFF2156D37A0000A585A /* Build configuration list for PBXAggregateTarget "all" */; @@ -217,6 +229,13 @@ remoteGlobalIDString = 2D604B9B16514B1A003AAF46; remoteInfo = mpseventtxt; }; + 22CDE92D16E9EB9300366D0A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 31EEABDA156AAE9E00714D05 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3104AFF1156D37A0000A585A; + remoteInfo = all; + }; 22FA176616E8D6FC0098B23F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 31EEABDA156AAE9E00714D05 /* Project object */; @@ -2253,7 +2272,7 @@ 31EEABDA156AAE9E00714D05 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0440; + LastUpgradeCheck = 0460; }; buildConfigurationList = 31EEABDD156AAE9E00714D05 /* Build configuration list for PBXProject "mps" */; compatibilityVersion = "Xcode 3.2"; @@ -2302,10 +2321,28 @@ 3114A6C5156E9815001E0AA3 /* mpseventcnv */, 2D07B9701636FC9900DB751B /* mpseventsql */, 2D604B9B16514B1A003AAF46 /* mpseventtxt */, + 22CDE8EF16E9E97D00366D0A /* testrun */, ); }; /* End PBXProject section */ +/* Begin PBXShellScriptBuildPhase section */ + 22CDE8F416E9E9D400366D0A /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# bttest & teletest cannot be run unattended\n# mv2test cannot be run because MV2 is broken\n# amcssth doesn't work on OS X (job001621)\nTESTCASES=\"abqtest amcss amcsshe amsss amssshe apss arenacv awlut \\\n awluthe btcv cbstest finalcv finaltest lockcov locv \\\n messtest mpmss mpsicv poolncv qs sacss segsmss steptest \\\n walkt0\"\nOUTPUT=$(mktemp /tmp/mps.log.XXXXXX)\necho \"Logging test output to $OUTPUT\"\nfor TEST in $TESTCASES; do\n TESTCASE=$TARGET_BUILD_DIR/$TEST\n printf \"\\n\\n-- Running $TESTCASE at $(date) --\\n\" >> $OUTPUT\n echo \"Running $TESTCASE\"\n $TESTCASE >> $OUTPUT || exit 1\ndone"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ 22FA176716E8D6FC0098B23F /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -2673,6 +2710,11 @@ target = 2D604B9B16514B1A003AAF46 /* mpseventtxt */; targetProxy = 2275798816C5422900B662B0 /* PBXContainerItemProxy */; }; + 22CDE92E16E9EB9300366D0A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 3104AFF1156D37A0000A585A /* all */; + targetProxy = 22CDE92D16E9EB9300366D0A /* PBXContainerItemProxy */; + }; 22FA176516E8D6FC0098B23F /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 31EEABFA156AAF9D00714D05 /* mps */; @@ -2996,6 +3038,27 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + 22CDE8F116E9E97E00366D0A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 22CDE8F216E9E97E00366D0A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 22CDE8F316E9E97E00366D0A /* WE */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = WE; + }; 22FA177216E8D6FC0098B23F /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -3406,6 +3469,7 @@ ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES; CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_C_LANGUAGE_STANDARD = ansi; GCC_OPTIMIZATION_LEVEL = 2; @@ -3771,6 +3835,7 @@ ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES; CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; GCC_C_LANGUAGE_STANDARD = ansi; GCC_OPTIMIZATION_LEVEL = 0; @@ -3825,6 +3890,7 @@ ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES; CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_C_LANGUAGE_STANDARD = ansi; GCC_OPTIMIZATION_LEVEL = 2; @@ -3909,6 +3975,16 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 22CDE8F016E9E97E00366D0A /* Build configuration list for PBXAggregateTarget "testrun" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 22CDE8F116E9E97E00366D0A /* Debug */, + 22CDE8F216E9E97E00366D0A /* Release */, + 22CDE8F316E9E97E00366D0A /* WE */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 22FA177116E8D6FC0098B23F /* Build configuration list for PBXNativeTarget "amcssth" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/mps/configure b/mps/configure index f65c620f8e0..37bc1f842af 100755 --- a/mps/configure +++ b/mps/configure @@ -625,6 +625,7 @@ ac_includes_default="\ ac_subst_vars='LTLIBOBJS LIBOBJS EXTRA_TARGETS +TEST_TARGET INSTALL_TARGET CLEAN_TARGET BUILD_TARGET @@ -3404,6 +3405,7 @@ $as_echo_n "checking target platform... " >&6; } BUILD_TARGET=build-via-make CLEAN_TARGET=clean-make-build INSTALL_TARGET=install-make-build +TEST_TARGET=test-make-build case $host in i*86-*-linux*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: Linux x86" >&5 @@ -3424,6 +3426,7 @@ $as_echo "Mac OS X x86" >&6; } BUILD_TARGET=build-via-xcode CLEAN_TARGET=clean-xcode-build INSTALL_TARGET=install-xcode-build + TEST_TARGET=test-xcode-build CFLAGS="$CFLAGS_LL" ;; x86_64-apple-darwin*) @@ -3433,6 +3436,7 @@ $as_echo "Mac OS X x86_64" >&6; } BUILD_TARGET=build-via-xcode CLEAN_TARGET=clean-xcode-build INSTALL_TARGET=install-xcode-build + TEST_TARGET=test-xcode-build CFLAGS="$CFLAGS_LL" ;; i*86-*-freebsd*) @@ -3506,6 +3510,7 @@ fi + ac_config_files="$ac_config_files Makefile example/scheme/Makefile" diff --git a/mps/configure.ac b/mps/configure.ac index 8c339a0a74f..a502abe9232 100644 --- a/mps/configure.ac +++ b/mps/configure.ac @@ -45,6 +45,7 @@ AC_MSG_CHECKING([target platform]) BUILD_TARGET=build-via-make CLEAN_TARGET=clean-make-build INSTALL_TARGET=install-make-build +TEST_TARGET=test-make-build case $host in i*86-*-linux*) AC_MSG_RESULT([Linux x86]) @@ -62,6 +63,7 @@ case $host in BUILD_TARGET=build-via-xcode CLEAN_TARGET=clean-xcode-build INSTALL_TARGET=install-xcode-build + TEST_TARGET=test-xcode-build CFLAGS="$CFLAGS_LL" ;; x86_64-apple-darwin*) @@ -70,6 +72,7 @@ case $host in BUILD_TARGET=build-via-xcode CLEAN_TARGET=clean-xcode-build INSTALL_TARGET=install-xcode-build + TEST_TARGET=test-xcode-build CFLAGS="$CFLAGS_LL" ;; i*86-*-freebsd*) @@ -95,6 +98,7 @@ AC_SUBST(MPS_TARGET_NAME) AC_SUBST(BUILD_TARGET) AC_SUBST(CLEAN_TARGET) AC_SUBST(INSTALL_TARGET) +AC_SUBST(TEST_TARGET) AC_SUBST(EXTRA_TARGETS) AC_SUBST(CFLAGS) AC_SUBST(LDFLAGS)