Commits

Jan Lahoda committed 0cabfe7

Generalizing scripted tests and creating new scripted tests for cmdline/tool

Comments (0)

Files changed (12)

cmdline/compiler/build.xml

     </target>
 
     <target name="netbeans-extra" depends="ant"/>
+    
+    <target name="test-build" depends="projectized-common.test-build,-prepare-scripted-tests" />
+    
 </project>

cmdline/compiler/test/scripted/config

+#!/bin/bash
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common
+# Development and Distribution License("CDDL") (collectively, the
+# "License"). You may not use this file except in compliance with the
+# License. You can obtain a copy of the License at
+# http://www.netbeans.org/cddl-gplv2.html
+# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+# specific language governing permissions and limitations under the
+# License.  When distributing the software, include this License Header
+# Notice in each file and include the License file at
+# nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the GPL Version 2 section of the License file that
+# accompanied this code. If applicable, add the following below the
+# License Header, with the fields enclosed by brackets [] replaced by
+# your own identifying information:
+# "Portions Copyrighted [year] [name of copyright owner]"
+#
+# If you wish your version of this file to be governed by only the CDDL
+# or only the GPL Version 2, indicate your decision by adding
+# "[Contributor] elects to include this software in this distribution
+# under the [CDDL or GPL Version 2] license." If you do not indicate a
+# single choice of license, a recipient has the option to distribute
+# your version of this file under either the CDDL, the GPL Version 2 or
+# to extend the choice of license to its licensees as provided above.
+# However, if you add GPL Version 2 code and therefore, elected the GPL
+# Version 2 license, then the option applies only if the new code is
+# made subject to such option by the copyright holder.
+#
+# Contributor(s):
+#
+# Portions Copyrighted 2010 Sun Microsystems, Inc.
+
+TOOL_NAME=jackpotc
+
+run_tool() {
+    "${TOOL_NAME}"/"${TOOL_NAME}" -sourcepath src -d build "$@"
+}

cmdline/compiler/test/scripted/harness

-#!/bin/bash
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-#
-# Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-#
-# The contents of this file are subject to the terms of either the GNU
-# General Public License Version 2 only ("GPL") or the Common
-# Development and Distribution License("CDDL") (collectively, the
-# "License"). You may not use this file except in compliance with the
-# License. You can obtain a copy of the License at
-# http://www.netbeans.org/cddl-gplv2.html
-# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
-# specific language governing permissions and limitations under the
-# License.  When distributing the software, include this License Header
-# Notice in each file and include the License file at
-# nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Sun in the GPL Version 2 section of the License file that
-# accompanied this code. If applicable, add the following below the
-# License Header, with the fields enclosed by brackets [] replaced by
-# your own identifying information:
-# "Portions Copyrighted [year] [name of copyright owner]"
-#
-# If you wish your version of this file to be governed by only the CDDL
-# or only the GPL Version 2, indicate your decision by adding
-# "[Contributor] elects to include this software in this distribution
-# under the [CDDL or GPL Version 2] license." If you do not indicate a
-# single choice of license, a recipient has the option to distribute
-# your version of this file under either the CDDL, the GPL Version 2 or
-# to extend the choice of license to its licensees as provided above.
-# However, if you add GPL Version 2 code and therefore, elected the GPL
-# Version 2 license, then the option applies only if the new code is
-# made subject to such option by the copyright holder.
-#
-# Contributor(s):
-#
-# Portions Copyrighted 2010 Sun Microsystems, Inc.
-
-TEST_NAME=`basename $0`
-BUILD_DIR=`cd ../../build; pwd`
-WORK_DIR=$BUILD_DIR/test/scripted/$TEST_NAME
-RESULTS_DIR=$BUILD_DIR/test/scripted/results
-RESULT_FILE=$RESULTS_DIR/TEST-$TEST_NAME.xml
-COMPILER_ZIP=$BUILD_DIR/jackpotc.zip
-
-rm -rf $WORK_DIR
-mkdir -p $WORK_DIR
-mkdir -p `dirname $RESULT_FILE`
-cd $WORK_DIR
-unzip -q $COMPILER_ZIP
-
-mkdir -p build
-
-create_file() {
-    mkdir -p `dirname $1`
-    cat >$1 -
-}
-
-run_compiler() {
-    jackpotc/jackpotc -sourcepath src -d build "$@"
-}
-
-assert_file_content() {
-     DIFF_OUTPUT=`diff $1 - 2>&1`;
-     if [ $? != 0 ] ; then
-         write_failure_results_file "$DIFF_OUTPUT"
-        exit 1;
-     fi;
-}
-
-write_passed_results_file() {
-      cat >$RESULT_FILE <<EOF
-<?xml version="1.0" encoding="UTF-8" ?>
-<testsuite errors="0" failures="0" hostname="foo" name="$TEST_NAME" tests="1" time="0" timestamp="`date`">
-  <properties/>
-  <testcase classname="$TEST_NAME" name="main" time="0" />
-</testsuite>
-EOF
-}
-
-write_failure_results_file() {
-      cat >$RESULT_FILE <<EOF
-<?xml version="1.0" encoding="UTF-8" ?>
-<testsuite errors="0" failures="1" hostname="foo" name="$TEST_NAME" tests="1" time="0" timestamp="`date`">
-  <properties/>
-  <testcase classname="$TEST_NAME" name="main" time="0">
-    <failure message="Test failed" type="junit.framework.AssertionFailedError">$1</failure>
-  </testcase>
-</testsuite>
-EOF
-}
-
-perform_test;
-write_passed_results_file;
-
-exit 0

