less 4.5.1 → 4.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -5
- package/bin/lessc +37 -23
- package/dist/less.js +14501 -11745
- package/dist/less.min.js +4 -4
- package/dist/less.min.js.map +1 -1
- package/index.cjs +41 -0
- package/lib/less/constants.js +5 -7
- package/lib/less/contexts.js +71 -55
- package/lib/less/data/colors.js +150 -153
- package/lib/less/data/index.js +4 -7
- package/lib/less/data/unit-conversions.js +2 -5
- package/lib/less/default-options.js +36 -26
- package/lib/less/deprecation.js +67 -0
- package/lib/less/environment/abstract-file-manager.js +62 -50
- package/lib/less/environment/abstract-plugin-loader.js +69 -46
- package/lib/less/environment/environment-api.ts +21 -0
- package/lib/less/environment/environment.js +34 -30
- package/lib/less/environment/file-manager-api.ts +77 -0
- package/lib/less/functions/boolean.js +13 -13
- package/lib/less/functions/color-blending.js +39 -31
- package/lib/less/functions/color.js +153 -137
- package/lib/less/functions/data-uri.js +73 -64
- package/lib/less/functions/default.js +9 -11
- package/lib/less/functions/function-caller.js +35 -34
- package/lib/less/functions/function-registry.js +16 -17
- package/lib/less/functions/index.js +33 -33
- package/lib/less/functions/list.js +88 -75
- package/lib/less/functions/math-helper.js +8 -11
- package/lib/less/functions/math.js +21 -21
- package/lib/less/functions/number.js +42 -53
- package/lib/less/functions/string.js +18 -22
- package/lib/less/functions/style.js +21 -20
- package/lib/less/functions/svg.js +83 -82
- package/lib/less/functions/types.js +28 -32
- package/lib/less/import-manager.js +73 -64
- package/lib/less/index.js +65 -65
- package/lib/less/less-error.js +63 -45
- package/lib/less/logger.js +11 -14
- package/lib/less/parse-tree.js +52 -53
- package/lib/less/parse.js +44 -44
- package/lib/less/parser/parser-input.js +151 -113
- package/lib/less/parser/parser.js +864 -658
- package/lib/less/plugin-manager.js +57 -46
- package/lib/less/render.js +17 -23
- package/lib/less/source-map-builder.js +52 -43
- package/lib/less/source-map-output.js +56 -43
- package/lib/less/transform-tree.js +40 -30
- package/lib/less/tree/anonymous.js +52 -28
- package/lib/less/tree/assignment.js +44 -27
- package/lib/less/tree/atrule-syntax.js +4 -6
- package/lib/less/tree/atrule.js +247 -140
- package/lib/less/tree/attribute.js +55 -24
- package/lib/less/tree/call.js +70 -42
- package/lib/less/tree/color.js +194 -145
- package/lib/less/tree/combinator.js +31 -21
- package/lib/less/tree/comment.js +44 -23
- package/lib/less/tree/condition.js +61 -36
- package/lib/less/tree/container.js +90 -34
- package/lib/less/tree/debug-info.js +28 -15
- package/lib/less/tree/declaration.js +97 -52
- package/lib/less/tree/detached-ruleset.js +42 -24
- package/lib/less/tree/dimension.js +127 -71
- package/lib/less/tree/element.js +82 -52
- package/lib/less/tree/expression.js +75 -50
- package/lib/less/tree/extend.js +71 -42
- package/lib/less/tree/import.js +184 -110
- package/lib/less/tree/index.js +52 -81
- package/lib/less/tree/javascript.js +43 -32
- package/lib/less/tree/js-eval-node.js +46 -32
- package/lib/less/tree/keyword.js +25 -17
- package/lib/less/tree/media.js +77 -35
- package/lib/less/tree/merge-rules.js +47 -0
- package/lib/less/tree/mixin-call.js +181 -98
- package/lib/less/tree/mixin-definition.js +211 -117
- package/lib/less/tree/namespace-value.js +63 -44
- package/lib/less/tree/negative.js +34 -21
- package/lib/less/tree/nested-at-rule.js +149 -66
- package/lib/less/tree/node.js +225 -90
- package/lib/less/tree/operation.js +59 -34
- package/lib/less/tree/paren.js +34 -17
- package/lib/less/tree/property.js +66 -35
- package/lib/less/tree/query-in-parens.js +52 -60
- package/lib/less/tree/quoted.js +93 -44
- package/lib/less/tree/ruleset.js +632 -318
- package/lib/less/tree/selector.js +151 -77
- package/lib/less/tree/unicode-descriptor.js +14 -12
- package/lib/less/tree/unit.js +111 -63
- package/lib/less/tree/url.js +62 -38
- package/lib/less/tree/value.js +50 -34
- package/lib/less/tree/variable-call.js +47 -30
- package/lib/less/tree/variable.js +53 -31
- package/lib/less/utils.js +44 -47
- package/lib/less/visitors/extend-visitor.js +233 -172
- package/lib/less/visitors/import-sequencer.js +24 -24
- package/lib/less/visitors/import-visitor.js +62 -52
- package/lib/less/visitors/index.js +14 -17
- package/lib/less/visitors/join-selector-visitor.js +40 -37
- package/lib/less/visitors/set-tree-visibility-visitor.js +32 -18
- package/lib/less/visitors/to-css-visitor.js +135 -128
- package/lib/less/visitors/visitor.js +60 -45
- package/lib/less-browser/add-default-options.js +23 -13
- package/lib/less-browser/bootstrap.js +23 -17
- package/lib/less-browser/browser.js +24 -21
- package/lib/less-browser/cache.js +17 -19
- package/lib/less-browser/error-reporting.js +52 -44
- package/lib/less-browser/file-manager.js +52 -42
- package/lib/less-browser/image-size.js +12 -12
- package/lib/less-browser/index.js +131 -105
- package/lib/less-browser/log-listener.js +30 -31
- package/lib/less-browser/plugin-loader.js +10 -10
- package/lib/less-browser/utils.js +19 -21
- package/lib/less-node/environment.js +32 -8
- package/lib/less-node/file-manager.js +62 -45
- package/lib/less-node/fs.js +11 -8
- package/lib/less-node/image-size.js +40 -31
- package/lib/less-node/index.js +28 -19
- package/lib/less-node/lessc-helper.js +20 -21
- package/lib/less-node/plugin-loader.js +35 -27
- package/lib/less-node/url-file-manager.js +33 -31
- package/package.json +29 -18
- package/.eslintignore +0 -6
- package/.eslintrc.js +0 -63
- package/Gruntfile.js +0 -403
- package/bower.json +0 -22
- package/lib/less/constants.js.map +0 -1
- package/lib/less/contexts.js.map +0 -1
- package/lib/less/data/colors.js.map +0 -1
- package/lib/less/data/index.js.map +0 -1
- package/lib/less/data/unit-conversions.js.map +0 -1
- package/lib/less/default-options.js.map +0 -1
- package/lib/less/environment/abstract-file-manager.js.map +0 -1
- package/lib/less/environment/abstract-plugin-loader.js.map +0 -1
- package/lib/less/environment/environment-api.js +0 -3
- package/lib/less/environment/environment-api.js.map +0 -1
- package/lib/less/environment/environment.js.map +0 -1
- package/lib/less/environment/file-manager-api.js +0 -3
- package/lib/less/environment/file-manager-api.js.map +0 -1
- package/lib/less/functions/boolean.js.map +0 -1
- package/lib/less/functions/color-blending.js.map +0 -1
- package/lib/less/functions/color.js.map +0 -1
- package/lib/less/functions/data-uri.js.map +0 -1
- package/lib/less/functions/default.js.map +0 -1
- package/lib/less/functions/function-caller.js.map +0 -1
- package/lib/less/functions/function-registry.js.map +0 -1
- package/lib/less/functions/index.js.map +0 -1
- package/lib/less/functions/list.js.map +0 -1
- package/lib/less/functions/math-helper.js.map +0 -1
- package/lib/less/functions/math.js.map +0 -1
- package/lib/less/functions/number.js.map +0 -1
- package/lib/less/functions/string.js.map +0 -1
- package/lib/less/functions/style.js.map +0 -1
- package/lib/less/functions/svg.js.map +0 -1
- package/lib/less/functions/types.js.map +0 -1
- package/lib/less/import-manager.js.map +0 -1
- package/lib/less/index.js.map +0 -1
- package/lib/less/less-error.js.map +0 -1
- package/lib/less/logger.js.map +0 -1
- package/lib/less/parse-tree.js.map +0 -1
- package/lib/less/parse.js.map +0 -1
- package/lib/less/parser/parser-input.js.map +0 -1
- package/lib/less/parser/parser.js.map +0 -1
- package/lib/less/plugin-manager.js.map +0 -1
- package/lib/less/render.js.map +0 -1
- package/lib/less/source-map-builder.js.map +0 -1
- package/lib/less/source-map-output.js.map +0 -1
- package/lib/less/transform-tree.js.map +0 -1
- package/lib/less/tree/anonymous.js.map +0 -1
- package/lib/less/tree/assignment.js.map +0 -1
- package/lib/less/tree/atrule-syntax.js.map +0 -1
- package/lib/less/tree/atrule.js.map +0 -1
- package/lib/less/tree/attribute.js.map +0 -1
- package/lib/less/tree/call.js.map +0 -1
- package/lib/less/tree/color.js.map +0 -1
- package/lib/less/tree/combinator.js.map +0 -1
- package/lib/less/tree/comment.js.map +0 -1
- package/lib/less/tree/condition.js.map +0 -1
- package/lib/less/tree/container.js.map +0 -1
- package/lib/less/tree/debug-info.js.map +0 -1
- package/lib/less/tree/declaration.js.map +0 -1
- package/lib/less/tree/detached-ruleset.js.map +0 -1
- package/lib/less/tree/dimension.js.map +0 -1
- package/lib/less/tree/element.js.map +0 -1
- package/lib/less/tree/expression.js.map +0 -1
- package/lib/less/tree/extend.js.map +0 -1
- package/lib/less/tree/import.js.map +0 -1
- package/lib/less/tree/index.js.map +0 -1
- package/lib/less/tree/javascript.js.map +0 -1
- package/lib/less/tree/js-eval-node.js.map +0 -1
- package/lib/less/tree/keyword.js.map +0 -1
- package/lib/less/tree/media.js.map +0 -1
- package/lib/less/tree/mixin-call.js.map +0 -1
- package/lib/less/tree/mixin-definition.js.map +0 -1
- package/lib/less/tree/namespace-value.js.map +0 -1
- package/lib/less/tree/negative.js.map +0 -1
- package/lib/less/tree/nested-at-rule.js.map +0 -1
- package/lib/less/tree/node.js.map +0 -1
- package/lib/less/tree/operation.js.map +0 -1
- package/lib/less/tree/paren.js.map +0 -1
- package/lib/less/tree/property.js.map +0 -1
- package/lib/less/tree/query-in-parens.js.map +0 -1
- package/lib/less/tree/quoted.js.map +0 -1
- package/lib/less/tree/ruleset.js.map +0 -1
- package/lib/less/tree/selector.js.map +0 -1
- package/lib/less/tree/unicode-descriptor.js.map +0 -1
- package/lib/less/tree/unit.js.map +0 -1
- package/lib/less/tree/url.js.map +0 -1
- package/lib/less/tree/value.js.map +0 -1
- package/lib/less/tree/variable-call.js.map +0 -1
- package/lib/less/tree/variable.js.map +0 -1
- package/lib/less/utils.js.map +0 -1
- package/lib/less/visitors/extend-visitor.js.map +0 -1
- package/lib/less/visitors/import-sequencer.js.map +0 -1
- package/lib/less/visitors/import-visitor.js.map +0 -1
- package/lib/less/visitors/index.js.map +0 -1
- package/lib/less/visitors/join-selector-visitor.js.map +0 -1
- package/lib/less/visitors/set-tree-visibility-visitor.js.map +0 -1
- package/lib/less/visitors/to-css-visitor.js.map +0 -1
- package/lib/less/visitors/visitor.js.map +0 -1
- package/lib/less-browser/add-default-options.js.map +0 -1
- package/lib/less-browser/bootstrap.js.map +0 -1
- package/lib/less-browser/browser.js.map +0 -1
- package/lib/less-browser/cache.js.map +0 -1
- package/lib/less-browser/error-reporting.js.map +0 -1
- package/lib/less-browser/file-manager.js.map +0 -1
- package/lib/less-browser/image-size.js.map +0 -1
- package/lib/less-browser/index.js.map +0 -1
- package/lib/less-browser/log-listener.js.map +0 -1
- package/lib/less-browser/plugin-loader.js.map +0 -1
- package/lib/less-browser/utils.js.map +0 -1
- package/lib/less-node/environment.js.map +0 -1
- package/lib/less-node/file-manager.js.map +0 -1
- package/lib/less-node/fs.js.map +0 -1
- package/lib/less-node/image-size.js.map +0 -1
- package/lib/less-node/index.js.map +0 -1
- package/lib/less-node/lessc-helper.js.map +0 -1
- package/lib/less-node/plugin-loader.js.map +0 -1
- package/lib/less-node/url-file-manager.js.map +0 -1
- package/scripts/coverage-lines.js +0 -207
- package/scripts/coverage-report.js +0 -158
- package/scripts/postinstall.js +0 -61
- package/test/.eslintrc.json +0 -9
- package/test/README.md +0 -3
- package/test/browser/common.js +0 -251
- package/test/browser/css/global-vars/simple.css +0 -3
- package/test/browser/css/modify-vars/simple.css +0 -8
- package/test/browser/css/plugin/plugin.css +0 -3
- package/test/browser/css/postProcessor/postProcessor.css +0 -4
- package/test/browser/css/relative-urls/urls.css +0 -36
- package/test/browser/css/rewrite-urls/urls.css +0 -36
- package/test/browser/css/rootpath/urls.css +0 -35
- package/test/browser/css/rootpath-relative/urls.css +0 -35
- package/test/browser/css/rootpath-rewrite-urls/urls.css +0 -35
- package/test/browser/css/urls.css +0 -54
- package/test/browser/generator/benchmark.config.js +0 -50
- package/test/browser/generator/generate.js +0 -78
- package/test/browser/generator/runner.config.js +0 -184
- package/test/browser/generator/runner.js +0 -2
- package/test/browser/generator/template.js +0 -104
- package/test/browser/generator/utils.js +0 -14
- package/test/browser/less/console-errors/test-error.less +0 -3
- package/test/browser/less/console-errors/test-error.txt +0 -2
- package/test/browser/less/errors/image-height-error.less +0 -3
- package/test/browser/less/errors/image-height-error.txt +0 -4
- package/test/browser/less/errors/image-size-error.less +0 -3
- package/test/browser/less/errors/image-size-error.txt +0 -4
- package/test/browser/less/errors/image-width-error.less +0 -3
- package/test/browser/less/errors/image-width-error.txt +0 -4
- package/test/browser/less/global-vars/simple.less +0 -3
- package/test/browser/less/imports/urls.less +0 -4
- package/test/browser/less/imports/urls2.less +0 -4
- package/test/browser/less/modify-vars/imports/simple2.less +0 -4
- package/test/browser/less/modify-vars/simple.less +0 -8
- package/test/browser/less/nested-gradient-with-svg-gradient/mixin-consumer.less +0 -5
- package/test/browser/less/nested-gradient-with-svg-gradient/svg-gradient-mixin.less +0 -15
- package/test/browser/less/plugin/plugin.js +0 -4
- package/test/browser/less/plugin/plugin.less +0 -4
- package/test/browser/less/postProcessor/postProcessor.less +0 -4
- package/test/browser/less/relative-urls/urls.less +0 -34
- package/test/browser/less/rewrite-urls/urls.less +0 -34
- package/test/browser/less/rootpath/urls.less +0 -33
- package/test/browser/less/rootpath-relative/urls.less +0 -33
- package/test/browser/less/rootpath-rewrite-urls/urls.less +0 -33
- package/test/browser/less/urls.less +0 -62
- package/test/browser/runner-VisitorPlugin-options.js +0 -3
- package/test/browser/runner-VisitorPlugin.js +0 -3
- package/test/browser/runner-browser-options.js +0 -51
- package/test/browser/runner-browser-spec.js +0 -12
- package/test/browser/runner-console-errors.js +0 -5
- package/test/browser/runner-errors-options.js +0 -6
- package/test/browser/runner-errors-spec.js +0 -3
- package/test/browser/runner-filemanagerPlugin-options.js +0 -5
- package/test/browser/runner-filemanagerPlugin.js +0 -3
- package/test/browser/runner-global-vars-options.js +0 -7
- package/test/browser/runner-global-vars-spec.js +0 -3
- package/test/browser/runner-main-options.js +0 -17
- package/test/browser/runner-main-spec.js +0 -7
- package/test/browser/runner-modify-vars-options.js +0 -5
- package/test/browser/runner-modify-vars-spec.js +0 -33
- package/test/browser/runner-no-js-errors-options.js +0 -4
- package/test/browser/runner-no-js-errors-spec.js +0 -3
- package/test/browser/runner-postProcessorPlugin-options.js +0 -3
- package/test/browser/runner-postProcessorPlugin.js +0 -3
- package/test/browser/runner-preProcessorPlugin-options.js +0 -3
- package/test/browser/runner-preProcessorPlugin.js +0 -3
- package/test/browser/runner-production-options.js +0 -3
- package/test/browser/runner-production-spec.js +0 -5
- package/test/browser/runner-relative-urls-options.js +0 -3
- package/test/browser/runner-relative-urls-spec.js +0 -3
- package/test/browser/runner-rewrite-urls-options.js +0 -3
- package/test/browser/runner-rewrite-urls-spec.js +0 -3
- package/test/browser/runner-rootpath-options.js +0 -3
- package/test/browser/runner-rootpath-relative-options.js +0 -4
- package/test/browser/runner-rootpath-relative-spec.js +0 -3
- package/test/browser/runner-rootpath-rewrite-urls-options.js +0 -4
- package/test/browser/runner-rootpath-rewrite-urls-spec.js +0 -3
- package/test/browser/runner-rootpath-spec.js +0 -3
- package/test/browser/runner-strict-units-options.js +0 -5
- package/test/browser/runner-strict-units-spec.js +0 -3
- package/test/index.js +0 -307
- package/test/less-test.js +0 -984
- package/test/mocha-playwright/runner.js +0 -210
- package/test/modify-vars.js +0 -28
- package/test/plugins/filemanager/index.js +0 -19
- package/test/plugins/postprocess/index.js +0 -14
- package/test/plugins/preprocess/index.js +0 -19
- package/test/plugins/visitor/index.js +0 -24
- package/test/sourcemaps/basic.json +0 -1
- package/test/sourcemaps/comprehensive.json +0 -1
- package/test/sourcemaps/custom-props.json +0 -1
- package/test/sourcemaps/index.html +0 -17
- package/test/sourcemaps/sourcemaps-basepath.json +0 -1
- package/test/sourcemaps/sourcemaps-include-source.json +0 -1
- package/test/sourcemaps/sourcemaps-rootpath.json +0 -1
- package/test/sourcemaps/sourcemaps-url.json +0 -1
- package/test/sourcemaps-disable-annotation/basic.json +0 -1
- package/test/sourcemaps-variable-selector/basic.json +0 -1
- package/test/test-es6.ts +0 -17
- package/test.less +0 -1
- package/tsconfig.build.json +0 -7
- package/tsconfig.json +0 -21
package/test/README.md
DELETED
package/test/browser/common.js
DELETED
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
var logMessages = [];
|
|
2
|
-
window.less = window.less || {};
|
|
3
|
-
|
|
4
|
-
var logLevel_debug = 4,
|
|
5
|
-
logLevel_info = 3,
|
|
6
|
-
logLevel_warn = 2,
|
|
7
|
-
logLevel_error = 1;
|
|
8
|
-
|
|
9
|
-
// The amount of logging in the javascript console.
|
|
10
|
-
// 3 - Debug, information and errors
|
|
11
|
-
// 2 - Information and errors
|
|
12
|
-
// 1 - Errors
|
|
13
|
-
// 0 - None
|
|
14
|
-
// Defaults to 2
|
|
15
|
-
|
|
16
|
-
less.loggers = [
|
|
17
|
-
{
|
|
18
|
-
debug: function(msg) {
|
|
19
|
-
if (less.options.logLevel >= logLevel_debug) {
|
|
20
|
-
logMessages.push(msg);
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
info: function(msg) {
|
|
24
|
-
if (less.options.logLevel >= logLevel_info) {
|
|
25
|
-
logMessages.push(msg);
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
warn: function(msg) {
|
|
29
|
-
if (less.options.logLevel >= logLevel_warn) {
|
|
30
|
-
logMessages.push(msg);
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
error: function(msg) {
|
|
34
|
-
if (less.options.logLevel >= logLevel_error) {
|
|
35
|
-
logMessages.push(msg);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
];
|
|
40
|
-
|
|
41
|
-
testLessEqualsInDocument = function () {
|
|
42
|
-
testLessInDocument(testSheet);
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
testLessErrorsInDocument = function (isConsole) {
|
|
46
|
-
testLessInDocument(isConsole ? testErrorSheetConsole : testErrorSheet);
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
testLessInDocument = function (testFunc) {
|
|
50
|
-
var links = document.getElementsByTagName('link'),
|
|
51
|
-
typePattern = /^text\/(x-)?less$/;
|
|
52
|
-
|
|
53
|
-
for (var i = 0; i < links.length; i++) {
|
|
54
|
-
if (links[i].rel === 'stylesheet/less' || (links[i].rel.match(/stylesheet/) &&
|
|
55
|
-
(links[i].type.match(typePattern)))) {
|
|
56
|
-
testFunc(links[i]);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
ieFormat = function(text) {
|
|
62
|
-
var styleNode = document.createElement('style');
|
|
63
|
-
styleNode.setAttribute('type', 'text/css');
|
|
64
|
-
var headNode = document.getElementsByTagName('head')[0];
|
|
65
|
-
headNode.appendChild(styleNode);
|
|
66
|
-
try {
|
|
67
|
-
if (styleNode.styleSheet) {
|
|
68
|
-
styleNode.styleSheet.cssText = text;
|
|
69
|
-
} else {
|
|
70
|
-
styleNode.innerText = text;
|
|
71
|
-
}
|
|
72
|
-
} catch (e) {
|
|
73
|
-
throw new Error('Couldn\'t reassign styleSheet.cssText.');
|
|
74
|
-
}
|
|
75
|
-
var transformedText = styleNode.styleSheet ? styleNode.styleSheet.cssText : styleNode.innerText;
|
|
76
|
-
headNode.removeChild(styleNode);
|
|
77
|
-
return transformedText;
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
testSheet = function (sheet) {
|
|
81
|
-
it(sheet.id + ' should match the expected output', function (done) {
|
|
82
|
-
var lessOutputId = sheet.id.replace('original-', ''),
|
|
83
|
-
expectedOutputId = 'expected-' + lessOutputId,
|
|
84
|
-
lessOutputObj,
|
|
85
|
-
lessOutput,
|
|
86
|
-
expectedOutputHref = document.getElementById(expectedOutputId).href,
|
|
87
|
-
expectedOutput = loadFile(expectedOutputHref);
|
|
88
|
-
|
|
89
|
-
// Browser spec generates less on the fly, so we need to loose control
|
|
90
|
-
less.pageLoadFinished
|
|
91
|
-
.then(function () {
|
|
92
|
-
lessOutputObj = document.getElementById(lessOutputId);
|
|
93
|
-
lessOutput = lessOutputObj.styleSheet ? lessOutputObj.styleSheet.cssText :
|
|
94
|
-
(lessOutputObj.innerText || lessOutputObj.innerHTML);
|
|
95
|
-
|
|
96
|
-
expectedOutput
|
|
97
|
-
.then(function (text) {
|
|
98
|
-
if (window.navigator.userAgent.indexOf('MSIE') >= 0 ||
|
|
99
|
-
window.navigator.userAgent.indexOf('Trident/') >= 0) {
|
|
100
|
-
text = ieFormat(text);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// Normalize URLs: convert absolute URLs back to relative for comparison
|
|
104
|
-
// The browser resolves relative URLs when reading from DOM, but we want to compare against the original relative URLs
|
|
105
|
-
lessOutput = lessOutput.replace(/url\("http:\/\/localhost:8081\/packages\/less\/node_modules\/@less\/test-data\/tests-unit\/([^"]+)"\)/g, 'url("$1")');
|
|
106
|
-
// Also normalize directory-prefixed relative URLs (e.g., "at-rules/myfont.woff2" -> "myfont.woff2")
|
|
107
|
-
// This happens because the browser resolves URLs relative to the HTML document location
|
|
108
|
-
lessOutput = lessOutput.replace(/url\("([a-z-]+\/)([^"]+)"\)/g, 'url("$2")');
|
|
109
|
-
// Also normalize @import statements that get resolved to absolute URLs
|
|
110
|
-
lessOutput = lessOutput.replace(/@import "http:\/\/localhost:8081\/packages\/less\/node_modules\/@less\/test-data\/tests-unit\/([^"]+)"(.*);/g, '@import "$1"$2;');
|
|
111
|
-
// Also normalize @import with directory prefix (e.g., "at-rules-keyword-comments/test.css" -> "test.css")
|
|
112
|
-
lessOutput = lessOutput.replace(/@import "([a-z-]+\/)([^"]+)"(.*);/g, '@import "$2"$3;');
|
|
113
|
-
|
|
114
|
-
expect(lessOutput).to.equal(text);
|
|
115
|
-
done();
|
|
116
|
-
})
|
|
117
|
-
.catch(function(err) {
|
|
118
|
-
done(err);
|
|
119
|
-
});
|
|
120
|
-
})
|
|
121
|
-
.catch(function(err) {
|
|
122
|
-
done(err);
|
|
123
|
-
});
|
|
124
|
-
});
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
// TODO: do it cleaner - the same way as in css
|
|
128
|
-
|
|
129
|
-
function extractId(href) {
|
|
130
|
-
return href.replace(/^[a-z-]+:\/+?[^\/]+/i, '') // Remove protocol & domain
|
|
131
|
-
.replace(/^\//, '') // Remove root /
|
|
132
|
-
.replace(/\.[a-zA-Z]+$/, '') // Remove simple extension
|
|
133
|
-
.replace(/[^\.\w-]+/g, '-') // Replace illegal characters
|
|
134
|
-
.replace(/\./g, ':'); // Replace dots with colons(for valid id)
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
waitFor = function (waitFunc) {
|
|
138
|
-
return new Promise(function (resolve) {
|
|
139
|
-
var timeoutId = setInterval(function () {
|
|
140
|
-
if (waitFunc()) {
|
|
141
|
-
clearInterval(timeoutId);
|
|
142
|
-
resolve();
|
|
143
|
-
}
|
|
144
|
-
}, 5);
|
|
145
|
-
});
|
|
146
|
-
};
|
|
147
|
-
|
|
148
|
-
testErrorSheet = function (sheet) {
|
|
149
|
-
it(sheet.id + ' should match an error', function (done) {
|
|
150
|
-
var lessHref = sheet.href,
|
|
151
|
-
id = 'less-error-message:' + extractId(lessHref),
|
|
152
|
-
errorHref = lessHref.replace(/.less$/, '.txt'),
|
|
153
|
-
errorFile = loadFile(errorHref),
|
|
154
|
-
actualErrorElement,
|
|
155
|
-
actualErrorMsg;
|
|
156
|
-
|
|
157
|
-
// Less.js sets 10ms timer in order to add error message on top of page.
|
|
158
|
-
waitFor(function () {
|
|
159
|
-
actualErrorElement = document.getElementById(id);
|
|
160
|
-
return actualErrorElement !== null;
|
|
161
|
-
}).then(function () {
|
|
162
|
-
var innerText = (actualErrorElement.innerHTML
|
|
163
|
-
.replace(/<h3>|<\/?p>|<a href="[^"]*">|<\/a>|<ul>|<\/?pre( class="?[^">]*"?)?>|<\/li>|<\/?label>/ig, '')
|
|
164
|
-
.replace(/<\/h3>/ig, ' ')
|
|
165
|
-
.replace(/<li>|<\/ul>|<br>/ig, '\n'))
|
|
166
|
-
.replace(/&/ig, '&')
|
|
167
|
-
// for IE8
|
|
168
|
-
.replace(/\r\n/g, '\n')
|
|
169
|
-
.replace(/\. \nin/, '. in');
|
|
170
|
-
actualErrorMsg = innerText
|
|
171
|
-
.replace(/\n\d+/g, function (lineNo) {
|
|
172
|
-
return lineNo + ' ';
|
|
173
|
-
})
|
|
174
|
-
.replace(/\n\s*in /g, ' in ')
|
|
175
|
-
.replace(/\n{2,}/g, '\n')
|
|
176
|
-
.replace(/\nStack Trace\n[\s\S]*/i, '')
|
|
177
|
-
.replace(/\n$/, '')
|
|
178
|
-
.trim();
|
|
179
|
-
actualErrorMsg = actualErrorMsg
|
|
180
|
-
.replace(/ in [\w\-]+\.less( on line \d+, column \d+)?:?$/, '') // Remove filename and optional line/column from end of error message
|
|
181
|
-
.replace(/\{path\}/g, '')
|
|
182
|
-
.replace(/\{pathrel\}/g, '')
|
|
183
|
-
.replace(/\{pathhref\}/g, 'http://localhost:8081/packages/less/node_modules/@less/test-data/tests-error/eval/')
|
|
184
|
-
.replace(/\{404status\}/g, ' (404)')
|
|
185
|
-
.replace(/\{node\}[\s\S]*\{\/node\}/g, '')
|
|
186
|
-
.replace(/\n$/, '')
|
|
187
|
-
.trim();
|
|
188
|
-
errorFile
|
|
189
|
-
.then(function (errorTxt) {
|
|
190
|
-
errorTxt = errorTxt
|
|
191
|
-
.replace(/\{path\}/g, '')
|
|
192
|
-
.replace(/\{pathrel\}/g, '')
|
|
193
|
-
.replace(/\{pathhref\}/g, 'http://localhost:8081/packages/less/node_modules/@less/test-data/tests-error/eval/')
|
|
194
|
-
.replace(/\{404status\}/g, ' (404)')
|
|
195
|
-
.replace(/\{node\}[\s\S]*\{\/node\}/g, '')
|
|
196
|
-
.replace(/\n$/, '')
|
|
197
|
-
.trim();
|
|
198
|
-
expect(actualErrorMsg).to.equal(errorTxt);
|
|
199
|
-
if (errorTxt == actualErrorMsg) {
|
|
200
|
-
actualErrorElement.style.display = 'none';
|
|
201
|
-
}
|
|
202
|
-
done();
|
|
203
|
-
})
|
|
204
|
-
.catch(function (err) {
|
|
205
|
-
done(err);
|
|
206
|
-
});
|
|
207
|
-
});
|
|
208
|
-
});
|
|
209
|
-
};
|
|
210
|
-
|
|
211
|
-
testErrorSheetConsole = function (sheet) {
|
|
212
|
-
it(sheet.id + ' should match an error', function (done) {
|
|
213
|
-
var lessHref = sheet.href,
|
|
214
|
-
id = sheet.id.replace(/^original-less:/, 'less-error-message:'),
|
|
215
|
-
errorHref = lessHref.replace(/.less$/, '.txt'),
|
|
216
|
-
errorFile = loadFile(errorHref),
|
|
217
|
-
actualErrorElement = document.getElementById(id),
|
|
218
|
-
actualErrorMsg = logMessages[logMessages.length - 1]
|
|
219
|
-
.replace(/\nStack Trace\n[\s\S]*/, '');
|
|
220
|
-
|
|
221
|
-
describe('the error', function () {
|
|
222
|
-
expect(actualErrorElement).to.be.null;
|
|
223
|
-
});
|
|
224
|
-
|
|
225
|
-
errorFile
|
|
226
|
-
.then(function (errorTxt) {
|
|
227
|
-
errorTxt
|
|
228
|
-
.replace(/\{path\}/g, '')
|
|
229
|
-
.replace(/\{pathrel\}/g, '')
|
|
230
|
-
.replace(/\{pathhref\}/g, 'http://localhost:8081/browser/less/')
|
|
231
|
-
.replace(/\{404status\}/g, ' (404)')
|
|
232
|
-
.replace(/\{node\}.*\{\/node\}/g, '')
|
|
233
|
-
.trim();
|
|
234
|
-
expect(actualErrorMsg).to.equal(errorTxt);
|
|
235
|
-
done();
|
|
236
|
-
});
|
|
237
|
-
});
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
loadFile = function (href) {
|
|
241
|
-
return new Promise(function (resolve, reject) {
|
|
242
|
-
var request = new XMLHttpRequest();
|
|
243
|
-
request.open('GET', href, true);
|
|
244
|
-
request.onreadystatechange = function () {
|
|
245
|
-
if (request.readyState == 4) {
|
|
246
|
-
resolve(request.responseText.replace(/\r/g, ''));
|
|
247
|
-
}
|
|
248
|
-
};
|
|
249
|
-
request.send(null);
|
|
250
|
-
});
|
|
251
|
-
};
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
@import "http://localhost:8081/packages/less/test/browser/less/imports/modify-this.css";
|
|
2
|
-
@import "http://localhost:8081/packages/less/test/browser/less/imports/modify-again.css";
|
|
3
|
-
.modify {
|
|
4
|
-
my-url: url("http://localhost:8081/packages/less/test/browser/less/imports/a.png");
|
|
5
|
-
}
|
|
6
|
-
.modify {
|
|
7
|
-
my-url: url("http://localhost:8081/packages/less/test/browser/less/imports/b.png");
|
|
8
|
-
}
|
|
9
|
-
@font-face {
|
|
10
|
-
src: url("/fonts/garamond-pro.ttf");
|
|
11
|
-
src: local(Futura-Medium), url(http://localhost:8081/packages/less/test/browser/less/relative-urls/fonts.svg#MyGeometricModern) format("svg");
|
|
12
|
-
}
|
|
13
|
-
#shorthands {
|
|
14
|
-
background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
|
|
15
|
-
}
|
|
16
|
-
#misc {
|
|
17
|
-
background-image: url(http://localhost:8081/packages/less/test/browser/less/relative-urls/images/image.jpg);
|
|
18
|
-
background: url("#inline-svg");
|
|
19
|
-
}
|
|
20
|
-
#data-uri {
|
|
21
|
-
background: url(data:image/png;charset=utf-8;base64,
|
|
22
|
-
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
|
|
23
|
-
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
|
|
24
|
-
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
|
|
25
|
-
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
|
|
26
|
-
background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
|
|
27
|
-
}
|
|
28
|
-
#svg-data-uri {
|
|
29
|
-
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
|
|
30
|
-
}
|
|
31
|
-
.comma-delimited {
|
|
32
|
-
background: url(http://localhost:8081/packages/less/test/browser/less/relative-urls/bg.jpg) no-repeat, url(http://localhost:8081/packages/less/test/browser/less/relative-urls/bg.png) repeat-x top left, url(http://localhost:8081/packages/less/test/browser/less/relative-urls/bg);
|
|
33
|
-
}
|
|
34
|
-
.values {
|
|
35
|
-
url: url('http://localhost:8081/packages/less/test/browser/less/relative-urls/Trebuchet');
|
|
36
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
@import "http://localhost:8081/packages/less/test/browser/less/imports/modify-this.css";
|
|
2
|
-
@import "http://localhost:8081/packages/less/test/browser/less/imports/modify-again.css";
|
|
3
|
-
.modify {
|
|
4
|
-
my-url: url("http://localhost:8081/packages/less/test/browser/less/imports/a.png");
|
|
5
|
-
}
|
|
6
|
-
.modify {
|
|
7
|
-
my-url: url("http://localhost:8081/packages/less/test/browser/less/imports/b.png");
|
|
8
|
-
}
|
|
9
|
-
@font-face {
|
|
10
|
-
src: url("/fonts/garamond-pro.ttf");
|
|
11
|
-
src: local(Futura-Medium), url(http://localhost:8081/packages/less/test/browser/less/rewrite-urls/fonts.svg#MyGeometricModern) format("svg");
|
|
12
|
-
}
|
|
13
|
-
#shorthands {
|
|
14
|
-
background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
|
|
15
|
-
}
|
|
16
|
-
#misc {
|
|
17
|
-
background-image: url(http://localhost:8081/packages/less/test/browser/less/rewrite-urls/images/image.jpg);
|
|
18
|
-
background: url("#inline-svg");
|
|
19
|
-
}
|
|
20
|
-
#data-uri {
|
|
21
|
-
background: url(data:image/png;charset=utf-8;base64,
|
|
22
|
-
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
|
|
23
|
-
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
|
|
24
|
-
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
|
|
25
|
-
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
|
|
26
|
-
background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
|
|
27
|
-
}
|
|
28
|
-
#svg-data-uri {
|
|
29
|
-
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
|
|
30
|
-
}
|
|
31
|
-
.comma-delimited {
|
|
32
|
-
background: url(http://localhost:8081/packages/less/test/browser/less/rewrite-urls/bg.jpg) no-repeat, url(http://localhost:8081/packages/less/test/browser/less/rewrite-urls/bg.png) repeat-x top left, url(http://localhost:8081/packages/less/test/browser/less/rewrite-urls/bg);
|
|
33
|
-
}
|
|
34
|
-
.values {
|
|
35
|
-
url: url('http://localhost:8081/packages/less/test/browser/less/rewrite-urls/Trebuchet');
|
|
36
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
@import "https://localhost/modify-this.css";
|
|
2
|
-
@import "https://localhost/modify-again.css";
|
|
3
|
-
.modify {
|
|
4
|
-
my-url: url("https://localhost/a.png");
|
|
5
|
-
}
|
|
6
|
-
.modify {
|
|
7
|
-
my-url: url("https://localhost/b.png");
|
|
8
|
-
}
|
|
9
|
-
@font-face {
|
|
10
|
-
src: url("/fonts/garamond-pro.ttf");
|
|
11
|
-
src: local(Futura-Medium), url(https://localhost/fonts.svg#MyGeometricModern) format("svg");
|
|
12
|
-
}
|
|
13
|
-
#shorthands {
|
|
14
|
-
background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
|
|
15
|
-
}
|
|
16
|
-
#misc {
|
|
17
|
-
background-image: url(https://localhost/images/image.jpg);
|
|
18
|
-
}
|
|
19
|
-
#data-uri {
|
|
20
|
-
background: url(data:image/png;charset=utf-8;base64,
|
|
21
|
-
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
|
|
22
|
-
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
|
|
23
|
-
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
|
|
24
|
-
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
|
|
25
|
-
background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
|
|
26
|
-
}
|
|
27
|
-
#svg-data-uri {
|
|
28
|
-
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
|
|
29
|
-
}
|
|
30
|
-
.comma-delimited {
|
|
31
|
-
background: url(https://localhost/bg.jpg) no-repeat, url(https://localhost/bg.png) repeat-x top left, url(https://localhost/bg);
|
|
32
|
-
}
|
|
33
|
-
.values {
|
|
34
|
-
url: url('https://localhost/Trebuchet');
|
|
35
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
@import "https://www.github.com/cloudhead/imports/modify-this.css";
|
|
2
|
-
@import "https://www.github.com/cloudhead/imports/modify-again.css";
|
|
3
|
-
.modify {
|
|
4
|
-
my-url: url("https://www.github.com/cloudhead/imports/a.png");
|
|
5
|
-
}
|
|
6
|
-
.modify {
|
|
7
|
-
my-url: url("https://www.github.com/cloudhead/imports/b.png");
|
|
8
|
-
}
|
|
9
|
-
@font-face {
|
|
10
|
-
src: url("/fonts/garamond-pro.ttf");
|
|
11
|
-
src: local(Futura-Medium), url(https://www.github.com/cloudhead/less.js/fonts.svg#MyGeometricModern) format("svg");
|
|
12
|
-
}
|
|
13
|
-
#shorthands {
|
|
14
|
-
background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
|
|
15
|
-
}
|
|
16
|
-
#misc {
|
|
17
|
-
background-image: url(https://www.github.com/cloudhead/less.js/images/image.jpg);
|
|
18
|
-
}
|
|
19
|
-
#data-uri {
|
|
20
|
-
background: url(data:image/png;charset=utf-8;base64,
|
|
21
|
-
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
|
|
22
|
-
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
|
|
23
|
-
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
|
|
24
|
-
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
|
|
25
|
-
background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
|
|
26
|
-
}
|
|
27
|
-
#svg-data-uri {
|
|
28
|
-
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
|
|
29
|
-
}
|
|
30
|
-
.comma-delimited {
|
|
31
|
-
background: url(https://www.github.com/cloudhead/less.js/bg.jpg) no-repeat, url(https://www.github.com/cloudhead/less.js/bg.png) repeat-x top left, url(https://www.github.com/cloudhead/less.js/bg);
|
|
32
|
-
}
|
|
33
|
-
.values {
|
|
34
|
-
url: url('https://www.github.com/cloudhead/less.js/Trebuchet');
|
|
35
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
@import "https://www.github.com/cloudhead/imports/modify-this.css";
|
|
2
|
-
@import "https://www.github.com/cloudhead/imports/modify-again.css";
|
|
3
|
-
.modify {
|
|
4
|
-
my-url: url("https://www.github.com/cloudhead/imports/a.png");
|
|
5
|
-
}
|
|
6
|
-
.modify {
|
|
7
|
-
my-url: url("https://www.github.com/cloudhead/imports/b.png");
|
|
8
|
-
}
|
|
9
|
-
@font-face {
|
|
10
|
-
src: url("/fonts/garamond-pro.ttf");
|
|
11
|
-
src: local(Futura-Medium), url(https://www.github.com/cloudhead/less.js/fonts.svg#MyGeometricModern) format("svg");
|
|
12
|
-
}
|
|
13
|
-
#shorthands {
|
|
14
|
-
background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
|
|
15
|
-
}
|
|
16
|
-
#misc {
|
|
17
|
-
background-image: url(https://www.github.com/cloudhead/less.js/images/image.jpg);
|
|
18
|
-
}
|
|
19
|
-
#data-uri {
|
|
20
|
-
background: url(data:image/png;charset=utf-8;base64,
|
|
21
|
-
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
|
|
22
|
-
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
|
|
23
|
-
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
|
|
24
|
-
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
|
|
25
|
-
background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
|
|
26
|
-
}
|
|
27
|
-
#svg-data-uri {
|
|
28
|
-
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
|
|
29
|
-
}
|
|
30
|
-
.comma-delimited {
|
|
31
|
-
background: url(https://www.github.com/cloudhead/less.js/bg.jpg) no-repeat, url(https://www.github.com/cloudhead/less.js/bg.png) repeat-x top left, url(https://www.github.com/cloudhead/less.js/bg);
|
|
32
|
-
}
|
|
33
|
-
.values {
|
|
34
|
-
url: url('https://www.github.com/cloudhead/less.js/Trebuchet');
|
|
35
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
@import "http://localhost:8081/packages/less/test/browser/less/modify-this.css";
|
|
2
|
-
@import "http://localhost:8081/packages/less/test/browser/less/modify-again.css";
|
|
3
|
-
.modify {
|
|
4
|
-
my-url: url("http://localhost:8081/packages/less/test/browser/less/a.png");
|
|
5
|
-
}
|
|
6
|
-
.modify {
|
|
7
|
-
my-url: url("http://localhost:8081/packages/less/test/browser/less/b.png");
|
|
8
|
-
}
|
|
9
|
-
.gray-gradient {
|
|
10
|
-
background: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201%201%22%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%25%22%20y1%3D%220%25%22%20x2%3D%220%25%22%20y2%3D%22100%25%22%3E%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%2260%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.05%22%2F%3E%3Cstop%20offset%3D%2270%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.1%22%2F%3E%3Cstop%20offset%3D%2273%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.15%22%2F%3E%3Cstop%20offset%3D%2275%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.2%22%2F%3E%3Cstop%20offset%3D%2280%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.25%22%2F%3E%3Cstop%20offset%3D%2285%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.3%22%2F%3E%3Cstop%20offset%3D%2288%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.35%22%2F%3E%3Cstop%20offset%3D%2290%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.4%22%2F%3E%3Cstop%20offset%3D%2295%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.45%22%2F%3E%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23999999%22%20stop-opacity%3D%220.5%22%2F%3E%3C%2FlinearGradient%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%221%22%20height%3D%221%22%20fill%3D%22url(%23g)%22%20%2F%3E%3C%2Fsvg%3E');
|
|
11
|
-
}
|
|
12
|
-
@font-face {
|
|
13
|
-
src: url("/fonts/garamond-pro.ttf");
|
|
14
|
-
src: local(Futura-Medium), url(http://localhost:8081/packages/less/test/browser/less/fonts.svg#MyGeometricModern) format("svg");
|
|
15
|
-
not-a-comment: url(//z);
|
|
16
|
-
}
|
|
17
|
-
#shorthands {
|
|
18
|
-
background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
|
|
19
|
-
}
|
|
20
|
-
#misc {
|
|
21
|
-
background-image: url(http://localhost:8081/packages/less/test/browser/less/images/image.jpg);
|
|
22
|
-
}
|
|
23
|
-
#data-uri {
|
|
24
|
-
background: url(data:image/png;charset=utf-8;base64,
|
|
25
|
-
kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
|
|
26
|
-
k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
|
|
27
|
-
kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
|
|
28
|
-
background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
|
|
29
|
-
background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
|
|
30
|
-
}
|
|
31
|
-
#svg-data-uri {
|
|
32
|
-
background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
|
|
33
|
-
}
|
|
34
|
-
.comma-delimited {
|
|
35
|
-
background: url(http://localhost:8081/packages/less/test/browser/less/bg.jpg) no-repeat, url(http://localhost:8081/packages/less/test/browser/less/bg.png) repeat-x top left, url(http://localhost:8081/packages/less/test/browser/less/bg);
|
|
36
|
-
}
|
|
37
|
-
.values {
|
|
38
|
-
url: url('http://localhost:8081/packages/less/test/browser/less/Trebuchet');
|
|
39
|
-
}
|
|
40
|
-
#data-uri {
|
|
41
|
-
uri: url('http://localhost:8081/packages/less/test/data/image.jpg');
|
|
42
|
-
}
|
|
43
|
-
#data-uri-guess {
|
|
44
|
-
uri: url('http://localhost:8081/packages/less/test/data/image.jpg');
|
|
45
|
-
}
|
|
46
|
-
#data-uri-ascii {
|
|
47
|
-
uri-1: url('http://localhost:8081/packages/less/test/data/page.html');
|
|
48
|
-
uri-2: url('http://localhost:8081/packages/less/test/data/page.html');
|
|
49
|
-
}
|
|
50
|
-
#svg-functions {
|
|
51
|
-
background-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201%201%22%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%25%22%20y1%3D%220%25%22%20x2%3D%220%25%22%20y2%3D%22100%25%22%3E%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23000000%22%2F%3E%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23ffffff%22%2F%3E%3C%2FlinearGradient%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%221%22%20height%3D%221%22%20fill%3D%22url(%23g)%22%20%2F%3E%3C%2Fsvg%3E');
|
|
52
|
-
background-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201%201%22%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%25%22%20y1%3D%220%25%22%20x2%3D%220%25%22%20y2%3D%22100%25%22%3E%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23000000%22%2F%3E%3Cstop%20offset%3D%223%25%22%20stop-color%3D%22%23ffa500%22%2F%3E%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23ffffff%22%2F%3E%3C%2FlinearGradient%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%221%22%20height%3D%221%22%20fill%3D%22url(%23g)%22%20%2F%3E%3C%2Fsvg%3E');
|
|
53
|
-
background-image: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201%201%22%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%25%22%20y1%3D%220%25%22%20x2%3D%220%25%22%20y2%3D%22100%25%22%3E%3Cstop%20offset%3D%221%25%22%20stop-color%3D%22%23c4c4c4%22%2F%3E%3Cstop%20offset%3D%223%25%22%20stop-color%3D%22%23ffa500%22%2F%3E%3Cstop%20offset%3D%225%25%22%20stop-color%3D%22%23008000%22%2F%3E%3Cstop%20offset%3D%2295%25%22%20stop-color%3D%22%23ffffff%22%2F%3E%3C%2FlinearGradient%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%221%22%20height%3D%221%22%20fill%3D%22url(%23g)%22%20%2F%3E%3C%2Fsvg%3E');
|
|
54
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
module.exports = {
|
|
3
|
-
current: {
|
|
4
|
-
// src is used to build list of less files to compile
|
|
5
|
-
src: [
|
|
6
|
-
'benchmark/benchmark.less'
|
|
7
|
-
],
|
|
8
|
-
options: {
|
|
9
|
-
helpers: 'benchmark/browseroptions.js',
|
|
10
|
-
specs: 'benchmark/browserspec.js',
|
|
11
|
-
outfile: 'tmp/browser/test-runner-benchmark-current.html'
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
v3_10_3: {
|
|
15
|
-
// src is used to build list of less files to compile
|
|
16
|
-
src: [
|
|
17
|
-
'benchmark/benchmark.less'
|
|
18
|
-
],
|
|
19
|
-
options: {
|
|
20
|
-
helpers: 'benchmark/browseroptions.js',
|
|
21
|
-
specs: 'benchmark/browserspec.js',
|
|
22
|
-
outfile: 'tmp/browser/test-runner-benchmark-v3_10_3.html',
|
|
23
|
-
less: 'https://cdnjs.cloudflare.com/ajax/libs/less.js/3.10.3/less.min.js'
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
v3_9_0: {
|
|
27
|
-
// src is used to build list of less files to compile
|
|
28
|
-
src: [
|
|
29
|
-
'benchmark/benchmark.less'
|
|
30
|
-
],
|
|
31
|
-
options: {
|
|
32
|
-
helpers: 'benchmark/browseroptions.js',
|
|
33
|
-
specs: 'benchmark/browserspec.js',
|
|
34
|
-
outfile: 'tmp/browser/test-runner-benchmark-v3_9_0.html',
|
|
35
|
-
less: 'https://cdnjs.cloudflare.com/ajax/libs/less.js/3.9.0/less.min.js'
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
v2_7_3: {
|
|
39
|
-
// src is used to build list of less files to compile
|
|
40
|
-
src: [
|
|
41
|
-
'benchmark/benchmark.less'
|
|
42
|
-
],
|
|
43
|
-
options: {
|
|
44
|
-
helpers: 'benchmark/browseroptions.js',
|
|
45
|
-
specs: 'benchmark/browserspec.js',
|
|
46
|
-
outfile: 'tmp/browser/test-runner-benchmark-v2_7_3.html',
|
|
47
|
-
less: 'https://cdnjs.cloudflare.com/ajax/libs/less.js/2.7.3/less.min.js'
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
const template = require('./template')
|
|
2
|
-
let config
|
|
3
|
-
const fs = require('fs-extra')
|
|
4
|
-
const path = require('path')
|
|
5
|
-
const globby = require('globby')
|
|
6
|
-
const { runner } = require('../../mocha-playwright/runner')
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
if (process.argv[2]) {
|
|
10
|
-
config = require(`./${process.argv[2]}.config`)
|
|
11
|
-
} else {
|
|
12
|
-
config = require('./runner.config')
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Generate templates and run tests
|
|
17
|
-
*/
|
|
18
|
-
const tests = []
|
|
19
|
-
const cwd = process.cwd()
|
|
20
|
-
const tmpDir = path.join(cwd, 'tmp', 'browser')
|
|
21
|
-
fs.ensureDirSync(tmpDir)
|
|
22
|
-
fs.copySync(path.join(cwd, 'test', 'browser', 'common.js'), path.join(tmpDir, 'common.js'))
|
|
23
|
-
|
|
24
|
-
let numTests = 0
|
|
25
|
-
let passedTests = 0
|
|
26
|
-
let failedTests = 0
|
|
27
|
-
|
|
28
|
-
/** Will run the runners in a series */
|
|
29
|
-
function runSerial(tasks) {
|
|
30
|
-
var result = Promise.resolve()
|
|
31
|
-
start = Date.now()
|
|
32
|
-
tasks.forEach(task => {
|
|
33
|
-
result = result.then(result => {
|
|
34
|
-
if (result && result.result && result.result.stats) {
|
|
35
|
-
const stats = result.result.stats
|
|
36
|
-
numTests += stats.tests
|
|
37
|
-
passedTests += stats.passes
|
|
38
|
-
failedTests += stats.failures
|
|
39
|
-
}
|
|
40
|
-
return task()
|
|
41
|
-
}, err => {
|
|
42
|
-
console.log(err)
|
|
43
|
-
failedTests += 1
|
|
44
|
-
})
|
|
45
|
-
})
|
|
46
|
-
return result
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
Object.entries(config).forEach(entry => {
|
|
50
|
-
const test = entry[1]
|
|
51
|
-
const paths = globby.sync(test.src)
|
|
52
|
-
const templateString = template(paths, test.options.helpers, test.options.specs)
|
|
53
|
-
fs.writeFileSync(path.join(cwd, test.options.outfile), templateString)
|
|
54
|
-
tests.push(() => {
|
|
55
|
-
const file = 'http://localhost:8081/packages/less/' + test.options.outfile
|
|
56
|
-
console.log(file)
|
|
57
|
-
return runner({
|
|
58
|
-
file,
|
|
59
|
-
timeout: 3500,
|
|
60
|
-
args: ['disable-web-security', 'no-sandbox', 'disable-setuid-sandbox'],
|
|
61
|
-
})
|
|
62
|
-
})
|
|
63
|
-
})
|
|
64
|
-
|
|
65
|
-
module.exports = () => runSerial(tests).then(() => {
|
|
66
|
-
if (failedTests > 0) {
|
|
67
|
-
process.stderr.write(failedTests + ' Failed, ' + passedTests + ' passed\n');
|
|
68
|
-
} else {
|
|
69
|
-
process.stdout.write('All Passed ' + passedTests + ' run\n');
|
|
70
|
-
}
|
|
71
|
-
if (failedTests) {
|
|
72
|
-
process.on('exit', function() { process.reallyExit(1); });
|
|
73
|
-
}
|
|
74
|
-
process.exit()
|
|
75
|
-
}, err => {
|
|
76
|
-
process.stderr.write(err.message);
|
|
77
|
-
process.exit()
|
|
78
|
-
})
|