You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
5.0 KiB
112 lines
5.0 KiB
var lessTest = require('./less-test'), |
|
lessTester = lessTest(), |
|
path = require('path'), |
|
stylize = require('../lib/less-node/lessc-helper').stylize, |
|
nock = require('nock'); |
|
|
|
console.log('\n' + stylize('Less', 'underline') + '\n'); |
|
|
|
var testMap = [ |
|
[{ |
|
// TODO: Change this to rewriteUrls: 'all' once the relativeUrls option is removed |
|
relativeUrls: true, |
|
silent: true, |
|
javascriptEnabled: true |
|
}, '_main/'], |
|
[{}, 'namespacing/'], |
|
[{ |
|
math: 'parens' |
|
}, 'math/strict/'], |
|
[{ |
|
math: 'parens-division' |
|
}, 'math/parens-division/'], |
|
[{ |
|
math: 'always' |
|
}, 'math/always/'], |
|
// Use legacy strictMath: true here to demonstrate it still works |
|
[{strictMath: true, strictUnits: true, javascriptEnabled: true}, '../errors/eval/', |
|
lessTester.testErrors, null], |
|
[{strictMath: true, strictUnits: true, javascriptEnabled: true}, '../errors/parse/', |
|
lessTester.testErrors, null], |
|
[{math: 'strict', strictUnits: true, javascriptEnabled: true}, 'js-type-errors/', |
|
lessTester.testTypeErrors, null], |
|
[{math: 'strict', strictUnits: true, javascriptEnabled: false}, 'no-js-errors/', |
|
lessTester.testErrors, null], |
|
[{math: 'strict', dumpLineNumbers: 'comments'}, 'debug/', null, |
|
function(name) { return name + '-comments'; }], |
|
[{math: 'strict', dumpLineNumbers: 'mediaquery'}, 'debug/', null, |
|
function(name) { return name + '-mediaquery'; }], |
|
[{math: 'strict', dumpLineNumbers: 'all'}, 'debug/', null, |
|
function(name) { return name + '-all'; }], |
|
// TODO: Change this to rewriteUrls: false once the relativeUrls option is removed |
|
[{math: 'strict', relativeUrls: false, rootpath: 'folder (1)/'}, 'static-urls/'], |
|
[{math: 'strict', compress: true}, 'compression/'], |
|
|
|
[{math: 0, strictUnits: true}, 'units/strict/'], |
|
[{math: 0, strictUnits: false}, 'units/no-strict/'], |
|
|
|
[{math: 'strict', strictUnits: true, sourceMap: true, globalVars: true }, 'sourcemaps/', |
|
lessTester.testSourcemap, null, null, |
|
function(filename, type, baseFolder) { |
|
if (type === 'vars') { |
|
return path.join(baseFolder, filename) + '.json'; |
|
} |
|
return path.join('test/sourcemaps', filename) + '.json'; |
|
}], |
|
|
|
[{math: 'strict', strictUnits: true, globalVars: true }, '_main/import/json/', |
|
lessTester.testImports, null, true, |
|
function(filename, type, baseFolder) { |
|
return path.join(baseFolder, filename) + '.json'; |
|
}], |
|
[{math: 'strict', strictUnits: true, sourceMap: {sourceMapFileInline: true}}, |
|
'sourcemaps-empty/', lessTester.testEmptySourcemap], |
|
[{math: 'strict', strictUnits: true, sourceMap: {disableSourcemapAnnotation: true}}, |
|
'sourcemaps-disable-annotation/', lessTester.testSourcemapWithoutUrlAnnotation], |
|
[{math: 'strict', strictUnits: true, sourceMap: true}, |
|
'sourcemaps-variable-selector/', lessTester.testSourcemapWithVariableInSelector], |
|
[{globalVars: true, banner: '/**\n * Test\n */\n'}, 'globalVars/', |
|
null, null, null, function(name, type, baseFolder) { return path.join(baseFolder, name) + '.json'; }], |
|
[{modifyVars: true}, 'modifyVars/', |
|
null, null, null, function(name, type, baseFolder) { return path.join(baseFolder, name) + '.json'; }], |
|
[{urlArgs: '424242'}, 'url-args/'], |
|
[{rewriteUrls: 'all'}, 'rewrite-urls-all/'], |
|
[{rewriteUrls: 'local'}, 'rewrite-urls-local/'], |
|
[{rootpath: 'http://example.com/assets/css/', rewriteUrls: 'all'}, 'rootpath-rewrite-urls-all/'], |
|
[{rootpath: 'http://example.com/assets/css/', rewriteUrls: 'local'}, 'rootpath-rewrite-urls-local/'], |
|
[{paths: ['data/', '_main/import/']}, 'include-path/'], |
|
[{paths: 'data/'}, 'include-path-string/'], |
|
[{plugin: 'test/plugins/postprocess/'}, 'postProcessorPlugin/'], |
|
[{plugin: 'test/plugins/preprocess/'}, 'preProcessorPlugin/'], |
|
[{plugin: 'test/plugins/visitor/'}, 'visitorPlugin/'], |
|
[{plugin: 'test/plugins/filemanager/'}, 'filemanagerPlugin/'], |
|
[{math: 0}, '3rd-party/'], |
|
[{ processImports: false }, 'process-imports/'] |
|
]; |
|
testMap.forEach(function(args) { |
|
lessTester.runTestSet.apply(lessTester, args) |
|
}); |
|
lessTester.testSyncronous({syncImport: true}, '_main/import'); |
|
lessTester.testSyncronous({syncImport: true}, '_main/plugin'); |
|
lessTester.testSyncronous({syncImport: true}, 'math/strict/css'); |
|
lessTester.testNoOptions(); |
|
lessTester.testDisablePluginRule(); |
|
lessTester.testJSImport(); |
|
lessTester.finished(); |
|
|
|
(() => { |
|
// Create new tester, since tests are not independent and tests |
|
// above modify tester in a way that breaks remote imports. |
|
lessTester = lessTest(); |
|
var scope = nock('https://example.com') |
|
.get('/redirect.less').query(true) |
|
.reply(301, null, { location: '/target.less' }) |
|
.get('/target.less').query(true) |
|
.reply(200); |
|
lessTester.runTestSet( |
|
{}, |
|
'import-redirect/', |
|
lessTester.testImportRedirect(scope) |
|
); |
|
lessTester.finished(); |
|
})();
|
|
|