You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2018/04/03 08:07:28 UTC

groovy git commit: Prepare testing serializable compatibility

Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_4_X 325f102b8 -> 45be328ef


Prepare testing serializable compatibility


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/45be328e
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/45be328e
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/45be328e

Branch: refs/heads/GROOVY_2_4_X
Commit: 45be328ef50df408fbc73fbe6dde8b8fd55f57bd
Parents: 325f102
Author: sunlan <su...@apache.org>
Authored: Tue Apr 3 16:07:04 2018 +0800
Committer: sunlan <su...@apache.org>
Committed: Tue Apr 3 16:07:23 2018 +0800

----------------------------------------------------------------------
 .../groovy/SerializableCompatibilityTest.groovy | 47 ++++++++++++++++++++
 1 file changed, 47 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/45be328e/src/test/groovy/SerializableCompatibilityTest.groovy
----------------------------------------------------------------------
diff --git a/src/test/groovy/SerializableCompatibilityTest.groovy b/src/test/groovy/SerializableCompatibilityTest.groovy
new file mode 100644
index 0000000..78a0bbb
--- /dev/null
+++ b/src/test/groovy/SerializableCompatibilityTest.groovy
@@ -0,0 +1,47 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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 groovy
+
+import groovy.bugs.TestSupport
+
+class SerializableCompatibilityTest extends TestSupport {
+    void testSerialize() {
+        def obj = new GroovyRuntimeException('boom')
+        assert obj instanceof GroovyRuntimeException
+        assert obj.message == 'boom'
+
+        def out = new ByteArrayOutputStream();
+        out.withObjectOutputStream{
+            it.writeObject(obj)
+        }
+
+        println out.toByteArray().encodeBase64().toString()
+    }
+
+    void testDeserialize() {
+        // generated by testSerialize
+        def serializedObjectStr_2_4_X = 'rO0ABXNyACJncm9vdnkubGFuZy5Hcm9vdnlSdW50aW1lRXhjZXB0aW9uM1jWw9touJUCAAJMAAZtb2R1bGV0ACRMb3JnL2NvZGVoYXVzL2dyb292eS9hc3QvTW9kdWxlTm9kZTtMAARub2RldAAhTG9yZy9jb2RlaGF1cy9ncm9vdnkvYXN0L0FTVE5vZGU7eHIAGmphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9unl8GRwo0g+UCAAB4cgATamF2YS5sYW5nLkV4Y2VwdGlvbtD9Hz4aOxzEAgAAeHIAE2phdmEubGFuZy5UaHJvd2FibGXVxjUnOXe4ywMABEwABWNhdXNldAAVTGphdmEvbGFuZy9UaHJvd2FibGU7TAANZGV0YWlsTWVzc2FnZXQAEkxqYXZhL2xhbmcvU3RyaW5nO1sACnN0YWNrVHJhY2V0AB5bTGphdmEvbGFuZy9TdGFja1RyYWNlRWxlbWVudDtMABRzdXBwcmVzc2VkRXhjZXB0aW9uc3QAEExqYXZhL3V0aWwvTGlzdDt4cHEAfgAKdAAEYm9vbXVyAB5bTGphdmEubGFuZy5TdGFja1RyYWNlRWxlbWVudDsCRio8PP0iOQIAAHhwAAAAHHNyABtqYXZhLmxhbmcuU3RhY2tUcmFjZUVsZW1lbnRhCcWaJjbdhQIABEkACmxpbmVOdW1iZXJMAA5kZWNsYXJpbmdDbGFzc3EAfgAHTAAIZmlsZU5hbWVxAH4AB0wACm1ldGhvZE5hbWVxAH4AB3hw/////nQAKXN1bi5yZWZsZWN0Lk5hdGl2ZUNvbnN0cnVjdG9yQWNjZXNzb3JJbXBsdAAiTmF0aXZlQ29uc3RydWN0b3JBY2Nlc3NvckltcGwuamF2YXQADG5ld0luc3RhbmNlMHNxAH4ADgAAAD5xAH4AEHEAfgARdAALbmV3SW5z
 dGFuY2VzcQB+AA4AAAAtdAAtc3VuLnJlZmxlY3QuRGVsZWdhdGluZ0NvbnN0cnVjdG9yQWNjZXNzb3JJbXBsdAAmRGVsZWdhdGluZ0NvbnN0cnVjdG9yQWNjZXNzb3JJbXBsLmphdmFxAH4AFHNxAH4ADgAAAad0AB1qYXZhLmxhbmcucmVmbGVjdC5Db25zdHJ1Y3RvcnQAEENvbnN0cnVjdG9yLmphdmFxAH4AFHNxAH4ADgAAAFN0ADBvcmcuY29kZWhhdXMuZ3Jvb3Z5LnJlZmxlY3Rpb24uQ2FjaGVkQ29uc3RydWN0b3J0ABZDYWNoZWRDb25zdHJ1Y3Rvci5qYXZhdAAGaW52b2tlc3EAfgAOAAAAaXQAVG9yZy5jb2RlaGF1cy5ncm9vdnkucnVudGltZS5jYWxsc2l0ZS5Db25zdHJ1Y3RvclNpdGUkQ29uc3RydWN0b3JTaXRlTm9VbndyYXBOb0NvZXJjZXQAFENvbnN0cnVjdG9yU2l0ZS5qYXZhdAAPY2FsbENvbnN0cnVjdG9yc3EAfgAOAAAAO3QAMm9yZy5jb2RlaGF1cy5ncm9vdnkucnVudGltZS5jYWxsc2l0ZS5DYWxsU2l0ZUFycmF5dAASQ2FsbFNpdGVBcnJheS5qYXZhdAAWZGVmYXVsdENhbGxDb25zdHJ1Y3RvcnNxAH4ADgAAAO50ADVvcmcuY29kZWhhdXMuZ3Jvb3Z5LnJ1bnRpbWUuY2FsbHNpdGUuQWJzdHJhY3RDYWxsU2l0ZXQAFUFic3RyYWN0Q2FsbFNpdGUuamF2YXEAfgAic3EAfgAOAAAA+nEAfgAocQB+AClxAH4AInNxAH4ADgAAABh0AA1TZXJpYWxpemVUZXN0dAAUU2VyaWFsaXplVGVzdC5ncm9vdnl0AAR0ZXN0c3EAfgAO/////nQAJHN1bi5yZWZsZWN0Lk5hdGl2ZU1ldGhvZEFjY2Vzc29ySW1wbHQAHU5hd
 Gl2ZU1ldGhvZEFjY2Vzc29ySW1wbC5qYXZhdAAHaW52b2tlMHNxAH4ADgAAAD5xAH4AMHEAfgAxcQB+AB5zcQB+AA4AAAArdAAoc3VuLnJlZmxlY3QuRGVsZWdhdGluZ01ldGhvZEFjY2Vzc29ySW1wbHQAIURlbGVnYXRpbmdNZXRob2RBY2Nlc3NvckltcGwuamF2YXEAfgAec3EAfgAOAAAB8nQAGGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZHQAC01ldGhvZC5qYXZhcQB+AB5zcQB+AA4AAACwdAAYanVuaXQuZnJhbWV3b3JrLlRlc3RDYXNldAANVGVzdENhc2UuamF2YXQAB3J1blRlc3RzcQB+AA4AAACNcQB+ADtxAH4APHQAB3J1bkJhcmVzcQB+AA4AAAB6dAAcanVuaXQuZnJhbWV3b3JrLlRlc3RSZXN1bHQkMXQAD1Rlc3RSZXN1bHQuamF2YXQAB3Byb3RlY3RzcQB+AA4AAACOdAAaanVuaXQuZnJhbWV3b3JrLlRlc3RSZXN1bHRxAH4AQnQADHJ1blByb3RlY3RlZHNxAH4ADgAAAH1xAH4ARXEAfgBCdAADcnVuc3EAfgAOAAAAgXEAfgA7cQB+ADxxAH4ASHNxAH4ADgAAAPx0ABlqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRldAAOVGVzdFN1aXRlLmphdmFxAH4APXNxAH4ADgAAAPdxAH4AS3EAfgBMcQB+AEhzcQB+AA4AAABWdAAtb3JnLmp1bml0LmludGVybmFsLnJ1bm5lcnMuSlVuaXQzOENsYXNzUnVubmVydAAXSlVuaXQzOENsYXNzUnVubmVyLmphdmFxAH4ASHNxAH4ADgAAAIl0ABpvcmcuanVuaXQucnVubmVyLkpVbml0Q29yZXQADkpVbml0Q29yZS5qYXZhcQB+AEhzcQB+AA4AAABEdAAoY29tLmludGVsbGlqLmp1bm
 l0NC5KVW5pdDRJZGVhVGVzdFJ1bm5lcnQAGUpVbml0NElkZWFUZXN0UnVubmVyLmphdmF0ABNzdGFydFJ1bm5lcldpdGhBcmdzc3EAfgAOAAAAL3QAN2NvbS5pbnRlbGxpai5ydC5leGVjdXRpb24uanVuaXQuSWRlYVRlc3RSdW5uZXIkUmVwZWF0ZXJ0ABNJZGVhVGVzdFJ1bm5lci5qYXZhcQB+AFdzcQB+AA4AAADydAAsY29tLmludGVsbGlqLnJ0LmV4ZWN1dGlvbi5qdW5pdC5KVW5pdFN0YXJ0ZXJ0ABFKVW5pdFN0YXJ0ZXIuamF2YXQAFnByZXBhcmVTdHJlYW1zQW5kU3RhcnRzcQB+AA4AAABGcQB+AFxxAH4AXXQABG1haW5zcgAmamF2YS51dGlsLkNvbGxlY3Rpb25zJFVubW9kaWZpYWJsZUxpc3T8DyUxteyOEAIAAUwABGxpc3RxAH4ACXhyACxqYXZhLnV0aWwuQ29sbGVjdGlvbnMkVW5tb2RpZmlhYmxlQ29sbGVjdGlvbhlCAIDLXvceAgABTAABY3QAFkxqYXZhL3V0aWwvQ29sbGVjdGlvbjt4cHNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ0DAAFJAARzaXpleHAAAAAAdwQAAAAAeHEAfgBmeHBw'
+        new ByteArrayInputStream(serializedObjectStr_2_4_X.decodeBase64()).withObjectInputStream {
+            def newObj = it.readObject()
+            assert newObj instanceof GroovyRuntimeException
+            assert newObj.message == 'boom'
+        }
+    }
+}