diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml
index 715d7d9..98ee6c1 100644
--- a/.github/workflows/pipeline.yml
+++ b/.github/workflows/pipeline.yml
@@ -43,13 +43,32 @@ jobs:
matrix:
# build against supported Java LTS versions:
java: [ 1.7, 8, 11 ]
- name: Java ${{ matrix.java }} Compile
+ name: Java ${{ matrix.java }}
steps:
- uses: actions/checkout@v2
- name: Setup java
uses: actions/setup-java@v1
with:
java-version: ${{ matrix.java }}
- - run: mvn clean compile -Dmaven.compiler.source=${{ matrix.java }} -Dmaven.compiler.target=${{ matrix.java }} -Dmaven.test.skip=true -Dmaven.site.skip=true -Dmaven.javadoc.skip=true
- - run: mvn test -Dmaven.compiler.source=${{ matrix.java }} -Dmaven.compiler.target=${{ matrix.java }} -Dmaven.test.skip=true -Dmaven.site.skip=true -Dmaven.javadoc.skip=true
-
\ No newline at end of file
+ - name: Compile Java ${{ matrix.java }}
+ run: mvn clean compile -Dmaven.compiler.source=${{ matrix.java }} -Dmaven.compiler.target=${{ matrix.java }} -Dmaven.test.skip=true -Dmaven.site.skip=true -Dmaven.javadoc.skip=true
+ - name: Run Tests ${{ matrix.java }}
+ run: |
+ mvn test -Dmaven.compiler.source=${{ matrix.java }} -Dmaven.compiler.target=${{ matrix.java }}
+ - name: Build Test Report ${{ matrix.java }}
+ if: ${{ always() }}
+ run: |
+ mvn surefire-report:report-only -Dmaven.compiler.source=${{ matrix.java }} -Dmaven.compiler.target=${{ matrix.java }}
+ mvn site -DgenerateReports=false -Dmaven.compiler.source=${{ matrix.java }} -Dmaven.compiler.target=${{ matrix.java }}
+ - name: Upload Test Results ${{ matrix.java }}
+ if: ${{ always() }}
+ uses: actions/upload-artifact@v1
+ with:
+ name: Test Results ${{ matrix.java }}
+ path: target/surefire-reports/
+ - name: Upload Test Report ${{ matrix.java }}
+ if: ${{ always() }}
+ uses: actions/upload-artifact@v1
+ with:
+ name: Test Report ${{ matrix.java }}
+ path: target/site/
\ No newline at end of file
diff --git a/src/test/java/org/json/junit/JSONObjectTest.java b/src/test/java/org/json/junit/JSONObjectTest.java
index 5cfc8de..c24d138 100644
--- a/src/test/java/org/json/junit/JSONObjectTest.java
+++ b/src/test/java/org/json/junit/JSONObjectTest.java
@@ -1856,10 +1856,12 @@ public class JSONObjectTest {
" ]\n" +
"}";
JSONObject jsonObject = new JSONObject(jsonObject0Str);
- assertEquals("toString()",jsonObject0Str, jsonObject.toString());
- assertEquals("toString(0)",jsonObject0Str, jsonObject.toString(0));
- assertEquals("toString(1)",jsonObject1Str, jsonObject.toString(1));
- assertEquals("toString(4)",jsonObject4Str, jsonObject.toString(4));
+ // contents are tested in other methods, in this case just validate the spacing by
+ // checking length
+ assertEquals("toString() length",jsonObject0Str.length(), jsonObject.toString().length());
+ assertEquals("toString(0) length",jsonObject0Str.length(), jsonObject.toString(0).length());
+ assertEquals("toString(1) length",jsonObject1Str.length(), jsonObject.toString(1).length());
+ assertEquals("toString(4) length",jsonObject4Str.length(), jsonObject.toString(4).length());
JSONObject jo = new JSONObject().put("TABLE", new JSONObject().put("yhoo", new JSONObject()));
assertEquals("toString(2)","{\"TABLE\": {\"yhoo\": {}}}", jo.toString(2));
@@ -2630,9 +2632,10 @@ public class JSONObjectTest {
JSONObject jsonObject = new JSONObject(str);
try (StringWriter stringWriter = new StringWriter()) {
String actualStr = jsonObject.write(stringWriter).toString();
- assertTrue("write() expected " +expectedStr+
- " but found " +actualStr,
- expectedStr.equals(actualStr));
+ // key order may change. verify length and individual key content
+ assertEquals("length", expectedStr.length(), actualStr.length());
+ assertTrue("key1", actualStr.contains("\"key1\":\"value1\""));
+ assertTrue("key2", actualStr.contains("\"key2\":[1,2,3]"));
}
}
@@ -2734,16 +2737,25 @@ public class JSONObjectTest {
" ]\n" +
" }";
JSONObject jsonObject = new JSONObject(str0);
- String expectedStr = str0;
try (StringWriter stringWriter = new StringWriter();) {
String actualStr = jsonObject.write(stringWriter,0,0).toString();
- assertEquals(expectedStr, actualStr);
+
+ assertEquals("length", str0.length(), actualStr.length());
+ assertTrue("key1", actualStr.contains("\"key1\":\"value1\""));
+ assertTrue("key2", actualStr.contains("\"key2\":[1,false,3.14]"));
}
-
- expectedStr = str2;
+
try (StringWriter stringWriter = new StringWriter();) {
String actualStr = jsonObject.write(stringWriter,2,1).toString();
- assertEquals(expectedStr, actualStr);
+
+ assertEquals("length", str2.length(), actualStr.length());
+ assertTrue("key1", actualStr.contains(" \"key1\": \"value1\""));
+ assertTrue("key2", actualStr.contains(" \"key2\": [\n" +
+ " 1,\n" +
+ " false,\n" +
+ " 3.14\n" +
+ " ]")
+ );
}
}
@@ -2978,9 +2990,9 @@ public class JSONObjectTest {
@Test
public void testSingletonBean() {
final JSONObject jo = new JSONObject(Singleton.getInstance());
-// assertEquals(jo.keySet().toString(), 1, jo.length());
-// assertEquals(0, jo.get("someInt"));
-// assertEquals(null, jo.opt("someString"));
+ assertEquals(jo.keySet().toString(), 1, jo.length());
+ assertEquals(0, jo.get("someInt"));
+ assertEquals(null, jo.opt("someString"));
// Update the singleton values
Singleton.getInstance().setSomeInt(42);
@@ -2991,8 +3003,8 @@ public class JSONObjectTest {
assertEquals("Something", jo2.get("someString"));
// ensure our original jo hasn't changed.
-// assertEquals(0, jo.get("someInt"));
-// assertEquals(null, jo.opt("someString"));
+ assertEquals(0, jo.get("someInt"));
+ assertEquals(null, jo.opt("someString"));
}
/**
@@ -3002,9 +3014,9 @@ public class JSONObjectTest {
@Test
public void testSingletonEnumBean() {
final JSONObject jo = new JSONObject(SingletonEnum.getInstance());
-// assertEquals(jo.keySet().toString(), 1, jo.length());
-// assertEquals(0, jo.get("someInt"));
-// assertEquals(null, jo.opt("someString"));
+ assertEquals(jo.keySet().toString(), 1, jo.length());
+ assertEquals(0, jo.get("someInt"));
+ assertEquals(null, jo.opt("someString"));
// Update the singleton values
SingletonEnum.getInstance().setSomeInt(42);
@@ -3015,8 +3027,8 @@ public class JSONObjectTest {
assertEquals("Something", jo2.get("someString"));
// ensure our original jo hasn't changed.
-// assertEquals(0, jo.get("someInt"));
-// assertEquals(null, jo.opt("someString"));
+ assertEquals(0, jo.get("someInt"));
+ assertEquals(null, jo.opt("someString"));
}
/**
diff --git a/src/test/java/org/json/junit/JunitTestSuite.java b/src/test/java/org/json/junit/JunitTestSuite.java
deleted file mode 100644
index 1281625..0000000
--- a/src/test/java/org/json/junit/JunitTestSuite.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.json.junit;
-
-/*
-Copyright (c) 2020 JSON.org
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-The Software shall be used for Good, not Evil.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-@RunWith(Suite.class)
-@Suite.SuiteClasses({
- CDLTest.class,
- CookieTest.class,
- CookieListTest.class,
- PropertyTest.class,
- XMLTest.class,
- JSONMLTest.class,
- HTTPTest.class,
- JSONStringerTest.class,
- JSONObjectTest.class,
- JSONObjectLocaleTest.class,
- JSONArrayTest.class,
- EnumTest.class,
- JSONPointerTest.class,
- JSONStringTest.class,
- JSONTokenerTest.class,
- XMLConfigurationTest.class
-})
-public class JunitTestSuite {
-}
diff --git a/src/test/java/org/json/junit/TestRunner.java b/src/test/java/org/json/junit/TestRunner.java
deleted file mode 100644
index 3b4aeef..0000000
--- a/src/test/java/org/json/junit/TestRunner.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.json.junit;
-
-/*
-Copyright (c) 2020 JSON.org
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-The Software shall be used for Good, not Evil.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-import org.junit.runner.JUnitCore;
-import org.junit.runner.Result;
-import org.junit.runner.notification.Failure;
-
-/**
- * Invoke this class main method if you want to run unit tests from the
- * command line. If successful, will print "true" to stdout.
- */
-public class TestRunner {
- public static void main(String[] args) {
- Result result = JUnitCore.runClasses(JunitTestSuite.class);
- for (Failure failure : result.getFailures()) {
- System.out.println(failure.toString());
- }
- System.out.println(result.wasSuccessful());
- }
-}
\ No newline at end of file
diff --git a/src/test/java/org/json/junit/XMLConfigurationTest.java b/src/test/java/org/json/junit/XMLConfigurationTest.java
index 6919b31..14c4ba0 100755
--- a/src/test/java/org/json/junit/XMLConfigurationTest.java
+++ b/src/test/java/org/json/junit/XMLConfigurationTest.java
@@ -29,6 +29,13 @@ import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@@ -369,16 +376,11 @@ public class XMLConfigurationTest {
@Test
public void shouldHandleContentNoArraytoString() {
String expectedStr =
- "{\"addresses\":{\"address\":{\"name\":\"\",\"nocontent\":\"\",\""+
- "altContent\":\">\"},\"xsi:noNamespaceSchemaLocation\":\"test.xsd\",\""+
- "xmlns:xsi\":\"http://www.w3.org/2001/XMLSchema-instance\"}}";
+ "{\"addresses\":{\"altContent\":\">\"}}";
JSONObject expectedJsonObject = new JSONObject(expectedStr);
XMLParserConfiguration config = new XMLParserConfiguration("altContent");
String finalStr = XML.toString(expectedJsonObject, null, config);
- String expectedFinalStr = "