cmdline/compiler/test/scripted/run

-#!/bin/bash
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-#
-# Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-#
-# The contents of this file are subject to the terms of either the GNU
-# General Public License Version 2 only ("GPL") or the Common
-# Development and Distribution License("CDDL") (collectively, the
-# "License"). You may not use this file except in compliance with the
-# License. You can obtain a copy of the License at
-# http://www.netbeans.org/cddl-gplv2.html
-# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
-# specific language governing permissions and limitations under the
-# License.  When distributing the software, include this License Header
-# Notice in each file and include the License file at
-# nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
-# particular file as subject to the "Classpath" exception as provided
-# by Sun in the GPL Version 2 section of the License file that
-# accompanied this code. If applicable, add the following below the
-# License Header, with the fields enclosed by brackets [] replaced by
-# your own identifying information:
-# "Portions Copyrighted [year] [name of copyright owner]"
-#
-# If you wish your version of this file to be governed by only the CDDL
-# or only the GPL Version 2, indicate your decision by adding
-# "[Contributor] elects to include this software in this distribution
-# under the [CDDL or GPL Version 2] license." If you do not indicate a
-# single choice of license, a recipient has the option to distribute
-# your version of this file under either the CDDL, the GPL Version 2 or
-# to extend the choice of license to its licensees as provided above.
-# However, if you add GPL Version 2 code and therefore, elected the GPL
-# Version 2 license, then the option applies only if the new code is
-# made subject to such option by the copyright holder.
-#
-# Contributor(s):
-#
-# Portions Copyrighted 2010 Sun Microsystems, Inc.
-
-cd `dirname $0`
-
-for test in test-*; do
-    ./$test;
-done

cmdline/compiler/test/scripted/test-cmdline-1

 java.lang.Character.toLowerCase(\$1) :: \$1 instanceof char => java.lang.Character.toUpperCase($1) ;;
 EOF
 
-    run_compiler src/test/Test.java
+    run_tool src/test/Test.java
 
     assert_file_content build/META-INF/upgrade/upgrade.diff <<EOF
 --- $WORK_DIR/src/test/Test.java

cmdline/test/scripted/harness

