Initial import with skill sheet working

This commit is contained in:
2024-12-04 00:11:23 +01:00
commit 9050c80ab4
4488 changed files with 671048 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
module.exports = {
current: {
// src is used to build list of less files to compile
src: [
'benchmark/benchmark.less'
],
options: {
helpers: 'benchmark/browseroptions.js',
specs: 'benchmark/browserspec.js',
outfile: 'tmp/browser/test-runner-benchmark-current.html'
}
},
v3_10_3: {
// src is used to build list of less files to compile
src: [
'benchmark/benchmark.less'
],
options: {
helpers: 'benchmark/browseroptions.js',
specs: 'benchmark/browserspec.js',
outfile: 'tmp/browser/test-runner-benchmark-v3_10_3.html',
less: 'https://cdnjs.cloudflare.com/ajax/libs/less.js/3.10.3/less.min.js'
}
},
v3_9_0: {
// src is used to build list of less files to compile
src: [
'benchmark/benchmark.less'
],
options: {
helpers: 'benchmark/browseroptions.js',
specs: 'benchmark/browserspec.js',
outfile: 'tmp/browser/test-runner-benchmark-v3_9_0.html',
less: 'https://cdnjs.cloudflare.com/ajax/libs/less.js/3.9.0/less.min.js'
}
},
v2_7_3: {
// src is used to build list of less files to compile
src: [
'benchmark/benchmark.less'
],
options: {
helpers: 'benchmark/browseroptions.js',
specs: 'benchmark/browserspec.js',
outfile: 'tmp/browser/test-runner-benchmark-v2_7_3.html',
less: 'https://cdnjs.cloudflare.com/ajax/libs/less.js/2.7.3/less.min.js'
}
}
}

78
node_modules/less/test/browser/generator/generate.js generated vendored Normal file
View File

@@ -0,0 +1,78 @@
const template = require('./template')
let config
const fs = require('fs-extra')
const path = require('path')
const globby = require('globby')
const { runner } = require('mocha-headless-chrome')
if (process.argv[2]) {
config = require(`./${process.argv[2]}.config`)
} else {
config = require('./runner.config')
}
/**
* Generate templates and run tests
*/
const tests = []
const cwd = process.cwd()
const tmpDir = path.join(cwd, 'tmp', 'browser')
fs.ensureDirSync(tmpDir)
fs.copySync(path.join(cwd, 'test', 'browser', 'common.js'), path.join(tmpDir, 'common.js'))
let numTests = 0
let passedTests = 0
let failedTests = 0
/** Will run the runners in a series */
function runSerial(tasks) {
var result = Promise.resolve()
start = Date.now()
tasks.forEach(task => {
result = result.then(result => {
if (result && result.result && result.result.stats) {
const stats = result.result.stats
numTests += stats.tests
passedTests += stats.passes
failedTests += stats.failures
}
return task()
}, err => {
console.log(err)
failedTests += 1
})
})
return result
}
Object.entries(config).forEach(entry => {
const test = entry[1]
const paths = globby.sync(test.src)
const templateString = template(paths, test.options.helpers, test.options.specs)
fs.writeFileSync(path.join(cwd, test.options.outfile), templateString)
tests.push(() => {
const file = 'http://localhost:8081/packages/less/' + test.options.outfile
console.log(file)
return runner({
file,
timeout: 3500,
args: ['disable-web-security']
})
})
})
module.exports = () => runSerial(tests).then(() => {
if (failedTests > 0) {
process.stderr.write(failedTests + ' Failed, ' + passedTests + ' passed\n');
} else {
process.stdout.write('All Passed ' + passedTests + ' run\n');
}
if (failedTests) {
process.on('exit', function() { process.reallyExit(1); });
}
process.exit()
}, err => {
process.stderr.write(err.message);
process.exit()
})

View File

