You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2017/10/12 00:11:19 UTC
[2/2] groovy git commit: GROOVY-8347: AutoFinalTransformBlackBoxTest:
Added @AutoFinal(enabled=false) testing (closes #615)
GROOVY-8347: AutoFinalTransformBlackBoxTest: Added @AutoFinal(enabled=false) testing (closes #615)
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/226f1d8f
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/226f1d8f
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/226f1d8f
Branch: refs/heads/GROOVY_2_6_X
Commit: 226f1d8fd47e2baadf8f912d7507a07e499c1f45
Parents: d9a9518
Author: mgroovy <31...@users.noreply.github.com>
Authored: Tue Oct 10 19:03:43 2017 +0200
Committer: paulk <pa...@asert.com.au>
Committed: Thu Oct 12 10:11:03 2017 +1000
----------------------------------------------------------------------
.../AutoFinalTransformBlackBoxTest.groovy | 33 +++++++++++++++-----
1 file changed, 25 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/226f1d8f/src/test/org/codehaus/groovy/transform/AutoFinalTransformBlackBoxTest.groovy
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/transform/AutoFinalTransformBlackBoxTest.groovy b/src/test/org/codehaus/groovy/transform/AutoFinalTransformBlackBoxTest.groovy
index d9625ed..4e7bf26 100644
--- a/src/test/org/codehaus/groovy/transform/AutoFinalTransformBlackBoxTest.groovy
+++ b/src/test/org/codehaus/groovy/transform/AutoFinalTransformBlackBoxTest.groovy
@@ -23,6 +23,8 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.JUnit4
+import java.util.Map.Entry
+
/**
* Tests for the {@code @AutoFinal} AST transform.
@@ -63,42 +65,57 @@ class AutoFinalTransformBlackBoxTest extends CompilableTestSupport {
return param0
}
"""
- final script = autoFinalTestScript(true, classPart, "final foo = new $autoFinalTestClassName(); foo.foo()" )
+ final script = autoFinalTestScript(true, [:], classPart, "final foo = new $autoFinalTestClassName(); foo.foo()" )
assert script.contains('@AutoFinal')
assertScript(script)
}
-
void assertAutoFinalClassTestScript(final String paramName, final String classPart) {
assertAutoFinalTestScriptWithAnnotation(paramName, classPart)
- assertAutoFinalTestScriptWithoutAnnotation(paramName, classPart)
+ assertAutoFinalTestScriptWithoutAnnotation(classPart)
+ assertAutoFinalTestScriptWithDisabledAnnotation(classPart)
}
+ //
// Checks Groovy compiler behavior when putting the passed classPart into an @AutoFinal annotated class
+ //
+
+ // @AutoFinal
void assertAutoFinalTestScriptWithAnnotation(final String paramName, final String classPart) {
- final script = autoFinalTestScript(true, classPart)
+ final script = autoFinalTestScript(true, [:], classPart)
assert script.contains('@AutoFinal')
final result = shouldNotCompile(script)
println "\nassertAutoFinalTestScript result: |$result|\n\n"
assert result.contains("The parameter [$paramName] is declared final but is reassigned")
}
- void assertAutoFinalTestScriptWithoutAnnotation(final String paramName, final String classPart) {
- final script = autoFinalTestScript(false, classPart)
+ // @AutoFinal(enabled=false)
+ void assertAutoFinalTestScriptWithDisabledAnnotation(final String classPart) {
+ final script = autoFinalTestScript(true, [enabled:false], classPart)
+ assert script.contains('@AutoFinal(enabled=false)')
+ shouldCompile(script)
+ }
+
+ // No annotation
+ void assertAutoFinalTestScriptWithoutAnnotation(final String classPart) {
+ final script = autoFinalTestScript(false, null, classPart)
assert !script.contains('@AutoFinal')
shouldCompile(script)
}
- String autoFinalTestScript(final boolean autoFinalAnnotationQ, final String classPart, final String scriptPart = '') {
+
+ String autoFinalTestScript(final boolean autoFinalAnnotationQ, final Map<String,Object> autoFinalAnnotationParamaters, final String classPart, final String scriptPart = '') {
+ assert !autoFinalAnnotationQ || (autoFinalAnnotationParamaters != null); assert classPart
+ final String autoFinalAnnotationParamatersTerm = autoFinalAnnotationParamaters ? "(${autoFinalAnnotationParamaters.collect { final Entry<String, Object> e -> "$e.key=$e.value" }.join(', ')})" : ''
final String script = """
import groovy.transform.AutoFinal
import groovy.transform.ASTTest
import static org.codehaus.groovy.control.CompilePhase.SEMANTIC_ANALYSIS
import static java.lang.reflect.Modifier.isFinal
- ${autoFinalAnnotationQ ? '@AutoFinal' : ''}
+ ${autoFinalAnnotationQ ? "@AutoFinal${autoFinalAnnotationParamatersTerm}" : ''}
class $autoFinalTestClassName {
$classPart
}