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:
+24
-1
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
@import "tests/test";
|
|
||||||
|
|
||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user