2
0
mirror of https://github.com/tenrok/bootstrap.git synced 2026-06-14 18:42:30 +03:00

support multiple files

This commit is contained in:
GeoSot
2021-10-04 00:58:27 +03:00
committed by XhmikosR
parent 26190efcc5
commit ac2494eba2
5 changed files with 63 additions and 31 deletions
+24 -1
View File
@@ -3,6 +3,8 @@
'use strict' 'use strict'
const process = require('node:process') const process = require('node:process')
const { exec } = require('node:child_process')
const fs = require('fs')
const BE_VERBOSE = process.argv.includes('-v') const BE_VERBOSE = process.argv.includes('-v')
const colors = { // could use https://github.com/chalk/chalk const colors = { // could use https://github.com/chalk/chalk
@@ -46,11 +48,32 @@ const printTest = (title, force = false) =>
const printTestDetails = (title, force = false) => const printTestDetails = (title, force = false) =>
print('- ' + title, 8, null, force)// print test title (it) print('- ' + title, 8, null, force)// print test title (it)
const execSassPromise = inputFile => {
const outputFile = inputFile.replace('spec.scss', 'css')
const sassScript = `sass --style expanded --quiet --no-source-map --no-error-css ${inputFile}:${outputFile}`
return new Promise((resolve, reject) => {
// eslint-disable-next-line no-unused-vars
exec(sassScript, async (error, stdout, stderr) => {
if (error) {
print(`error: ${error.message}`)
reject(error)
return
}
const cssFile = await fs.promises.readFile(outputFile, 'utf8')
await fs.promises.unlink(outputFile)
resolve(cssFile)
})
})
}
module.exports = { module.exports = {
colors, colors,
ErrorAssertion, ErrorAssertion,
print, print,
printModule, printModule,
printTest, printTest,
printTestDetails printTestDetails,
execSassPromise
} }
+30 -28
View File
@@ -18,19 +18,17 @@
'use strict' 'use strict'
let exitStatus = 0 let hasFailedAssertions = false
const errors = [] let errors = []
const process = require('node:process') const process = require('node:process')
const BE_VERBOSE = process.argv.includes('-v') const BE_VERBOSE = process.argv.includes('-v')
const fs = require('fs') const path = require('path')
const glob = require('glob')
const helpers = require('./helpers') const helpers = require('./helpers')
const sassTrue = require('sass-true') const sassTrue = require('sass-true')
const { exec } = require('child_process')
const rootDir = 'test-scss' const rootDir = 'test-scss'
const outputFile = rootDir + '/index.css'
const sassScript = `sass --style expanded --quiet --no-source-map --no-error-css ${rootDir}/index.spec.scss:${outputFile}`
const describeModule = function (module) { const describeModule = function (module) {
helpers.printModule(module.module) helpers.printModule(module.module)
@@ -43,7 +41,7 @@ const describeModule = function (module) {
helpers.printTest(test.test) helpers.printTest(test.test)
for (const assertion of test.assertions || []) { for (const assertion of test.assertions || []) {
if (!assertion.passed) { if (!assertion.passed) {
exitStatus = 1 hasFailedAssertions = true
countFailed++ countFailed++
const assertionDetails = sassTrue.formatFailureMessage(assertion) const assertionDetails = sassTrue.formatFailureMessage(assertion)
errors.push(new helpers.ErrorAssertion(module.module, test.test, assertionDetails)) errors.push(new helpers.ErrorAssertion(module.module, test.test, assertionDetails))
@@ -56,32 +54,36 @@ const describeModule = function (module) {
} }
} }
helpers.print('Start scss tests... \n', 0, helpers.colors.Green, true) async function run() {
// eslint-disable-next-line no-unused-vars const files = glob.sync(path.resolve(__dirname, 'tests/**/*.scss'))
exec(sassScript, (error, stdout, stderr) => { for (const file of files) {
errors = []
const relative = file.slice(Math.max(0, file.indexOf(rootDir)))
helpers.print(`Processing ${relative}`, 0, helpers.colors.Blue, true)
// eslint-disable-next-line no-await-in-loop
const result = await helpers.execSassPromise(relative)
if (error) { if (result.status === 'rejected') {
helpers.print(`error: ${error.message}`) process.exit(1)
process.exit(1) }
}
const cssFile = fs.readFileSync(outputFile).toString() const modules = sassTrue.parse(result)
const modules = sassTrue.parse(cssFile) for (const module of modules) {
describeModule(module)
}
for (const module of modules) { if (!BE_VERBOSE) {
describeModule(module) for (const error of errors) {
} helpers.printModule(error.module, true)
helpers.printTest(error.test, true)
if (!BE_VERBOSE) { helpers.printTestDetails(error.assertionDetails, true)
for (const error of errors) { }
helpers.printModule(error.module, true)
helpers.printTest(error.test, true)
helpers.printTestDetails(error.assertionDetails, true)
} }
} }
fs.unlinkSync(outputFile)
helpers.print('End scss tests', 0, helpers.colors.Green, true) helpers.print('End scss tests', 0, helpers.colors.Green, true)
process.exit(exitStatus) process.exit(hasFailedAssertions ? 1 : 0)
}) }
helpers.print('Start scss tests... \n', 0, helpers.colors.Green, true)
run() // begin execution
-2
View File
@@ -1,2 +0,0 @@
@import "tests/test";
+9
View File
@@ -0,0 +1,9 @@
@import "../../node_modules/sass-true/sass/true";
@include describe("A randowm module") {
@include it("and a random test test") {
@include assert-equal(3, 3);
}
}