113 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 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();
 | |
| })();
 |