+#!/bin/bash
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common
+# Development and Distribution License("CDDL") (collectively, the
+# "License"). You may not use this file except in compliance with the
+# License. You can obtain a copy of the License at
+# http://www.netbeans.org/cddl-gplv2.html
+# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+# specific language governing permissions and limitations under the
+# License.  When distributing the software, include this License Header
+# Notice in each file and include the License file at
+# nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the GPL Version 2 section of the License file that
+# accompanied this code. If applicable, add the following below the
+# License Header, with the fields enclosed by brackets [] replaced by
+# your own identifying information:
+# "Portions Copyrighted [year] [name of copyright owner]"
+#
+# If you wish your version of this file to be governed by only the CDDL
+# or only the GPL Version 2, indicate your decision by adding
+# "[Contributor] elects to include this software in this distribution
+# under the [CDDL or GPL Version 2] license." If you do not indicate a
+# single choice of license, a recipient has the option to distribute
+# your version of this file under either the CDDL, the GPL Version 2 or
+# to extend the choice of license to its licensees as provided above.
+# However, if you add GPL Version 2 code and therefore, elected the GPL
+# Version 2 license, then the option applies only if the new code is
+# made subject to such option by the copyright holder.
+#
+# Contributor(s):
+#
+# Portions Copyrighted 2010 Sun Microsystems, Inc.
+
+. config
+
+if [ "$TOOL_NAME" == "" ] ; then
+    echo "tool not specified" >&2
+    exit 1;
+fi;
+
+TEST_NAME=`basename $0`
+BUILD_DIR=`cd ../../../build; pwd`
+WORK_DIR=$BUILD_DIR/test/scripted/work/$TEST_NAME
+RESULTS_DIR=$BUILD_DIR/test/scripted/results
+RESULT_FILE=$RESULTS_DIR/TEST-$TEST_NAME.xml
+COMPILER_ZIP=$BUILD_DIR/"$TOOL_NAME".zip
+
+rm -rf $WORK_DIR
+mkdir -p $WORK_DIR
+mkdir -p `dirname $RESULT_FILE`
+cd $WORK_DIR
+unzip -q $COMPILER_ZIP
+
+mkdir -p build
+
+create_file() {
+    mkdir -p `dirname $1`
+    cat >$1 -
+}
+
+assert_file_content() {
+     DIFF_OUTPUT=`diff $1 - 2>&1`;
+     if [ $? != 0 ] ; then
+         write_failure_results_file "$DIFF_OUTPUT"
+        exit 1;
+     fi;
+}
+
+write_passed_results_file() {
+      cat >$RESULT_FILE <<EOF
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite errors="0" failures="0" hostname="foo" name="$TEST_NAME" tests="1" time="0" timestamp="`date`">
+  <properties/>
+  <testcase classname="$TEST_NAME" name="main" time="0" />
+</testsuite>
+EOF
+}
+
+write_failure_results_file() {
+      cat >$RESULT_FILE <<EOF
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite errors="0" failures="1" hostname="foo" name="$TEST_NAME" tests="1" time="0" timestamp="`date`">
+  <properties/>
+  <testcase classname="$TEST_NAME" name="main" time="0">
+    <failure message="Test failed" type="junit.framework.AssertionFailedError">$1</failure>
+  </testcase>
+</testsuite>
+EOF
+}
+
+perform_test;
+write_passed_results_file;
+
+exit 0

cmdline/test/scripted/run

+#!/bin/bash
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common
+# Development and Distribution License("CDDL") (collectively, the
+# "License"). You may not use this file except in compliance with the
+# License. You can obtain a copy of the License at
+# http://www.netbeans.org/cddl-gplv2.html
+# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+# specific language governing permissions and limitations under the
+# License.  When distributing the software, include this License Header
+# Notice in each file and include the License file at
+# nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the GPL Version 2 section of the License file that
+# accompanied this code. If applicable, add the following below the
+# License Header, with the fields enclosed by brackets [] replaced by
+# your own identifying information:
+# "Portions Copyrighted [year] [name of copyright owner]"
+#
+# If you wish your version of this file to be governed by only the CDDL
+# or only the GPL Version 2, indicate your decision by adding
+# "[Contributor] elects to include this software in this distribution
+# under the [CDDL or GPL Version 2] license." If you do not indicate a
+# single choice of license, a recipient has the option to distribute
+# your version of this file under either the CDDL, the GPL Version 2 or
+# to extend the choice of license to its licensees as provided above.
+# However, if you add GPL Version 2 code and therefore, elected the GPL
+# Version 2 license, then the option applies only if the new code is
+# made subject to such option by the copyright holder.
+#
+# Contributor(s):
+#
+# Portions Copyrighted 2010 Sun Microsystems, Inc.
+
+cd `dirname $0`
+
+for test in test-*; do
+    ./$test;
+done

cmdline/tool/build.xml

             </zipfileset>
         </zip>
     </target>
+    
+    <target name="test-build" depends="projectized-common.test-build,-prepare-scripted-tests" />
+    
 </project>

cmdline/tool/test/scripted/config

