From 66e397e3e50ae245251ad12ac8d59a540493afcb Mon Sep 17 00:00:00 2001 From: volodya-lombrozo Date: Tue, 8 Nov 2022 14:21:29 +0300 Subject: [PATCH 1/4] feat(#1223): add tests for future caching of optimization results --- .../java/org/eolang/maven/OptimizeMojo.java | 5 + .../org/eolang/maven/OptimizeMojoTest.java | 113 +++++++++++++++++- .../org/eolang/maven/optimize/main.xml | 20 ++++ 3 files changed, 132 insertions(+), 6 deletions(-) create mode 100644 eo-maven-plugin/src/test/resources/org/eolang/maven/optimize/main.xml diff --git a/eo-maven-plugin/src/main/java/org/eolang/maven/OptimizeMojo.java b/eo-maven-plugin/src/main/java/org/eolang/maven/OptimizeMojo.java index 44b4b21d85..356ca468ab 100644 --- a/eo-maven-plugin/src/main/java/org/eolang/maven/OptimizeMojo.java +++ b/eo-maven-plugin/src/main/java/org/eolang/maven/OptimizeMojo.java @@ -76,6 +76,11 @@ public final class OptimizeMojo extends SafeMojo { */ public static final String DIR = "03-optimize"; + /** + * Subdirectory for optimized cache. + */ + public static final String OPTIMIZED = "optimized"; + /** * Parsing train with XSLs. * diff --git a/eo-maven-plugin/src/test/java/org/eolang/maven/OptimizeMojoTest.java b/eo-maven-plugin/src/test/java/org/eolang/maven/OptimizeMojoTest.java index 97ff5f7eed..48165c325a 100644 --- a/eo-maven-plugin/src/test/java/org/eolang/maven/OptimizeMojoTest.java +++ b/eo-maven-plugin/src/test/java/org/eolang/maven/OptimizeMojoTest.java @@ -35,9 +35,12 @@ import java.nio.file.Paths; import java.util.concurrent.TimeUnit; import org.cactoos.io.ResourceOf; +import org.cactoos.text.TextOf; import org.hamcrest.MatcherAssert; import org.hamcrest.Matchers; +import org.hamcrest.io.FileMatchers; import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -129,6 +132,104 @@ void optimizesIfExpired(@TempDir final Path temp) throws Exception { ); } + /** + * Test case for #1223. + * + * @param temp Temporary test directory. + * @throws Exception if unexpected error happened. + * @todo #1223:90min remove '@Disabled' annotation when caching of already optimized xmir files + * will be implemented. Also don't forget to remove '@Disabled' annotation from the + * 'savesOptimizedResultsToCache' test that is placed below. + */ + @Test + @Disabled + void getsAlreadyOptimizedResultsFromCache(@TempDir final Path temp) throws Exception { + final Path src = temp.resolve("foo/main.eo"); + new Home(temp).save( + "+package f\n\n[args] > main\n (stdout \"Hello!\").print > @\n", + src + ); + final Path target = temp.resolve("target"); + final Path foreign = temp.resolve("eo-foreign.json"); + final Path cache = temp.resolve("cache"); + final TextOf cached = new TextOf( + new ResourceOf("org/eolang/maven/optimize/main.xml") + ); + final String hash = "abcdef1"; + new Home(cache).save( + cached, + Paths.get(OptimizeMojo.OPTIMIZED) + .resolve(hash) + .resolve("foo/main.xmir") + ); + Catalogs.INSTANCE.make(foreign, "json") + .add("foo.main") + .set(AssembleMojo.ATTR_SCOPE, "compile") + .set(AssembleMojo.ATTR_HASH, hash) + .set(AssembleMojo.ATTR_EO, src.toString()); + new Moja<>(ParseMojo.class) + .with("targetDir", target.toFile()) + .with("foreign", foreign.toFile()) + .with("foreignFormat", "json") + .with("cache", temp.resolve("cache/parsed")) + .execute(); + new Moja<>(OptimizeMojo.class) + .with("targetDir", target.toFile()) + .with("foreign", foreign.toFile()) + .with("trackOptimizationSteps", true) + .with("foreignFormat", "json") + .with("cache", cache) + .execute(); + MatcherAssert.assertThat( + new XMLDocument( + new Home(target).load( + Paths.get( + String.format("%s/foo/main.%s", OptimizeMojo.DIR, TranspileMojo.EXT) + ) + ).asBytes() + ), + Matchers.is(new XMLDocument(cached.asString())) + ); + } + + @Test + @Disabled + void savesOptimizedResultsToCache(@TempDir final Path temp) throws Exception { + final Path src = temp.resolve("foo/main.eo"); + new Home(temp).save( + "+package f\n\n[args] > main\n (stdout \"Hello!\").print > @\n", + src + ); + final Path target = temp.resolve("target"); + final Path foreign = temp.resolve("eo-foreign.json"); + final Path cache = temp.resolve("cache"); + final String hash = "abcdef1"; + Catalogs.INSTANCE.make(foreign, "json") + .add("foo.main") + .set(AssembleMojo.ATTR_SCOPE, "compile") + .set(AssembleMojo.ATTR_HASH, hash) + .set(AssembleMojo.ATTR_EO, src.toString()); + new Moja<>(ParseMojo.class) + .with("targetDir", target.toFile()) + .with("foreign", foreign.toFile()) + .with("foreignFormat", "json") + .with("cache", temp.resolve("cache/parsed")) + .execute(); + new Moja<>(OptimizeMojo.class) + .with("targetDir", target.toFile()) + .with("foreign", foreign.toFile()) + .with("trackOptimizationSteps", true) + .with("foreignFormat", "json") + .with("cache", cache) + .execute(); + MatcherAssert.assertThat( + cache.resolve(OptimizeMojo.OPTIMIZED) + .resolve(hash) + .resolve("foo/main.xmir").toFile(), + FileMatchers.anExistingFile() + ); + } + @Test void testSimpleOptimize(@TempDir final Path temp) throws Exception { final Path src = temp.resolve("foo/main.eo"); @@ -274,12 +375,12 @@ void testFailOnWarning(@TempDir final Path temp) throws Exception { Assertions.assertThrows( IllegalArgumentException.class, () -> new Moja<>(OptimizeMojo.class) - .with("targetDir", target.toFile()) - .with("foreign", foreign.toFile()) - .with("foreignFormat", "csv") - .with("failOnError", false) - .with("failOnWarning", true) - .execute() + .with("targetDir", target.toFile()) + .with("foreign", foreign.toFile()) + .with("foreignFormat", "csv") + .with("failOnError", false) + .with("failOnWarning", true) + .execute() ); } diff --git a/eo-maven-plugin/src/test/resources/org/eolang/maven/optimize/main.xml b/eo-maven-plugin/src/test/resources/org/eolang/maven/optimize/main.xml new file mode 100644 index 0000000000..bfa1ca09d7 --- /dev/null +++ b/eo-maven-plugin/src/test/resources/org/eolang/maven/optimize/main.xml @@ -0,0 +1,20 @@ + + + + + + + + + + Dummy + + + + + + From 12490a3287a38dcde800c271345443ddce286961 Mon Sep 17 00:00:00 2001 From: volodya-lombrozo Date: Tue, 8 Nov 2022 14:51:48 +0300 Subject: [PATCH 2/4] feat(#1223): reformat main.xml file for tests --- .../org/eolang/maven/optimize/main.xml | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/eo-maven-plugin/src/test/resources/org/eolang/maven/optimize/main.xml b/eo-maven-plugin/src/test/resources/org/eolang/maven/optimize/main.xml index bfa1ca09d7..c69512f59b 100644 --- a/eo-maven-plugin/src/test/resources/org/eolang/maven/optimize/main.xml +++ b/eo-maven-plugin/src/test/resources/org/eolang/maven/optimize/main.xml @@ -1,20 +1,16 @@ - - - - - - - - Dummy - - - + + + + + + + + Dummy + - + + + From 7d8d47f4d7d431a90484d92ac8fa3f8147763c72 Mon Sep 17 00:00:00 2001 From: volodya-lombrozo Date: Tue, 8 Nov 2022 14:57:16 +0300 Subject: [PATCH 3/4] feat(#1223): add LICENSE for main.xml --- .../org/eolang/maven/optimize/main.xml | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/eo-maven-plugin/src/test/resources/org/eolang/maven/optimize/main.xml b/eo-maven-plugin/src/test/resources/org/eolang/maven/optimize/main.xml index c69512f59b..dc14b6ad7b 100644 --- a/eo-maven-plugin/src/test/resources/org/eolang/maven/optimize/main.xml +++ b/eo-maven-plugin/src/test/resources/org/eolang/maven/optimize/main.xml @@ -1,4 +1,27 @@ + From fecac8128cb65d852f26e968a79dde845d41c856 Mon Sep 17 00:00:00 2001 From: volodya-lombrozo Date: Wed, 9 Nov 2022 11:29:46 +0300 Subject: [PATCH 4/4] feat(#1223): rewrite puzzle description --- .../src/test/java/org/eolang/maven/OptimizeMojoTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/eo-maven-plugin/src/test/java/org/eolang/maven/OptimizeMojoTest.java b/eo-maven-plugin/src/test/java/org/eolang/maven/OptimizeMojoTest.java index 48165c325a..4d4b8c8591 100644 --- a/eo-maven-plugin/src/test/java/org/eolang/maven/OptimizeMojoTest.java +++ b/eo-maven-plugin/src/test/java/org/eolang/maven/OptimizeMojoTest.java @@ -137,9 +137,10 @@ void optimizesIfExpired(@TempDir final Path temp) throws Exception { * * @param temp Temporary test directory. * @throws Exception if unexpected error happened. - * @todo #1223:90min remove '@Disabled' annotation when caching of already optimized xmir files - * will be implemented. Also don't forget to remove '@Disabled' annotation from the - * 'savesOptimizedResultsToCache' test that is placed below. + * @todo #1223:90min Implement caching for optimization step. After implementation don't forget + * to remove '@Disabled' annotation from the next tests: + * - 'getsAlreadyOptimizedResultsFromCache' + * - 'savesOptimizedResultsToCache' */ @Test @Disabled