]> git.ipfire.org Git - thirdparty/bulma.git/commitdiff
Add dart and node sass tests
authorJeremy Thomas <bbxdesign@gmail.com>
Sat, 7 Nov 2020 17:19:18 +0000 (17:19 +0000)
committerJeremy Thomas <bbxdesign@gmail.com>
Sat, 7 Nov 2020 18:15:20 +0000 (18:15 +0000)
test/dart-sass.js
test/node-sass.js [new file with mode: 0644]
test/ruby-sass.sh
test/utils.js [new file with mode: 0644]

index 3ab82f29c85214970649d81ce9bcb2a338437632..7e987c773de8ef9c531b5c4d95f047c7b7c9d02b 100644 (file)
@@ -1,79 +1,40 @@
+const fs = require('fs');
+const path = require('path');
 const sass = require('sass');
+const utils = require('./utils');
 
-const sources = [
-  `base/animations.sass`,
-  `base/generic.sass`,
-  `base/minireset.sass`,
+const DART_BASE_PATH = 'test/build/dart-sass/';
 
-  `components/breadcrumb.sass`,
-  `components/card.sass`,
-  `components/dropdown.sass`,
-  `components/level.sass`,
-  `components/media.sass`,
-  `components/menu.sass`,
-  `components/message.sass`,
-  `components/modal.sass`,
-  `components/navbar.sass`,
-  `components/pagination.sass`,
-  `components/panel.sass`,
-  `components/tabs.sass`,
+fs.mkdir(DART_BASE_PATH, { recursive: true }, (err) => {
+  if (err) throw err;
+});
 
-  `elements/box.sass`,
-  `elements/button.sass`,
-  `elements/container.sass`,
-  `elements/content.sass`,
-  `elements/icon.sass`,
-  `elements/image.sass`,
-  `elements/notification.sass`,
-  `elements/other.sass`,
-  `elements/progress.sass`,
-  `elements/table.sass`,
-  `elements/tag.sass`,
-  `elements/title.sass`,
+const exportDartCSS = (filepath, options) => {
+  utils.exportCSS(sass, fs, DART_BASE_PATH, filepath, options)
+}
 
-  `form/checkbox-radio.sass`,
-  `form/file.sass`,
-  `form/input-textarea.sass`,
-  `form/select.sass`,
-  `form/tools.sass`,
+// Full import
 
-  `grid/columns.sass`,
-  `grid/tiles.sass`,
+exportDartCSS('bulma', {
+  file: './bulma.sass',
+});
 
-  `helpers/color.sass`,
-  `helpers/flexbox.sass`,
-  `helpers/float.sass`,
-  `helpers/other.sass`,
-  `helpers/overflow.sass`,
-  `helpers/position.sass`,
-  `helpers/spacing.sass`,
-  `helpers/typography.sass`,
-  `helpers/visibility.sass`,
+exportDartCSS('bulma-rtl', {
+  file: './bulma-rtl.sass',
+});
 
-  `layout/footer.sass`,
-  `layout/hero.sass`,
-  `layout/section.sass`,
+// Single imports
 
-  `utilities/controls.sass`,
-  `utilities/derived-variables.sass`,
-  `utilities/functions.sass`,
-  `utilities/initial-variables.sass`,
-  `utilities/mixins.sass`,
-];
+const BULMA_IMPORT_PATH = `./sass/`;
 
