diff --git a/eo-maven-plugin/src/test/java/org/eolang/maven/AssembleMojoTest.java b/eo-maven-plugin/src/test/java/org/eolang/maven/AssembleMojoTest.java index 68d0c51531..8f8c6c153c 100644 --- a/eo-maven-plugin/src/test/java/org/eolang/maven/AssembleMojoTest.java +++ b/eo-maven-plugin/src/test/java/org/eolang/maven/AssembleMojoTest.java @@ -98,6 +98,7 @@ void assemblesNotFailWithFailOnErrorFlag(@TempDir final Path temp) throws Except "+alias stdout org.eolang.io.stdout", "+home https://github.com/objectionary/eo", "+package test", + "+version 0.0.0", "", "[x] < wrong>\n (stdout \"Hello!\" x).print\n" ), @@ -109,6 +110,7 @@ void assemblesNotFailWithFailOnErrorFlag(@TempDir final Path temp) throws Except "+alias stdout org.eolang.io.stdout", "+home https://github.com/objectionary/eo", "+package test", + "+version 0.0.0", "", "[x] > main\n (stdout \"Hello!\" x).print\n" ), diff --git a/eo-parser/src/main/java/org/eolang/parser/ParsingTrain.java b/eo-parser/src/main/java/org/eolang/parser/ParsingTrain.java index 30c59945ec..6d89524225 100644 --- a/eo-parser/src/main/java/org/eolang/parser/ParsingTrain.java +++ b/eo-parser/src/main/java/org/eolang/parser/ParsingTrain.java @@ -53,11 +53,6 @@ public final class ParsingTrain extends TrEnvelope { /** * Sheets in the right order. - * - * @todo #1542:90m Add xsl transformation - * that checks the presence of +version meta. - * The version meta have to be correct. - * It can be divided by 2 xsl checks. */ private static final String[] SHEETS = { "/org/eolang/parser/errors/not-empty-atoms.xsl", @@ -78,6 +73,7 @@ public final class ParsingTrain extends TrEnvelope { "/org/eolang/parser/warnings/unsorted-metas.xsl", "/org/eolang/parser/warnings/incorrect-architect.xsl", "/org/eolang/parser/warnings/incorrect-home.xsl", + "/org/eolang/parser/warnings/incorrect-version.xsl", "/org/eolang/parser/expand-aliases.xsl", "/org/eolang/parser/resolve-aliases.xsl", "/org/eolang/parser/synthetic-references.xsl", @@ -89,6 +85,7 @@ public final class ParsingTrain extends TrEnvelope { "/org/eolang/parser/warnings/duplicate-metas.xsl", "/org/eolang/parser/warnings/mandatory-package-meta.xsl", "/org/eolang/parser/warnings/mandatory-home-meta.xsl", + "/org/eolang/parser/warnings/mandatory-version-meta.xsl", "/org/eolang/parser/warnings/correct-package-meta.xsl", "/org/eolang/parser/errors/unused-aliases.xsl", "/org/eolang/parser/errors/data-objects.xsl", diff --git a/eo-parser/src/main/resources/org/eolang/parser/warnings/incorrect-version.xsl b/eo-parser/src/main/resources/org/eolang/parser/warnings/incorrect-version.xsl new file mode 100644 index 0000000000..2eb37432c4 --- /dev/null +++ b/eo-parser/src/main/resources/org/eolang/parser/warnings/incorrect-version.xsl @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + incorrect-version + + + + + + warning + + Wrong format of semver" + + " + + + + + + + + + + + diff --git a/eo-parser/src/main/resources/org/eolang/parser/warnings/mandatory-version-meta.xsl b/eo-parser/src/main/resources/org/eolang/parser/warnings/mandatory-version-meta.xsl new file mode 100644 index 0000000000..2002d4e1d4 --- /dev/null +++ b/eo-parser/src/main/resources/org/eolang/parser/warnings/mandatory-version-meta.xsl @@ -0,0 +1,65 @@ + + + + + + + + + + + missing-version-meta + + + + + + warning + + Missing version meta + + + + + + more-one-version-meta + + + + + + warning + + More than one version specified + + + + + + + + + + diff --git a/eo-parser/src/test/resources/org/eolang/parser/packs/add-locators.yaml b/eo-parser/src/test/resources/org/eolang/parser/packs/add-locators.yaml index eb6e06d051..6356bd686f 100644 --- a/eo-parser/src/test/resources/org/eolang/parser/packs/add-locators.yaml +++ b/eo-parser/src/test/resources/org/eolang/parser/packs/add-locators.yaml @@ -22,6 +22,7 @@ eo: | +alias x +package org.abc +home www.abc.com + +version 0.0.0 [] > a b > @ diff --git a/eo-parser/src/test/resources/org/eolang/parser/packs/add-probes.yaml b/eo-parser/src/test/resources/org/eolang/parser/packs/add-probes.yaml index 2ac893fb20..9aec91c28a 100644 --- a/eo-parser/src/test/resources/org/eolang/parser/packs/add-probes.yaml +++ b/eo-parser/src/test/resources/org/eolang/parser/packs/add-probes.yaml @@ -11,6 +11,7 @@ tests: eo: | +home https://github.com/objectionary/eo +package org.eolang.custom + +version 0.0.0 [] > app QQ.txt.sprintf > @ diff --git a/eo-parser/src/test/resources/org/eolang/parser/packs/catches/catches-incorrect-version.yaml b/eo-parser/src/test/resources/org/eolang/parser/packs/catches/catches-incorrect-version.yaml new file mode 100644 index 0000000000..64b63df225 --- /dev/null +++ b/eo-parser/src/test/resources/org/eolang/parser/packs/catches/catches-incorrect-version.yaml @@ -0,0 +1,16 @@ +xsls: + - /org/eolang/parser/warnings/incorrect-version.xsl +tests: + - /program/errors[count(error[@severity='warning'])=2] + - /program/errors/error[@line='3'] + - /program/errors/error[@line='5'] + +eo: | + +version 0.0.0 + +version 0.2.1 + +version alpha + +alias org.eolang.io.stdout + +version 1.0.0-alpha.beta + + [x] > foo + x.div in.nextInt > @ diff --git a/eo-parser/src/test/resources/org/eolang/parser/packs/catches/catches-mandatory-version-meta.yaml b/eo-parser/src/test/resources/org/eolang/parser/packs/catches/catches-mandatory-version-meta.yaml new file mode 100644 index 0000000000..e91ee975cc --- /dev/null +++ b/eo-parser/src/test/resources/org/eolang/parser/packs/catches/catches-mandatory-version-meta.yaml @@ -0,0 +1,12 @@ +xsls: + - /org/eolang/parser/warnings/mandatory-version-meta.xsl +tests: + - /program/errors[count(error[@severity='warning'])=1] + - /program/errors[count(error[@severity='error'])=0] +eo: | + +home https://github.com/objectionary/eo + +package test + +alias stding org.eolang.io.stdin + + [] > main + (stdout "Hello, world!").print > @ diff --git a/eo-parser/src/test/resources/org/eolang/parser/packs/catches/catches-not-one-version-meta.yaml b/eo-parser/src/test/resources/org/eolang/parser/packs/catches/catches-not-one-version-meta.yaml new file mode 100644 index 0000000000..96b719f54d --- /dev/null +++ b/eo-parser/src/test/resources/org/eolang/parser/packs/catches/catches-not-one-version-meta.yaml @@ -0,0 +1,15 @@ +xsls: + - /org/eolang/parser/warnings/mandatory-version-meta.xsl +tests: + - /program/errors[count(error[@severity='warning'])=1] + - /program/errors[count(error[@severity='error'])=0] +eo: | + +alias stding org.eolang.io.stdin + +alias stdout org.eolang.io.stdout + +home https://github.com/objectionary/eo + +package sandbox + +version 0.0.0 + +version 0.0.0 + + [] > main + (stdout "Hello, world!").print diff --git a/eo-parser/src/test/resources/org/eolang/parser/packs/empty-vs-free.yaml b/eo-parser/src/test/resources/org/eolang/parser/packs/empty-vs-free.yaml index 6638aa9716..cc4502e9ed 100644 --- a/eo-parser/src/test/resources/org/eolang/parser/packs/empty-vs-free.yaml +++ b/eo-parser/src/test/resources/org/eolang/parser/packs/empty-vs-free.yaml @@ -6,5 +6,7 @@ tests: eo: | +home https://github.com/objectionary/eo +package test + +version 0.0.0 + [x] > foo [] > y diff --git a/eo-parser/src/test/resources/org/eolang/parser/packs/leap-year.yaml b/eo-parser/src/test/resources/org/eolang/parser/packs/leap-year.yaml index 0f0f1ce120..b89ee0b5d2 100644 --- a/eo-parser/src/test/resources/org/eolang/parser/packs/leap-year.yaml +++ b/eo-parser/src/test/resources/org/eolang/parser/packs/leap-year.yaml @@ -13,6 +13,7 @@ eo: | +alias org.eolang.txt.scanner +home https://github.com/objectionary/eo +package test + +version 0.0.0 [args] > main [y] > leap diff --git a/eo-parser/src/test/resources/org/eolang/parser/packs/priority/additional-brackets.yaml b/eo-parser/src/test/resources/org/eolang/parser/packs/priority/additional-brackets.yaml index aa2889fa69..dd57edcbdc 100644 --- a/eo-parser/src/test/resources/org/eolang/parser/packs/priority/additional-brackets.yaml +++ b/eo-parser/src/test/resources/org/eolang/parser/packs/priority/additional-brackets.yaml @@ -4,6 +4,7 @@ tests: eo: | +home https://github.com/objectionary/eo +package org.eolang.priority + +version 0.0.0 [] > x 1.times 2 (1.plus other.value) \ No newline at end of file diff --git a/eo-parser/src/test/resources/org/eolang/parser/packs/priority/space-between.yaml b/eo-parser/src/test/resources/org/eolang/parser/packs/priority/space-between.yaml index 6d0b54b9b1..ecf40f249f 100644 --- a/eo-parser/src/test/resources/org/eolang/parser/packs/priority/space-between.yaml +++ b/eo-parser/src/test/resources/org/eolang/parser/packs/priority/space-between.yaml @@ -5,6 +5,7 @@ tests: eo: | +home https://github.com/objectionary/eo +package org.eolang.priority + +version 0.0.0 [] > sum ^.a.plus ^.b > @ diff --git a/eo-parser/src/test/resources/org/eolang/parser/packs/recursion.yaml b/eo-parser/src/test/resources/org/eolang/parser/packs/recursion.yaml index eb32c30ee0..9c2e1a714d 100644 --- a/eo-parser/src/test/resources/org/eolang/parser/packs/recursion.yaml +++ b/eo-parser/src/test/resources/org/eolang/parser/packs/recursion.yaml @@ -1,10 +1,11 @@ tests: - /program/errors[count(*)=0] - - //o[@name='f' and @line='4'] - - //o[@base='f' and @ref='4'] + - //o[@name='f' and @line='5'] + - //o[@base='f' and @ref='5'] eo: | +home https://github.com/objectionary/eo +package test + +version 0.0.0 [args...] > main [n] > f f 5 > @ diff --git a/eo-parser/src/test/resources/org/eolang/parser/packs/redundency/redundent-parentheses.yaml b/eo-parser/src/test/resources/org/eolang/parser/packs/redundency/redundent-parentheses.yaml index 1cc9925833..e86d029762 100644 --- a/eo-parser/src/test/resources/org/eolang/parser/packs/redundency/redundent-parentheses.yaml +++ b/eo-parser/src/test/resources/org/eolang/parser/packs/redundency/redundent-parentheses.yaml @@ -1,9 +1,10 @@ tests: - /program/errors[count(error)=1] - - //error[@severity='warning' and @line=5 and text()="'(1.plus 2)' contains redundant parentheses"] + - //error[@severity='warning' and @line=6 and text()="'(1.plus 2)' contains redundant parentheses"] eo: | +home https://github.com/objectionary/eo +package a.b.c + +version 0.0.0 [] > x (1.plus 2) > y \ No newline at end of file