@@ -0,0 +1,188 @@
var path = require('path');
var resolve = require('resolve')
var { forceCovertToBrowserPath } = require('./utils');
/** Root of repo */
var testFolder = forceCovertToBrowserPath(path.dirname(resolve.sync('@less/test-data')));
var lessFolder = forceCovertToBrowserPath(path.join(testFolder, 'less'));
var localTests = forceCovertToBrowserPath(path.resolve(__dirname, '..'));
module.exports = {
main: {
// src is used to build list of less files to compile
src: [
`${lessFolder}/_main/*.less`,
`!${lessFolder}/_main/plugin-preeval.less`, // uses ES6 syntax
// Don't test NPM import, obviously
`!${lessFolder}/_main/plugin-module.less`,
`!${lessFolder}/_main/import-module.less`,
`!${lessFolder}/_main/javascript.less`,
`!${lessFolder}/_main/urls.less`,
`!${lessFolder}/_main/empty.less`
],
options: {
helpers: 'test/browser/runner-main-options.js',
specs: 'test/browser/runner-main-spec.js',
outfile: 'tmp/browser/test-runner-main.html'
}
},
legacy: {
src: [`${lessFolder}/legacy/*.less`],
options: {
helpers: 'test/browser/runner-legacy-options.js',
specs: 'test/browser/runner-legacy-spec.js',
outfile: 'tmp/browser/test-runner-legacy.html'
}
},
strictUnits: {
src: [`${lessFolder}/units/strict/*.less`],
options: {
helpers: 'test/browser/runner-strict-units-options.js',
specs: 'test/browser/runner-strict-units-spec.js',
outfile: 'tmp/browser/test-runner-strict-units.html'
}
},
errors: {
src: [
`${lessFolder}/errors/*.less`,
`${testFolder}/errors/javascript-error.less`,
`${localTests}/less/errors/*.less`
],
options: {
timeout: 20000,
helpers: 'test/browser/runner-errors-options.js',
specs: 'test/browser/runner-errors-spec.js',
outfile: 'tmp/browser/test-runner-errors.html'
}
},
noJsErrors: {
src: [`${lessFolder}/no-js-errors/*.less`],
options: {
helpers: 'test/browser/runner-no-js-errors-options.js',
specs: 'test/browser/runner-no-js-errors-spec.js',
outfile: 'tmp/browser/test-runner-no-js-errors.html'
}
},
browser: {
src: [
`${localTests}/less/*.less`,
`${localTests}/less/plugin/*.less`
],
options: {
helpers: 'test/browser/runner-browser-options.js',
specs: 'test/browser/runner-browser-spec.js',
outfile: 'tmp/browser/test-runner-browser.html'
}
},
relativeUrls: {
src: [`${localTests}/less/relative-urls/*.less`],
options: {
helpers: 'test/browser/runner-relative-urls-options.js',
specs: 'test/browser/runner-relative-urls-spec.js',
outfile: 'tmp/browser/test-runner-relative-urls.html'
}
},
rewriteUrls: {
src: [`${localTests}/less/rewrite-urls/*.less`],
options: {
helpers: 'test/browser/runner-rewrite-urls-options.js',
specs: 'test/browser/runner-rewrite-urls-spec.js',
outfile: 'tmp/browser/test-runner-rewrite-urls.html'
}
},
rootpath: {
src: [`${localTests}/less/rootpath/*.less`],
options: {
helpers: 'test/browser/runner-rootpath-options.js',
specs: 'test/browser/runner-rootpath-spec.js',
outfile: 'tmp/browser/test-runner-rootpath.html'
}
},
rootpathRelative: {
src: [`${localTests}/less/rootpath-relative/*.less`],
options: {
helpers: 'test/browser/runner-rootpath-relative-options.js',
specs: 'test/browser/runner-rootpath-relative-spec.js',
outfile: 'tmp/browser/test-runner-rootpath-relative.html'
}
},
rootpathRewriteUrls: {
src: [`${localTests}/less/rootpath-rewrite-urls/*.less`],
options: {
helpers:
'test/browser/runner-rootpath-rewrite-urls-options.js',
specs: 'test/browser/runner-rootpath-rewrite-urls-spec.js',
outfile:
'tmp/browser/test-runner-rootpath-rewrite-urls.html'
}
},
production: {
src: [`${localTests}/less/production/*.less`],
options: {
helpers: 'test/browser/runner-production-options.js',
specs: 'test/browser/runner-production-spec.js',
outfile: 'tmp/browser/test-runner-production.html'
}
},
modifyVars: {
src: [`${localTests}/less/modify-vars/*.less`],
options: {
helpers: 'test/browser/runner-modify-vars-options.js',
specs: 'test/browser/runner-modify-vars-spec.js',
outfile: 'tmp/browser/test-runner-modify-vars.html'
}
},
globalVars: {
src: [`${localTests}/less/global-vars/*.less`],
options: {
helpers: 'test/browser/runner-global-vars-options.js',
specs: 'test/browser/runner-global-vars-spec.js',
outfile: 'tmp/browser/test-runner-global-vars.html'
}
},
postProcessorPlugin: {
src: [`${lessFolder}/postProcessorPlugin/*.less`],
options: {
helpers: [
'test/plugins/postprocess/index.js',
'test/browser/runner-postProcessorPlugin-options.js'
],
specs: 'test/browser/runner-postProcessorPlugin.js',
outfile:
'tmp/browser/test-runner-post-processor-plugin.html'
}
},
preProcessorPlugin: {
src: [`${lessFolder}/preProcessorPlugin/*.less`],
options: {
helpers: [
'test/plugins/preprocess/index.js',
'test/browser/runner-preProcessorPlugin-options.js'
],
specs: 'test/browser/runner-preProcessorPlugin.js',
outfile: 'tmp/browser/test-runner-pre-processor-plugin.html'
}
},
visitorPlugin: {
src: [`${lessFolder}/visitorPlugin/*.less`],
options: {
helpers: [
'test/plugins/visitor/index.js',
'test/browser/runner-VisitorPlugin-options.js'
],
specs: 'test/browser/runner-VisitorPlugin.js',
outfile: 'tmp/browser/test-runner-visitor-plugin.html'
}
},
filemanagerPlugin: {
src: [`${lessFolder}/filemanagerPlugin/*.less`],
options: {
helpers: [
'test/plugins/filemanager/index.js',
'test/browser/runner-filemanagerPlugin-options.js'
],
specs: 'test/browser/runner-filemanagerPlugin.js',
outfile: 'tmp/browser/test-runner-filemanager-plugin.html'
}
}
}