-const BULMA_SASS_PATH = `./sass/`;
+utils.SOURCES.forEach((source) => {
+  const parsed = path.parse(source);
 
-sources.forEach(source => {
-  const result = sass.renderSync({
-    data: `@use "${BULMA_SASS_PATH}${source}";`,
-    outputStyle: "expanded"
+  fs.mkdir(`${DART_BASE_PATH}${parsed.dir}`, { recursive: true }, (err) => {
+    if (err) throw err;
   });
 
-  try {
-    sass.renderSync({
-      data: `@use "${BULMA_SASS_PATH}${source}";`,
-    });
-  } catch(err) {
-    console.error(err);
-  }
+  exportDartCSS(`${parsed.dir}/${parsed.name}`, {
+    data: `@use "${BULMA_IMPORT_PATH}${source}";`,
+  });
 });
diff --git a/test/node-sass.js b/test/node-sass.js
new file mode 100644 (file)
index 0000000..cf1c062
--- /dev/null
@@ -0,0 +1,40 @@
+const fs = require('fs');
+const path = require('path');
+const sass = require('node-sass');
+const utils = require('./utils');
+
+const NODE_SASS_BASE_PATH = 'test/build/node-sass/';
+
+fs.mkdir(NODE_SASS_BASE_PATH, { recursive: true }, (err) => {
+  if (err) throw err;
+});
+
+const exportNodeSassCSS = (filepath, options) => {
+  utils.exportCSS(sass, fs, NODE_SASS_BASE_PATH, filepath, options)
+}
+
+// Full import
+
+exportNodeSassCSS('bulma', {
+  file: './bulma.sass',
+});
+
+exportNodeSassCSS('bulma-rtl', {
+  file: './bulma-rtl.sass',
+});
+
+// Single imports
+
+const BULMA_IMPORT_PATH = `./sass/`;
+
+utils.SOURCES.forEach((source) => {
+  const parsed = path.parse(source);
+
+  fs.mkdir(`${NODE_SASS_BASE_PATH}${parsed.dir}`, { recursive: true }, (err) => {
+    if (err) throw err;
+  });
+
+  exportNodeSassCSS(`${parsed.dir}/${parsed.name}`, {
+    data: `@use "${BULMA_IMPORT_PATH}${source}";`,
+  });
+});
index 5e1434869c9556902bce950f9a63997e8d56015d..a2e783b9a599bf5bb4f0d1db594ee675a51dc44d 100755 (executable)
@@ -4,8 +4,8 @@
 
 TEST_DIR=$(dirname $BASH_SOURCE)
 FILES=$TEST_DIR/sass/*
-CSS_DIR=$TEST_DIR/css
-CSS_FILES=$TEST_DIR/css/*.css
+CSS_DIR=$TEST_DIR/build/ruby-sass
+CSS_FILES=$TEST_DIR/build/ruby-sass/*.css
 SASS_OPTIONS=--sourcemap=none
 
 # FUNCTIONS
diff --git a/test/utils.js b/test/utils.js
new file mode 100644 (file)
index 0000000..cca869c
--- /dev/null
@@ -0,0 +1,90 @@
+module.exports = Object.freeze({
+  SOURCES: [
+    `base/animations.sass`,
+    `base/generic.sass`,
+    `base/minireset.sass`,
+
+    `components/breadcrumb.sass`,
+    `components/card.sass`,
+    `components/dropdown.sass`,
+    `components/level.sass`,
+    `components/media.sass`,
+    `components/menu.sass`,
+    `components/message.sass`,
+    `components/modal.sass`,
+    `components/navbar.sass`,
+    `components/pagination.sass`,
+    `components/panel.sass`,
+    `components/tabs.sass`,
+
+    `elements/box.sass`,
+    `elements/button.sass`,
+    `elements/container.sass`,
+    `elements/content.sass`,
+    `elements/icon.sass`,
+    `elements/image.sass`,
+    `elements/notification.sass`,
+    `elements/other.sass`,
+    `elements/progress.sass`,
+    `elements/table.sass`,
+    `elements/tag.sass`,
+    `elements/title.sass`,
+
+    `form/checkbox-radio.sass`,
+    `form/file.sass`,
+    `form/input-textarea.sass`,
+    `form/select.sass`,
+    `form/tools.sass`,
+
+    `grid/columns.sass`,
+    `grid/tiles.sass`,
+
+    `helpers/color.sass`,
+    `helpers/flexbox.sass`,
+    `helpers/float.sass`,
+    `helpers/other.sass`,
+    `helpers/overflow.sass`,
+    `helpers/position.sass`,
+    `helpers/spacing.sass`,
+    `helpers/typography.sass`,
+    `helpers/visibility.sass`,
+
+    `layout/footer.sass`,
+    `layout/hero.sass`,
+    `layout/section.sass`,
+
+    `utilities/controls.sass`,
+    `utilities/derived-variables.sass`,
+    `utilities/functions.sass`,
+    `utilities/initial-variables.sass`,
+    `utilities/mixins.sass`,
+  ],
+  buildCSS: (fn, name, options) => {
+    try {
+      console.log(`Processing ${name}`);
+      fn.renderSync(options);
+    } catch (err) {
+      console.log(`Error with ${name}`);
+      console.error(err);
+    }
+  },
+  exportCSS: (fn, fs, basepath, filepath, options) => {
+    const exportFile = `${basepath}${filepath}.css`;
+
+    fn.render(
+      {
+        ...options,
+        outFile: exportFile,
+      },
+      (error, result) => {
+        if (!error) {
+          fs.writeFile(exportFile, result.css, (err) => {
+            if (!err) {
+              console.log(`File ${exportFile} written on disk`);
+            }
+          });
+        }
+      }
+    );
+  }
+});