+#!/bin/bash
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common
+# Development and Distribution License("CDDL") (collectively, the
+# "License"). You may not use this file except in compliance with the
+# License. You can obtain a copy of the License at
+# http://www.netbeans.org/cddl-gplv2.html
+# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+# specific language governing permissions and limitations under the
+# License.  When distributing the software, include this License Header
+# Notice in each file and include the License file at
+# nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the GPL Version 2 section of the License file that
+# accompanied this code. If applicable, add the following below the
+# License Header, with the fields enclosed by brackets [] replaced by
+# your own identifying information:
+# "Portions Copyrighted [year] [name of copyright owner]"
+#
+# If you wish your version of this file to be governed by only the CDDL
+# or only the GPL Version 2, indicate your decision by adding
+# "[Contributor] elects to include this software in this distribution
+# under the [CDDL or GPL Version 2] license." If you do not indicate a
+# single choice of license, a recipient has the option to distribute
+# your version of this file under either the CDDL, the GPL Version 2 or
+# to extend the choice of license to its licensees as provided above.
+# However, if you add GPL Version 2 code and therefore, elected the GPL
+# Version 2 license, then the option applies only if the new code is
+# made subject to such option by the copyright holder.
+#
+# Contributor(s):
+#
+# Portions Copyrighted 2010 Sun Microsystems, Inc.
+
+TOOL_NAME=jackpot
+
+run_tool() {
+    "${TOOL_NAME}"/"${TOOL_NAME}" "$@"
+}

cmdline/tool/test/scripted/test-cmdline-1

+#!/bin/bash
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+#
+# The contents of this file are subject to the terms of either the GNU
+# General Public License Version 2 only ("GPL") or the Common
+# Development and Distribution License("CDDL") (collectively, the
+# "License"). You may not use this file except in compliance with the
+# License. You can obtain a copy of the License at
+# http://www.netbeans.org/cddl-gplv2.html
+# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+# specific language governing permissions and limitations under the
+# License.  When distributing the software, include this License Header
+# Notice in each file and include the License file at
+# nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Sun in the GPL Version 2 section of the License file that
+# accompanied this code. If applicable, add the following below the
+# License Header, with the fields enclosed by brackets [] replaced by
+# your own identifying information:
+# "Portions Copyrighted [year] [name of copyright owner]"
+#
+# If you wish your version of this file to be governed by only the CDDL
+# or only the GPL Version 2, indicate your decision by adding
+# "[Contributor] elects to include this software in this distribution
+# under the [CDDL or GPL Version 2] license." If you do not indicate a
+# single choice of license, a recipient has the option to distribute
+# your version of this file under either the CDDL, the GPL Version 2 or
+# to extend the choice of license to its licensees as provided above.
+# However, if you add GPL Version 2 code and therefore, elected the GPL
+# Version 2 license, then the option applies only if the new code is
+# made subject to such option by the copyright holder.
+#
+# Contributor(s):
+#
+# Portions Copyrighted 2010 Sun Microsystems, Inc.
+
+perform_test() {
+    create_file src/test/Test.java <<EOF
+package test;
+public class Test {
+    private void test() {
+        String s = "foo".intern();
+    }
+}
+EOF
+
+    run_tool --hint "String.intern() called on constant" src
+
+    assert_file_content  src/test/Test.java <<EOF
+package test;
+public class Test {
+    private void test() {
+        String s = "foo";
+    }
+}
+EOF
+}
+
+. `dirname $0`/harness

findbugs-import.xml

         <delete file="${report.file}" failonerror="false"/>
     </target>
 
+    <target name="-prepare-scripted-tests" depends="-check-scripted-tests" if="has.scripted.tests">
+        <mkdir dir="build/test/scripted" />
+        <copy todir="build/test/scripted">
+            <fileset dir="test/scripted"/>
+        </copy>
+        <copy todir="build/test/scripted">
+            <fileset dir="../test/scripted"/>
+        </copy>
+        <chmod dir="build/test/scripted" perm="u+x" includes="**/*" />
+    </target>
+    
+    <target name="-check-scripted-tests" depends="build-init">
+        <condition property="has.scripted.tests" value="true">
+            <available file="test/scripted/config" />
+        </condition>
+    </target>
 </project>
 #call_ant coverage-report || exit
 call_ant test || exit
 
-(cd cmdline; call_ant clean && call_ant build && call_ant test && (cd compiler; call_ant create-standalone-compiler && test/scripted/run ) ) || exit
+(cd cmdline; call_ant clean && call_ant build && call_ant test && (cd compiler; call_ant create-standalone-compiler && build/test/scripted/run )  && (cd tool; call_ant create-standalone-tool && build/test/scripted/run )) || exit
 
 mkdir -p build/updates
 cp nbbuild/download/*.nbm build/updates