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 2021/11/28 04:15:44 UTC

[groovy] branch master updated: Add test cases for `CompilerConfiguration`

This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/master by this push:
     new cd10133  Add test cases for `CompilerConfiguration`
cd10133 is described below

commit cd101330523f241b615e4d9211851303571bc6c8
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sun Nov 28 12:11:51 2021 +0800

    Add test cases for `CompilerConfiguration`
---
 .../groovy/control/CompilerConfiguration.java      | 10 +++
 .../groovy/control/CompilerConfigurationTest.java  | 81 ++++++++++++++++++++++
 2 files changed, 91 insertions(+)

diff --git a/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java b/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java
index 20f76e3..d018565 100644
--- a/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java
+++ b/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java
@@ -305,6 +305,16 @@ public class CompilerConfiguration {
         public void setWarningLevel(final int level) {
             throw new UnsupportedOperationException();
         }
+
+        @Override
+        public void setLogClassgen(boolean logClassgen) {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public void setLogClassgenStackTraceMaxDepth(int logClassgenStackTraceMaxDepth) {
+            throw new UnsupportedOperationException();
+        }
     };
 
     /**
diff --git a/src/test/org/codehaus/groovy/control/CompilerConfigurationTest.java b/src/test/org/codehaus/groovy/control/CompilerConfigurationTest.java
index 6c34821..0d2cf3e 100644
--- a/src/test/org/codehaus/groovy/control/CompilerConfigurationTest.java
+++ b/src/test/org/codehaus/groovy/control/CompilerConfigurationTest.java
@@ -31,6 +31,8 @@ import java.util.Properties;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThrows;
+import static org.junit.Assert.assertTrue;
 
 /**
  * Make sure CompilerConfiguration works.
@@ -119,6 +121,8 @@ public final class CompilerConfigurationTest {
         init.addCompilationCustomizers(new ImportCustomizer().addStarImports("groovy.transform"));
         ParserPluginFactory pluginFactory = ParserPluginFactory.antlr4();
         init.setPluginFactory(pluginFactory);
+        init.setLogClassgen(true);
+        init.setLogClassgenStackTraceMaxDepth(100);
 
         assertEquals(WarningMessage.POSSIBLE_ERRORS, init.getWarningLevel());
         assertEquals(Boolean.TRUE, init.getDebug());
@@ -137,6 +141,8 @@ public final class CompilerConfigurationTest {
         assertEquals("somevalue", init.getJointCompilationOptions().get("somekey"));
         assertEquals(pluginFactory, init.getPluginFactory());
         assertEquals(1, init.getCompilationCustomizers().size());
+        assertTrue(init.isLogClassgen());
+        assertEquals(100, init.getLogClassgenStackTraceMaxDepth());
 
         //
 
@@ -157,6 +163,8 @@ public final class CompilerConfigurationTest {
         assertEquals(".jpp", config.getDefaultScriptExtension());
         assertEquals("somevalue", config.getJointCompilationOptions().get("somekey"));
         assertEquals(pluginFactory, config.getPluginFactory());
+        assertTrue(config.isLogClassgen());
+        assertEquals(100, config.getLogClassgenStackTraceMaxDepth());
         // TODO GROOVY-9585: re-enable below assertion once prod code is fixed
 //        assertEquals(1, config.getCompilationCustomizers().size());
     }
@@ -178,6 +186,11 @@ public final class CompilerConfigurationTest {
         init.setClasspath("");
         File targetDirectory = new File("A wandering path");
         init.setTargetDirectory(targetDirectory);
+        init.setLogClassgen(true);
+        init.setLogClassgenStackTraceMaxDepth(100);
+        ParserPluginFactory pluginFactory = ParserPluginFactory.antlr4();
+        init.setPluginFactory(pluginFactory);
+        init.setDefaultScriptExtension(".jpp");
 
         assertEquals(WarningMessage.POSSIBLE_ERRORS, init.getWarningLevel());
         assertEquals(Boolean.FALSE, init.getDebug());
@@ -191,6 +204,10 @@ public final class CompilerConfigurationTest {
         assertEquals(Boolean.FALSE, init.getRecompileGroovySource());
         assertEquals(Collections.emptyList(), init.getClasspath());
         assertEquals(targetDirectory, init.getTargetDirectory());
+        assertTrue(init.isLogClassgen());
+        assertEquals(100, init.getLogClassgenStackTraceMaxDepth());
+        assertEquals(pluginFactory, init.getPluginFactory());
+        assertEquals(".jpp", init.getDefaultScriptExtension());
 
         //
 
@@ -207,5 +224,69 @@ public final class CompilerConfigurationTest {
         assertEquals(Boolean.FALSE, config.getRecompileGroovySource());
         assertEquals(Collections.emptyList(), config.getClasspath());
         assertEquals(targetDirectory, config.getTargetDirectory());
+        assertTrue(config.isLogClassgen());
+        assertEquals(100, config.getLogClassgenStackTraceMaxDepth());
+        assertEquals(pluginFactory, config.getPluginFactory());
+        assertEquals(".jpp", config.getDefaultScriptExtension());
+    }
+
+    @Test
+    public void testModifyingDefaultConfiguration() {
+        CompilerConfiguration config = CompilerConfiguration.DEFAULT;
+
+        assertThrows(UnsupportedOperationException.class, () -> {
+            config.setWarningLevel(WarningMessage.POSSIBLE_ERRORS);
+        });
+        assertThrows(UnsupportedOperationException.class, () -> {
+            config.setDebug(false);
+        });
+        assertThrows(UnsupportedOperationException.class, () -> {
+            config.setParameters(false);
+        });
+        assertThrows(UnsupportedOperationException.class, () -> {
+            config.setVerbose(true);
+        });
+        assertThrows(UnsupportedOperationException.class, () -> {
+            config.setTolerance(55);
+        });
+        assertThrows(UnsupportedOperationException.class, () -> {
+            config.setMinimumRecompilationInterval(975);
+        });
+        assertThrows(UnsupportedOperationException.class, () -> {
+            config.setScriptBaseClass("");
+        });
+        assertThrows(UnsupportedOperationException.class, () -> {
+            config.setSourceEncoding("Gutenberg");
+        });
+        assertThrows(UnsupportedOperationException.class, () -> {
+            config.setTargetBytecode(CompilerConfiguration.JDK5);
+        });
+        assertThrows(UnsupportedOperationException.class, () -> {
+            config.setRecompileGroovySource(false);
+        });
+        assertThrows(UnsupportedOperationException.class, () -> {
+            config.setClasspath("");
+        });
+        assertThrows(UnsupportedOperationException.class, () -> {
+            File targetDirectory = new File("A wandering path");
+            config.setTargetDirectory(targetDirectory);
+        });
+        assertThrows(UnsupportedOperationException.class, () -> {
+            config.setLogClassgen(true);
+        });
+        assertThrows(UnsupportedOperationException.class, () -> {
+            config.setLogClassgenStackTraceMaxDepth(100);
+        });
+        assertThrows(UnsupportedOperationException.class, () -> {
+            ParserPluginFactory pluginFactory = ParserPluginFactory.antlr4();
+            config.setPluginFactory(pluginFactory);
+        });
+        assertThrows(UnsupportedOperationException.class, () -> {
+            config.setDefaultScriptExtension(".jpp");
+        });
+        assertThrows(UnsupportedOperationException.class, () -> {
+            ImportCustomizer ic = new ImportCustomizer();
+            config.addCompilationCustomizers(ic);
+        });
     }
 }