From 08fa26c70b1111e48698c5d2814042a74d3eb5ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20S=C3=B8e=20S=C3=B8rensen?= Date: Sun, 16 Jan 2011 00:06:39 +0100 Subject: [PATCH] Test suites: Preparing for proper support of Triq-like tests --- .gitignore | 1 + .../{ => deterministic}/arith_guard_tests.erl | 0 .../erl/{ => deterministic}/arith_tests.erl | 0 .../atom_conversion_tests.erl | 0 .../{ => deterministic}/bs_get_integer.erl | 0 .../{ => deterministic}/bs_put_integer.erl | 0 src/test/erl/{ => deterministic}/bs_skip.erl | 0 .../{ => deterministic}/bytematch_tests.erl | 0 .../erl/{ => deterministic}/equals_tests.erl | 0 .../erl/{ => deterministic}/facfib_tests.erl | 0 .../erl/{ => deterministic}/float_tests.erl | 0 .../erl/{ => deterministic}/funref_tests.erl | 0 .../erl/{ => deterministic}/iolist_tests.erl | 0 .../is_type_guard_tests.erl | 0 .../erl/{ => deterministic}/is_type_tests.erl | 0 .../erl/{ => deterministic}/lc2_tests.erl | 0 .../{ => deterministic}/lc_stack_tests.erl | 0 src/test/erl/{ => deterministic}/lc_tests.erl | 0 .../{ => deterministic}/list_diff_tests.erl | 0 .../erl/{ => deterministic}/literal_tests.erl | 0 .../erl/{ => deterministic}/pdict_tests.erl | 0 .../erl/{ => deterministic}/round_tests.erl | 0 .../erl/{ => deterministic}/sizes_tests.erl | 0 .../erl/{ => deterministic}/utf_tests.erl | 0 src/test/erl/{ => triq}/binary_tests.erl | 0 src/test/erl/{ => triq}/erjang_test.erl | 0 src/test/erl/{ => triq}/ets_test.erl | 0 src/test/erl/{ => triq}/file_write_test.erl | 0 .../java/erjang/AbstractErjangTestCase.java | 83 -------------- src/test/java/erjang/AllTests.java | 12 +- src/test/java/erjang/TestClassGenerator.java | 104 ++++++++++++++++++ src/test/java/erjang/TestRunFile.java | 4 - 32 files changed, 110 insertions(+), 94 deletions(-) rename src/test/erl/{ => deterministic}/arith_guard_tests.erl (100%) rename src/test/erl/{ => deterministic}/arith_tests.erl (100%) rename src/test/erl/{ => deterministic}/atom_conversion_tests.erl (100%) rename src/test/erl/{ => deterministic}/bs_get_integer.erl (100%) rename src/test/erl/{ => deterministic}/bs_put_integer.erl (100%) rename src/test/erl/{ => deterministic}/bs_skip.erl (100%) rename src/test/erl/{ => deterministic}/bytematch_tests.erl (100%) rename src/test/erl/{ => deterministic}/equals_tests.erl (100%) rename src/test/erl/{ => deterministic}/facfib_tests.erl (100%) rename src/test/erl/{ => deterministic}/float_tests.erl (100%) rename src/test/erl/{ => deterministic}/funref_tests.erl (100%) rename src/test/erl/{ => deterministic}/iolist_tests.erl (100%) rename src/test/erl/{ => deterministic}/is_type_guard_tests.erl (100%) rename src/test/erl/{ => deterministic}/is_type_tests.erl (100%) rename src/test/erl/{ => deterministic}/lc2_tests.erl (100%) rename src/test/erl/{ => deterministic}/lc_stack_tests.erl (100%) rename src/test/erl/{ => deterministic}/lc_tests.erl (100%) rename src/test/erl/{ => deterministic}/list_diff_tests.erl (100%) rename src/test/erl/{ => deterministic}/literal_tests.erl (100%) rename src/test/erl/{ => deterministic}/pdict_tests.erl (100%) rename src/test/erl/{ => deterministic}/round_tests.erl (100%) rename src/test/erl/{ => deterministic}/sizes_tests.erl (100%) rename src/test/erl/{ => deterministic}/utf_tests.erl (100%) rename src/test/erl/{ => triq}/binary_tests.erl (100%) rename src/test/erl/{ => triq}/erjang_test.erl (100%) rename src/test/erl/{ => triq}/ets_test.erl (100%) rename src/test/erl/{ => triq}/file_write_test.erl (100%) create mode 100644 src/test/java/erjang/TestClassGenerator.java diff --git a/.gitignore b/.gitignore index 91576eb0..1b836dd0 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ classes target *.beam src/main/java/erjang/beam/interpreter/Interpreter.java +src/test/java/erjang/*_TEST.java \ No newline at end of file diff --git a/src/test/erl/arith_guard_tests.erl b/src/test/erl/deterministic/arith_guard_tests.erl similarity index 100% rename from src/test/erl/arith_guard_tests.erl rename to src/test/erl/deterministic/arith_guard_tests.erl diff --git a/src/test/erl/arith_tests.erl b/src/test/erl/deterministic/arith_tests.erl similarity index 100% rename from src/test/erl/arith_tests.erl rename to src/test/erl/deterministic/arith_tests.erl diff --git a/src/test/erl/atom_conversion_tests.erl b/src/test/erl/deterministic/atom_conversion_tests.erl similarity index 100% rename from src/test/erl/atom_conversion_tests.erl rename to src/test/erl/deterministic/atom_conversion_tests.erl diff --git a/src/test/erl/bs_get_integer.erl b/src/test/erl/deterministic/bs_get_integer.erl similarity index 100% rename from src/test/erl/bs_get_integer.erl rename to src/test/erl/deterministic/bs_get_integer.erl diff --git a/src/test/erl/bs_put_integer.erl b/src/test/erl/deterministic/bs_put_integer.erl similarity index 100% rename from src/test/erl/bs_put_integer.erl rename to src/test/erl/deterministic/bs_put_integer.erl diff --git a/src/test/erl/bs_skip.erl b/src/test/erl/deterministic/bs_skip.erl similarity index 100% rename from src/test/erl/bs_skip.erl rename to src/test/erl/deterministic/bs_skip.erl diff --git a/src/test/erl/bytematch_tests.erl b/src/test/erl/deterministic/bytematch_tests.erl similarity index 100% rename from src/test/erl/bytematch_tests.erl rename to src/test/erl/deterministic/bytematch_tests.erl diff --git a/src/test/erl/equals_tests.erl b/src/test/erl/deterministic/equals_tests.erl similarity index 100% rename from src/test/erl/equals_tests.erl rename to src/test/erl/deterministic/equals_tests.erl diff --git a/src/test/erl/facfib_tests.erl b/src/test/erl/deterministic/facfib_tests.erl similarity index 100% rename from src/test/erl/facfib_tests.erl rename to src/test/erl/deterministic/facfib_tests.erl diff --git a/src/test/erl/float_tests.erl b/src/test/erl/deterministic/float_tests.erl similarity index 100% rename from src/test/erl/float_tests.erl rename to src/test/erl/deterministic/float_tests.erl diff --git a/src/test/erl/funref_tests.erl b/src/test/erl/deterministic/funref_tests.erl similarity index 100% rename from src/test/erl/funref_tests.erl rename to src/test/erl/deterministic/funref_tests.erl diff --git a/src/test/erl/iolist_tests.erl b/src/test/erl/deterministic/iolist_tests.erl similarity index 100% rename from src/test/erl/iolist_tests.erl rename to src/test/erl/deterministic/iolist_tests.erl diff --git a/src/test/erl/is_type_guard_tests.erl b/src/test/erl/deterministic/is_type_guard_tests.erl similarity index 100% rename from src/test/erl/is_type_guard_tests.erl rename to src/test/erl/deterministic/is_type_guard_tests.erl diff --git a/src/test/erl/is_type_tests.erl b/src/test/erl/deterministic/is_type_tests.erl similarity index 100% rename from src/test/erl/is_type_tests.erl rename to src/test/erl/deterministic/is_type_tests.erl diff --git a/src/test/erl/lc2_tests.erl b/src/test/erl/deterministic/lc2_tests.erl similarity index 100% rename from src/test/erl/lc2_tests.erl rename to src/test/erl/deterministic/lc2_tests.erl diff --git a/src/test/erl/lc_stack_tests.erl b/src/test/erl/deterministic/lc_stack_tests.erl similarity index 100% rename from src/test/erl/lc_stack_tests.erl rename to src/test/erl/deterministic/lc_stack_tests.erl diff --git a/src/test/erl/lc_tests.erl b/src/test/erl/deterministic/lc_tests.erl similarity index 100% rename from src/test/erl/lc_tests.erl rename to src/test/erl/deterministic/lc_tests.erl diff --git a/src/test/erl/list_diff_tests.erl b/src/test/erl/deterministic/list_diff_tests.erl similarity index 100% rename from src/test/erl/list_diff_tests.erl rename to src/test/erl/deterministic/list_diff_tests.erl diff --git a/src/test/erl/literal_tests.erl b/src/test/erl/deterministic/literal_tests.erl similarity index 100% rename from src/test/erl/literal_tests.erl rename to src/test/erl/deterministic/literal_tests.erl diff --git a/src/test/erl/pdict_tests.erl b/src/test/erl/deterministic/pdict_tests.erl similarity index 100% rename from src/test/erl/pdict_tests.erl rename to src/test/erl/deterministic/pdict_tests.erl diff --git a/src/test/erl/round_tests.erl b/src/test/erl/deterministic/round_tests.erl similarity index 100% rename from src/test/erl/round_tests.erl rename to src/test/erl/deterministic/round_tests.erl diff --git a/src/test/erl/sizes_tests.erl b/src/test/erl/deterministic/sizes_tests.erl similarity index 100% rename from src/test/erl/sizes_tests.erl rename to src/test/erl/deterministic/sizes_tests.erl diff --git a/src/test/erl/utf_tests.erl b/src/test/erl/deterministic/utf_tests.erl similarity index 100% rename from src/test/erl/utf_tests.erl rename to src/test/erl/deterministic/utf_tests.erl diff --git a/src/test/erl/binary_tests.erl b/src/test/erl/triq/binary_tests.erl similarity index 100% rename from src/test/erl/binary_tests.erl rename to src/test/erl/triq/binary_tests.erl diff --git a/src/test/erl/erjang_test.erl b/src/test/erl/triq/erjang_test.erl similarity index 100% rename from src/test/erl/erjang_test.erl rename to src/test/erl/triq/erjang_test.erl diff --git a/src/test/erl/ets_test.erl b/src/test/erl/triq/ets_test.erl similarity index 100% rename from src/test/erl/ets_test.erl rename to src/test/erl/triq/ets_test.erl diff --git a/src/test/erl/file_write_test.erl b/src/test/erl/triq/file_write_test.erl similarity index 100% rename from src/test/erl/file_write_test.erl rename to src/test/erl/triq/file_write_test.erl diff --git a/src/test/java/erjang/AbstractErjangTestCase.java b/src/test/java/erjang/AbstractErjangTestCase.java index f23e78b2..52681342 100644 --- a/src/test/java/erjang/AbstractErjangTestCase.java +++ b/src/test/java/erjang/AbstractErjangTestCase.java @@ -14,9 +14,6 @@ public abstract class AbstractErjangTestCase extends TestCase { protected File file; - public AbstractErjangTestCase() { - } - public AbstractErjangTestCase(File file) { super(file.getName()); this.file = file; @@ -31,84 +28,4 @@ public void setFile(File file) { this.file = file; this.setName(file.getName()); } - - protected static String getClassContent(Class clazz, File file) { - StringBuffer s = new StringBuffer(); - String name = getClassName(file); - String path = getPath(file); - - s.append(getPackage()); - s.append(getImports()); - s.append(getClassStart(clazz, name)); - s.append(getConstructor(name, path)); - s.append(getSuite(name)); - s.append(getClassEnd()); - - return s.toString(); - } - - protected static String getPackage() { - return "package erjang;\n\n"; - } - - protected static String getImports() { - StringBuffer s = new StringBuffer(); - - s.append("import junit.framework.TestSuite;\n"); - s.append("import junit.framework.Test;\n\n"); - - return s.toString(); - } - - public static String getClassName(File file) { - String name = file.getName(); - name = name.replace('.', '_'); - name = name.replace('-', '_'); - - return name + "_TEST"; - } - - protected static String getPath(File file) { - String path = file.getAbsolutePath(); - - //Windows backslash hack... - path = path.replace("\\", "\\\\"); - - return path; - } - - protected static String getClassStart(Class clazz, String name) { - return "public class " + name + " extends " + clazz.getName() + " {\n\n"; - } - - protected static String getConstructor(String name, String path) { - StringBuffer s = new StringBuffer(); - - s.append("\tpublic " + name + "() {\n"); - s.append("\t\tsuper(\"" + path + "\");\n"); - s.append("\t}\n\n"); - - return s.toString(); - } - - protected static String getSuite(String name) { - StringBuffer s = new StringBuffer(); - - //backup: generate as suite: will we need to group the tests somehow? - /*s.append("\tpublic static Test suite() {\n"); - s.append("\t\tTestSuite ts = new TestSuite();\n"); - s.append("\\ttts.addTest(new " + name + "());\n"); - s.append("\t\treturn ts;\n"); - s.append("\t}\n");*/ - - s.append("\tpublic static Test suite() {\n"); - s.append("\t\treturn new " + name + "();\n"); - s.append("\t}\n"); - - return s.toString(); - } - - protected static String getClassEnd() { - return "}"; - } } diff --git a/src/test/java/erjang/AllTests.java b/src/test/java/erjang/AllTests.java index b68820bd..5a35e293 100644 --- a/src/test/java/erjang/AllTests.java +++ b/src/test/java/erjang/AllTests.java @@ -44,16 +44,14 @@ public static Test suite() { TestSuite otpCompileSuite = new TestSuite("Compiling OTP"); //$JUnit-BEGIN$ - Map> testsOTP = new HashMap>(); - find_files(testsOTP, new File(OTP_HOME), ".beam"); - buildTestHiearchie(testsOTP, otpCompileSuite, TestCompileFile.class); + //find_beam_files(otpCompileSuite, new File(OTP_HOME)); //$JUnit-END$ suite.addTest(otpCompileSuite); TestSuite coverageRunSuite = new TestSuite("Coverage run tests"); //$JUnit-BEGIN$ Map> testsErl = new HashMap>(); - find_files(testsErl, new File("src/test/erl"), ".erl"); + find_files(testsErl, new File("src/test/erl/deterministic"), ".erl"); buildTestHiearchie(testsErl, coverageRunSuite, TestRunFile.class); //$JUnit-END$ suite.addTest(coverageRunSuite); @@ -109,7 +107,7 @@ public static void main(String[] args) { generateTestClasses(args[0], testsOTP, TestCompileFile.class); Map> testsErl = new HashMap>(); - find_files(testsErl, new File("src/test/erl"), ".erl"); + find_files(testsErl, new File("src/test/erl/deterministic"), ".erl"); generateTestClasses(args[0], testsErl, TestRunFile.class); } @@ -117,8 +115,8 @@ protected static void generateTestClasses(String path, Map> tes Class clazz) { for (File key : tests.keySet()) { for (File sub : tests.get(key)) { - String name = AbstractErjangTestCase.getClassName(sub); - String content = AbstractErjangTestCase.getClassContent(clazz, sub); + String name = TestClassGenerator.classNameFor(sub); + String content = TestClassGenerator.generateClassSource(clazz, sub); try { File file = new File(path + "/" + name + ".java"); diff --git a/src/test/java/erjang/TestClassGenerator.java b/src/test/java/erjang/TestClassGenerator.java new file mode 100644 index 00000000..f8690988 --- /dev/null +++ b/src/test/java/erjang/TestClassGenerator.java @@ -0,0 +1,104 @@ +/** + * This file is part of Erjang - A JVM-based Erlang VM + * + * Copyright (c) 2009 by Trifork + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ + +package erjang; + +import java.io.File; + +public abstract class TestClassGenerator { + + protected static String generateClassSource(Class clazz, File file) { + StringBuffer s = new StringBuffer(); + String name = classNameFor(file); + String path = getPath(file); + + s.append(getPackage()); + s.append(getImports()); + s.append(getClassStart(clazz, name)); + s.append(getConstructor(name, path)); + s.append(getSuite(name)); + s.append(getClassEnd()); + + return s.toString(); + } + + protected static String getPackage() { + return "package erjang;\n\n"; + } + + protected static String getImports() { + StringBuffer s = new StringBuffer(); + + s.append("import junit.framework.TestSuite;\n"); + s.append("import junit.framework.Test;\n\n"); + + return s.toString(); + } + + public static String classNameFor(File file) { + String name = file.getName(); + name = name.replace('.', '_'); + name = name.replace('-', '_'); + + return name + "_TEST"; + } + + protected static String getPath(File file) { + String path = file.getAbsolutePath(); + + //Windows backslash hack... + path = path.replace("\\", "\\\\"); + + return path; + } + + protected static String getClassStart(Class clazz, String name) { + return "public class " + name + " extends " + clazz.getName() + " {\n\n"; + } + + protected static String getConstructor(String name, String path) { + StringBuffer s = new StringBuffer(); + + s.append("\tpublic " + name + "() {\n"); + s.append("\t\tsuper(\"" + path + "\");\n"); + s.append("\t}\n\n"); + + return s.toString(); + } + + protected static String getSuite(String name) { + StringBuffer s = new StringBuffer(); + + //backup: generate as suite: will we need to group the tests somehow? + /*s.append("\tpublic static Test suite() {\n"); + s.append("\t\tTestSuite ts = new TestSuite();\n"); + s.append("\\ttts.addTest(new " + name + "());\n"); + s.append("\t\treturn ts;\n"); + s.append("\t}\n");*/ + + s.append("\tpublic static Test suite() {\n"); + s.append("\t\treturn new " + name + "();\n"); + s.append("\t}\n"); + + return s.toString(); + } + + protected static String getClassEnd() { + return "}"; + } +} \ No newline at end of file diff --git a/src/test/java/erjang/TestRunFile.java b/src/test/java/erjang/TestRunFile.java index 41be0c89..60361e38 100644 --- a/src/test/java/erjang/TestRunFile.java +++ b/src/test/java/erjang/TestRunFile.java @@ -47,10 +47,6 @@ public class TestRunFile extends AbstractErjangTestCase { static final String RUN_WRAPPER_HOME = "src/test/erl"; static final String BEAM_DIR = "target/test-beam"; - public TestRunFile() { - super(); - } - public TestRunFile(String name) { super(name); }