2
node_modules/less/test/browser/generator/runner.js generated vendored Normal file
View File

@@ -0,0 +1,2 @@
const runner = require('./generate')
runner()

93
node_modules/less/test/browser/generator/template.js generated vendored Normal file
View File

@@ -0,0 +1,93 @@
const html = require('html-template-tag')
const path = require('path')
const { forceCovertToBrowserPath } = require('./utils')
const webRoot = path.resolve(__dirname, '../../../../../');
const mochaDir = forceCovertToBrowserPath(path.relative(webRoot, path.dirname(require.resolve('mocha'))))
const chaiDir = forceCovertToBrowserPath(path.relative(webRoot, path.dirname(require.resolve('chai'))))
const mochaTeamCityDir = forceCovertToBrowserPath(path.relative(webRoot, path.dirname(require.resolve('mocha-teamcity-reporter'))))
/**
* Generates HTML templates from list of test sheets
*/
module.exports = (stylesheets, helpers, spec, less) => {
if (!Array.isArray(helpers)) {
helpers = [helpers]
}
return html`
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Less.js Spec Runner</title>
<!-- for each test, generate CSS/LESS link tags -->
$${stylesheets.map(function(fullLessName) {
var pathParts = fullLessName.split('/');
var fullCssName = fullLessName
.replace(/\/(browser|test-data)\/less\//g, '/$1/css/')
.replace(/less$/, 'css')
var lessName = pathParts[pathParts.length - 1];
var name = lessName.split('.')[0];
return `
<!-- the tags to be generated -->
<link id="original-less:test-less-${name}" title="test-less-${name}" rel="stylesheet/less" type="text/css" href="/${path.relative(webRoot, fullLessName)}">
<link id="expected-less:test-less-${name}" rel="stylesheet" type="text/css" href="/${path.relative(webRoot, fullCssName)}">
` }).join('')}
$${helpers.map(helper => `
<script src="../../${helper}"></script>
`).join('')}
<link rel="stylesheet" href="/${mochaDir}/mocha.css">
</head>
<body>
<!-- content -->
<div id="mocha"></div>
<script src="/${mochaDir}/mocha.js"></script>
<script src="/${mochaTeamCityDir}/teamcityBrowser.js"></script>
<script src="/${chaiDir}/chai.js"></script>
<script>
expect = chai.expect
mocha.setup({
ui: 'bdd',
timeout: 2500
});
</script>
<script src="common.js"></script>
<script src="../../${spec}"></script>
<script src="${less || 'less.min.js'}"></script>
<script>
/** Saucelabs config */
onload = function() {
var runner = mocha.run();
var failedTests = [];
runner.on('end', function() {
window.mochaResults = runner.stats;
window.mochaResults.reports = failedTests;
});
runner.on('fail', logFailure);
function logFailure(test, err){
var flattenTitles = function(test){
var titles = [];
while (test.parent.title) {
titles.push(test.parent.title);
test = test.parent;
}
return titles.reverse();
};
failedTests.push({name: test.title, result: false, message: err.message, stack: err.stack, titles: flattenTitles(test) });
};
};
</script>
</body>
</html>
`
}

14
node_modules/less/test/browser/generator/utils.js generated vendored Normal file
View File

@@ -0,0 +1,14 @@
/**
* utils for covert browser paths,
* fix https://github.com/less/less.js/pull/4213
*
* @param {string} path
* @returns {string}
*/
function forceCovertToBrowserPath (path) {
return (path || '').replace(/\\/g, '/');
}
module.exports = {
forceCovertToBrowserPath
}