From: Artur Signell Date: Tue, 15 Oct 2013 18:49:25 +0000 (+0300) Subject: Add sub directory support to sass test scanner (#12790) X-Git-Tag: 7.1.8~52 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=7c12694e047c42bf5f2ab189512e3346541e9c51;p=vaadin-framework.git Add sub directory support to sass test scanner (#12790) Exclude partial scss files (starting with _) Add new lines to normalized css for easier comparison Change-Id: I2bfb796b293cb0b578c3c5c56aacffe7c1514b02 --- diff --git a/theme-compiler/tests/resources/automatic/scss/foo/_bar.scss b/theme-compiler/tests/resources/automatic/scss/foo/_bar.scss new file mode 100644 index 0000000000..326d34232d --- /dev/null +++ b/theme-compiler/tests/resources/automatic/scss/foo/_bar.scss @@ -0,0 +1,5 @@ +.bar { + background: url("lorem.png"); + background: url('lorem.png'); + background: url(lorem.png); +} \ No newline at end of file diff --git a/theme-compiler/tests/resources/automatic/scss/foo/bar.scss b/theme-compiler/tests/resources/automatic/scss/foo/bar.scss deleted file mode 100644 index 326d34232d..0000000000 --- a/theme-compiler/tests/resources/automatic/scss/foo/bar.scss +++ /dev/null @@ -1,5 +0,0 @@ -.bar { - background: url("lorem.png"); - background: url('lorem.png'); - background: url(lorem.png); -} \ No newline at end of file diff --git a/theme-compiler/tests/resources/automatic/scss/import-file-which-contains-comment-in-last-line.scss b/theme-compiler/tests/resources/automatic/scss/import-file-which-contains-comment-in-last-line.scss index 41adc908ed..8292d4efe3 100644 --- a/theme-compiler/tests/resources/automatic/scss/import-file-which-contains-comment-in-last-line.scss +++ b/theme-compiler/tests/resources/automatic/scss/import-file-which-contains-comment-in-last-line.scss @@ -1,4 +1,4 @@ -@import "to-be-imported/imported-file-contains-comments-in-last-line.scss"; +@import "to-be-imported/_imported-file-contains-comments-in-last-line.scss"; .foo{ foo: $foo; } \ No newline at end of file diff --git a/theme-compiler/tests/resources/automatic/scss/nested-import.scss b/theme-compiler/tests/resources/automatic/scss/nested-import.scss index 605d64a13a..df720a5584 100644 --- a/theme-compiler/tests/resources/automatic/scss/nested-import.scss +++ b/theme-compiler/tests/resources/automatic/scss/nested-import.scss @@ -1,3 +1,3 @@ .foo { - @import "foo/bar.scss"; + @import "foo/_bar.scss"; } \ No newline at end of file diff --git a/theme-compiler/tests/resources/automatic/scss/to-be-imported/_imported-file-contains-comments-in-last-line.scss b/theme-compiler/tests/resources/automatic/scss/to-be-imported/_imported-file-contains-comments-in-last-line.scss new file mode 100644 index 0000000000..16244f2bfd --- /dev/null +++ b/theme-compiler/tests/resources/automatic/scss/to-be-imported/_imported-file-contains-comments-in-last-line.scss @@ -0,0 +1,2 @@ +$foo: bar; +// This will cause an error \ No newline at end of file diff --git a/theme-compiler/tests/resources/automatic/scss/to-be-imported/imported-file-contains-comments-in-last-line.scss b/theme-compiler/tests/resources/automatic/scss/to-be-imported/imported-file-contains-comments-in-last-line.scss deleted file mode 100644 index 16244f2bfd..0000000000 --- a/theme-compiler/tests/resources/automatic/scss/to-be-imported/imported-file-contains-comments-in-last-line.scss +++ /dev/null @@ -1,2 +0,0 @@ -$foo: bar; -// This will cause an error \ No newline at end of file diff --git a/theme-compiler/tests/resources/automatic/scss/url-path.scss b/theme-compiler/tests/resources/automatic/scss/url-path.scss index 0cc954bfb4..6903d389b5 100644 --- a/theme-compiler/tests/resources/automatic/scss/url-path.scss +++ b/theme-compiler/tests/resources/automatic/scss/url-path.scss @@ -1 +1 @@ -@import "foo/bar.scss"; \ No newline at end of file +@import "foo/_bar.scss"; \ No newline at end of file diff --git a/theme-compiler/tests/resources/automatic/scss/utf8-imported/_to-be-imported-scss-file-contains-utf8.scss b/theme-compiler/tests/resources/automatic/scss/utf8-imported/_to-be-imported-scss-file-contains-utf8.scss new file mode 100644 index 0000000000..f8a08a4a96 --- /dev/null +++ b/theme-compiler/tests/resources/automatic/scss/utf8-imported/_to-be-imported-scss-file-contains-utf8.scss @@ -0,0 +1,3 @@ +@charset "abc"; +.imported{content: '\1f4c5';} +.imported_raw_utf{content: "♥";} diff --git a/theme-compiler/tests/resources/automatic/scss/utf8-imported/to-be-imported-scss-file-contains-utf8.scss b/theme-compiler/tests/resources/automatic/scss/utf8-imported/to-be-imported-scss-file-contains-utf8.scss deleted file mode 100644 index f8a08a4a96..0000000000 --- a/theme-compiler/tests/resources/automatic/scss/utf8-imported/to-be-imported-scss-file-contains-utf8.scss +++ /dev/null @@ -1,3 +0,0 @@ -@charset "abc"; -.imported{content: '\1f4c5';} -.imported_raw_utf{content: "♥";} diff --git a/theme-compiler/tests/resources/automatic/scss/utf8.scss b/theme-compiler/tests/resources/automatic/scss/utf8.scss index b568674073..251d6e6513 100644 --- a/theme-compiler/tests/resources/automatic/scss/utf8.scss +++ b/theme-compiler/tests/resources/automatic/scss/utf8.scss @@ -1,4 +1,4 @@ @charset "UTF-8"; -@import "utf8-imported/to-be-imported-scss-file-contains-utf8"; +@import "utf8-imported/_to-be-imported-scss-file-contains-utf8"; .bar {content: "\1f4c5";} .raw_utf {content: "📈";} \ No newline at end of file diff --git a/theme-compiler/tests/src/com/vaadin/sass/testcases/scss/AbstractDirectoryScanningSassTests.java b/theme-compiler/tests/src/com/vaadin/sass/testcases/scss/AbstractDirectoryScanningSassTests.java index 40da6179f6..21edde0c17 100644 --- a/theme-compiler/tests/src/com/vaadin/sass/testcases/scss/AbstractDirectoryScanningSassTests.java +++ b/theme-compiler/tests/src/com/vaadin/sass/testcases/scss/AbstractDirectoryScanningSassTests.java @@ -19,7 +19,6 @@ package com.vaadin.sass.testcases.scss; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; -import java.io.FilenameFilter; import java.io.IOException; import java.net.URISyntaxException; import java.net.URL; @@ -36,28 +35,43 @@ import com.vaadin.sass.testcases.scss.SassTestRunner.FactoryTest; public abstract class AbstractDirectoryScanningSassTests { public static Collection getScssResourceNames(URL directoryUrl) - throws URISyntaxException { + throws URISyntaxException, IOException { List resources = new ArrayList(); - for (File scssFile : getScssFiles(directoryUrl)) { - resources.add(scssFile.getName()); + for (String scssFile : getScssFiles(directoryUrl)) { + resources.add(scssFile); } return resources; } - private static File[] getScssFiles(URL directoryUrl) - throws URISyntaxException { + private static List getScssFiles(URL directoryUrl) + throws URISyntaxException, IOException { URL sasslangUrl = directoryUrl; File sasslangDir = new File(sasslangUrl.toURI()); File scssDir = new File(sasslangDir, "scss"); Assert.assertTrue(scssDir.exists()); - return scssDir.listFiles(new FilenameFilter() { + List scssFiles = new ArrayList(); + addScssFilesRecursively(scssDir, scssFiles); - @Override - public boolean accept(File dir, String name) { - return name.endsWith(".scss"); + List scssRelativeNames = new ArrayList(); + for (File f : scssFiles) { + String relativeName = f.getCanonicalPath().substring( + scssDir.getCanonicalPath().length() + 1); + scssRelativeNames.add(relativeName); + } + return scssRelativeNames; + } + + private static void addScssFilesRecursively(File scssDir, + List scssFiles) { + for (File f : scssDir.listFiles()) { + if (f.isDirectory()) { + addScssFilesRecursively(f, scssFiles); + } else if (f.getName().endsWith(".scss") + && !f.getName().startsWith("_")) { + scssFiles.add(f); } - }); + } } protected abstract URL getResourceURL(String path); @@ -69,7 +83,7 @@ public abstract class AbstractDirectoryScanningSassTests { File cssFile = getCssFile(scssFile); referenceCss = IOUtils.toString(new FileInputStream(cssFile)); ScssStylesheet scssStylesheet = ScssStylesheet.get(scssFile - .getAbsolutePath()); + .getCanonicalPath()); scssStylesheet.compile(); String parsedCss = scssStylesheet.toString(); @@ -88,6 +102,9 @@ public abstract class AbstractDirectoryScanningSassTests { css = css.replaceAll("^[\n\r\t ]*", ""); // remove trailing whitespace css = css.replaceAll("[\n\r\t ]*$", ""); + css = css.replaceAll(";", ";\n"); + css = css.replaceAll("\\{", "\\{\n"); + css = css.replaceAll("}", "}\n"); return css; } @@ -103,7 +120,7 @@ public abstract class AbstractDirectoryScanningSassTests { return new File(res.toURI()); } - private File getCssFile(File scssFile) { - return new File(scssFile.getAbsolutePath().replace("scss", "css")); + private File getCssFile(File scssFile) throws IOException { + return new File(scssFile.getCanonicalPath().replace("scss", "css")); } } diff --git a/theme-compiler/tests/src/com/vaadin/sass/testcases/scss/AutomaticSassTests.java b/theme-compiler/tests/src/com/vaadin/sass/testcases/scss/AutomaticSassTests.java index 4134c564f9..66e0bedac0 100644 --- a/theme-compiler/tests/src/com/vaadin/sass/testcases/scss/AutomaticSassTests.java +++ b/theme-compiler/tests/src/com/vaadin/sass/testcases/scss/AutomaticSassTests.java @@ -15,6 +15,7 @@ */ package com.vaadin.sass.testcases.scss; +import java.io.IOException; import java.net.URISyntaxException; import java.net.URL; import java.util.Collection; @@ -37,7 +38,7 @@ public class AutomaticSassTests extends AbstractDirectoryScanningSassTests { @TestFactory public static Collection getScssResourceNames() - throws URISyntaxException { + throws URISyntaxException, IOException { return getScssResourceNames(getResourceURLInternal("")); } diff --git a/theme-compiler/tests/src/com/vaadin/sass/testcases/scss/SassLangTests.java b/theme-compiler/tests/src/com/vaadin/sass/testcases/scss/SassLangTests.java index 4b8aada524..a8c9e80a3a 100644 --- a/theme-compiler/tests/src/com/vaadin/sass/testcases/scss/SassLangTests.java +++ b/theme-compiler/tests/src/com/vaadin/sass/testcases/scss/SassLangTests.java @@ -15,6 +15,7 @@ */ package com.vaadin.sass.testcases.scss; +import java.io.IOException; import java.net.URISyntaxException; import java.net.URL; import java.util.Collection; @@ -42,7 +43,7 @@ public class SassLangTests extends AbstractDirectoryScanningSassTests { @TestFactory public static Collection getScssResourceNames() - throws URISyntaxException { + throws URISyntaxException, IOException { return getScssResourceNames(getResourceURLInternal("")); } diff --git a/theme-compiler/tests/src/com/vaadin/sass/testcases/scss/SassLangTestsBroken.java b/theme-compiler/tests/src/com/vaadin/sass/testcases/scss/SassLangTestsBroken.java index 6b812a6940..0656565c20 100644 --- a/theme-compiler/tests/src/com/vaadin/sass/testcases/scss/SassLangTestsBroken.java +++ b/theme-compiler/tests/src/com/vaadin/sass/testcases/scss/SassLangTestsBroken.java @@ -15,6 +15,7 @@ */ package com.vaadin.sass.testcases.scss; +import java.io.IOException; import java.net.URISyntaxException; import java.net.URL; import java.util.Collection; @@ -45,7 +46,7 @@ public class SassLangTestsBroken extends AbstractDirectoryScanningSassTests { @TestFactory public static Collection getScssResourceNames() - throws URISyntaxException { + throws URISyntaxException, IOException { return getScssResourceNames(getResourceURLInternal("")); }