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:11:56 UTC
[2/2] groovy git commit: Test serializable compatibility between
2.4.x and 2.5.x+
Test serializable compatibility between 2.4.x and 2.5.x+
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/337726be
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/337726be
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/337726be
Branch: refs/heads/GROOVY_2_5_X
Commit: 337726be5dd9f33d8235755da191370d5f4bcb9a
Parents: 5975959
Author: sunlan <su...@apache.org>
Authored: Tue Apr 3 16:07:04 2018 +0800
Committer: sunlan <su...@apache.org>
Committed: Tue Apr 3 16:11:43 2018 +0800
----------------------------------------------------------------------
.../groovy/SerializableCompatibilityTest.groovy | 48 ++++++++++++++++++++
1 file changed, 48 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/337726be/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..c0704c1
--- /dev/null
+++ b/src/test/groovy/SerializableCompatibilityTest.groovy
@@ -0,0 +1,48 @@
+/*
+ * 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'
+ }
+ }
+}
+