less 4.1.3 → 4.2.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/.eslintrc.js +63 -0
- package/Gruntfile.js +4 -14
- package/dist/less.js +7240 -7042
- package/dist/less.min.js +3 -3
- package/dist/less.min.js.map +1 -1
- package/lib/less/contexts.js +2 -2
- package/lib/less/contexts.js.map +1 -1
- package/lib/less/default-options.js +0 -1
- package/lib/less/default-options.js.map +1 -1
- package/lib/less/environment/abstract-file-manager.js +12 -6
- package/lib/less/environment/abstract-file-manager.js.map +1 -1
- package/lib/less/environment/abstract-plugin-loader.js +2 -2
- package/lib/less/environment/abstract-plugin-loader.js.map +1 -1
- package/lib/less/environment/environment-api.js +0 -25
- package/lib/less/environment/environment-api.js.map +1 -1
- package/lib/less/environment/environment.js +2 -2
- package/lib/less/environment/environment.js.map +1 -1
- package/lib/less/environment/file-manager-api.js +0 -103
- package/lib/less/environment/file-manager-api.js.map +1 -1
- package/lib/less/functions/color-blending.js +1 -0
- package/lib/less/functions/color-blending.js.map +1 -1
- package/lib/less/functions/color.js +20 -20
- package/lib/less/functions/color.js.map +1 -1
- package/lib/less/functions/data-uri.js +3 -3
- package/lib/less/functions/data-uri.js.map +1 -1
- package/lib/less/functions/default.js +2 -1
- package/lib/less/functions/default.js.map +1 -1
- package/lib/less/functions/function-caller.js +1 -1
- package/lib/less/functions/function-caller.js.map +1 -1
- package/lib/less/functions/function-registry.js +1 -0
- package/lib/less/functions/function-registry.js.map +1 -1
- package/lib/less/functions/index.js +4 -2
- package/lib/less/functions/index.js.map +1 -1
- package/lib/less/functions/list.js +2 -2
- package/lib/less/functions/list.js.map +1 -1
- package/lib/less/functions/math-helper.js +1 -1
- package/lib/less/functions/math-helper.js.map +1 -1
- package/lib/less/functions/math.js +2 -1
- package/lib/less/functions/math.js.map +1 -1
- package/lib/less/functions/number.js +10 -6
- package/lib/less/functions/number.js.map +1 -1
- package/lib/less/functions/style.js +28 -0
- package/lib/less/functions/style.js.map +1 -0
- package/lib/less/functions/svg.js +6 -6
- package/lib/less/functions/svg.js.map +1 -1
- package/lib/less/functions/types.js +1 -1
- package/lib/less/functions/types.js.map +1 -1
- package/lib/less/import-manager.js +2 -3
- package/lib/less/import-manager.js.map +1 -1
- package/lib/less/index.js +8 -9
- package/lib/less/index.js.map +1 -1
- package/lib/less/less-error.js +11 -12
- package/lib/less/less-error.js.map +1 -1
- package/lib/less/parse-tree.js +2 -3
- package/lib/less/parse-tree.js.map +1 -1
- package/lib/less/parse.js +1 -2
- package/lib/less/parse.js.map +1 -1
- package/lib/less/parser/chunker.js +1 -2
- package/lib/less/parser/chunker.js.map +1 -1
- package/lib/less/parser/parser-input.js +11 -5
- package/lib/less/parser/parser-input.js.map +1 -1
- package/lib/less/parser/parser.js +150 -104
- package/lib/less/parser/parser.js.map +1 -1
- package/lib/less/render.js +1 -2
- package/lib/less/render.js.map +1 -1
- package/lib/less/source-map-builder.js +2 -3
- package/lib/less/source-map-builder.js.map +1 -1
- package/lib/less/source-map-output.js +1 -1
- package/lib/less/source-map-output.js.map +1 -1
- package/lib/less/transform-tree.js +1 -2
- package/lib/less/transform-tree.js.map +1 -1
- package/lib/less/tree/assignment.js +1 -1
- package/lib/less/tree/assignment.js.map +1 -1
- package/lib/less/tree/atrule-syntax.js +10 -0
- package/lib/less/tree/atrule-syntax.js.map +1 -0
- package/lib/less/tree/atrule.js +4 -4
- package/lib/less/tree/atrule.js.map +1 -1
- package/lib/less/tree/attribute.js +2 -2
- package/lib/less/tree/attribute.js.map +1 -1
- package/lib/less/tree/call.js +3 -2
- package/lib/less/tree/call.js.map +1 -1
- package/lib/less/tree/color.js +8 -6
- package/lib/less/tree/color.js.map +1 -1
- package/lib/less/tree/comment.js +1 -1
- package/lib/less/tree/comment.js.map +1 -1
- package/lib/less/tree/container.js +48 -0
- package/lib/less/tree/container.js.map +1 -0
- package/lib/less/tree/debug-info.js +6 -6
- package/lib/less/tree/debug-info.js.map +1 -1
- package/lib/less/tree/declaration.js +1 -1
- package/lib/less/tree/declaration.js.map +1 -1
- package/lib/less/tree/dimension.js +6 -4
- package/lib/less/tree/dimension.js.map +1 -1
- package/lib/less/tree/expression.js +5 -1
- package/lib/less/tree/expression.js.map +1 -1
- package/lib/less/tree/extend.js +2 -0
- package/lib/less/tree/extend.js.map +1 -1
- package/lib/less/tree/import.js +1 -1
- package/lib/less/tree/import.js.map +1 -1
- package/lib/less/tree/index.js +4 -0
- package/lib/less/tree/index.js.map +1 -1
- package/lib/less/tree/javascript.js +1 -1
- package/lib/less/tree/javascript.js.map +1 -1
- package/lib/less/tree/js-eval-node.js +6 -6
- package/lib/less/tree/js-eval-node.js.map +1 -1
- package/lib/less/tree/media.js +4 -88
- package/lib/less/tree/media.js.map +1 -1
- package/lib/less/tree/mixin-call.js +6 -6
- package/lib/less/tree/mixin-call.js.map +1 -1
- package/lib/less/tree/mixin-definition.js +2 -2
- package/lib/less/tree/mixin-definition.js.map +1 -1
- package/lib/less/tree/namespace-value.js +6 -6
- package/lib/less/tree/namespace-value.js.map +1 -1
- package/lib/less/tree/nested-at-rule.js +91 -0
- package/lib/less/tree/nested-at-rule.js.map +1 -0
- package/lib/less/tree/node.js +6 -4
- package/lib/less/tree/node.js.map +1 -1
- package/lib/less/tree/property.js +2 -2
- package/lib/less/tree/property.js.map +1 -1
- package/lib/less/tree/query-in-parens.js +41 -0
- package/lib/less/tree/query-in-parens.js.map +1 -0
- package/lib/less/tree/quoted.js +3 -3
- package/lib/less/tree/quoted.js.map +1 -1
- package/lib/less/tree/ruleset.js +14 -11
- package/lib/less/tree/ruleset.js.map +1 -1
- package/lib/less/tree/selector.js +5 -3
- package/lib/less/tree/selector.js.map +1 -1
- package/lib/less/tree/unit.js +4 -2
- package/lib/less/tree/unit.js.map +1 -1
- package/lib/less/tree/url.js +2 -2
- package/lib/less/tree/url.js.map +1 -1
- package/lib/less/tree/variable-call.js +1 -1
- package/lib/less/tree/variable-call.js.map +1 -1
- package/lib/less/tree/variable.js +3 -3
- package/lib/less/tree/variable.js.map +1 -1
- package/lib/less/utils.js +9 -5
- package/lib/less/utils.js.map +1 -1
- package/lib/less/visitors/extend-visitor.js +8 -4
- package/lib/less/visitors/extend-visitor.js.map +1 -1
- package/lib/less/visitors/import-visitor.js +4 -0
- package/lib/less/visitors/import-visitor.js.map +1 -1
- package/lib/less/visitors/join-selector-visitor.js +4 -0
- package/lib/less/visitors/join-selector-visitor.js.map +1 -1
- package/lib/less/visitors/to-css-visitor.js +9 -5
- package/lib/less/visitors/to-css-visitor.js.map +1 -1
- package/lib/less/visitors/visitor.js +2 -2
- package/lib/less/visitors/visitor.js.map +1 -1
- package/lib/less-browser/add-default-options.js +1 -1
- package/lib/less-browser/add-default-options.js.map +1 -1
- package/lib/less-browser/bootstrap.js +6 -7
- package/lib/less-browser/bootstrap.js.map +1 -1
- package/lib/less-browser/browser.js +1 -1
- package/lib/less-browser/browser.js.map +1 -1
- package/lib/less-browser/cache.js +7 -7
- package/lib/less-browser/cache.js.map +1 -1
- package/lib/less-browser/error-reporting.js +11 -11
- package/lib/less-browser/error-reporting.js.map +1 -1
- package/lib/less-browser/file-manager.js +4 -5
- package/lib/less-browser/file-manager.js.map +1 -1
- package/lib/less-browser/index.js +17 -13
- package/lib/less-browser/index.js.map +1 -1
- package/lib/less-browser/plugin-loader.js +3 -2
- package/lib/less-browser/plugin-loader.js.map +1 -1
- package/lib/less-browser/utils.js +4 -4
- package/lib/less-browser/utils.js.map +1 -1
- package/lib/less-node/file-manager.js +17 -17
- package/lib/less-node/file-manager.js.map +1 -1
- package/lib/less-node/image-size.js +1 -1
- package/lib/less-node/image-size.js.map +1 -1
- package/lib/less-node/index.js +1 -1
- package/lib/less-node/index.js.map +1 -1
- package/lib/less-node/lessc-helper.js +2 -1
- package/lib/less-node/lessc-helper.js.map +1 -1
- package/lib/less-node/url-file-manager.js +9 -4
- package/lib/less-node/url-file-manager.js.map +1 -1
- package/package.json +140 -137
- package/test/browser/css/plugin/plugin.css +1 -1
- package/test/browser/css/relative-urls/urls.css +8 -8
- package/test/browser/css/rewrite-urls/urls.css +8 -8
- package/test/browser/css/urls.css +12 -12
- package/test/browser/generator/benchmark.config.js +19 -19
- package/test/browser/generator/generate.js +1 -1
- package/test/browser/generator/runner.config.js +76 -74
- package/test/browser/generator/template.js +17 -7
- package/test/browser/generator/utils.js +14 -0
- package/test/browser/less/relative-urls/urls.less +1 -1
- package/test/browser/less/rewrite-urls/urls.less +1 -1
- package/test/browser/less/rootpath/urls.less +1 -1
- package/test/browser/less/rootpath-relative/urls.less +1 -1
- package/test/browser/less/rootpath-rewrite-urls/urls.less +1 -1
- package/test/browser/less/urls.less +2 -2
- package/test/browser/runner-rewrite-urls-spec.js +1 -1
- package/test/index.js +2 -0
- package/test/less-test.js +33 -9
- package/test/plugins/filemanager/index.js +1 -1
- package/test/sourcemaps-variable-selector/basic.json +1 -0
- package/test/test-es6.ts +5 -5
- package/tsconfig.build.json +7 -0
- package/tsconfig.json +20 -18
- package/.eslintrc.json +0 -71
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
var path = require('path');
|
|
2
2
|
var resolve = require('resolve')
|
|
3
|
+
var { forceCovertToBrowserPath } = require('./utils');
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
var testFolder =
|
|
6
|
-
var lessFolder = path.join(testFolder, 'less');
|
|
5
|
+
/** Root of repo */
|
|
6
|
+
var testFolder = forceCovertToBrowserPath(path.dirname(resolve.sync('@less/test-data')));
|
|
7
|
+
var lessFolder = forceCovertToBrowserPath(path.join(testFolder, 'less'));
|
|
8
|
+
var localTests = forceCovertToBrowserPath(path.resolve(__dirname, '..'));
|
|
7
9
|
|
|
8
10
|
module.exports = {
|
|
9
11
|
main: {
|
|
@@ -19,168 +21,168 @@ module.exports = {
|
|
|
19
21
|
`!${lessFolder}/_main/empty.less`
|
|
20
22
|
],
|
|
21
23
|
options: {
|
|
22
|
-
helpers:
|
|
23
|
-
specs:
|
|
24
|
-
outfile:
|
|
24
|
+
helpers: 'test/browser/runner-main-options.js',
|
|
25
|
+
specs: 'test/browser/runner-main-spec.js',
|
|
26
|
+
outfile: 'tmp/browser/test-runner-main.html'
|
|
25
27
|
}
|
|
26
28
|
},
|
|
27
29
|
legacy: {
|
|
28
30
|
src: [`${lessFolder}/legacy/*.less`],
|
|
29
31
|
options: {
|
|
30
|
-
helpers:
|
|
31
|
-
specs:
|
|
32
|
-
outfile:
|
|
32
|
+
helpers: 'test/browser/runner-legacy-options.js',
|
|
33
|
+
specs: 'test/browser/runner-legacy-spec.js',
|
|
34
|
+
outfile: 'tmp/browser/test-runner-legacy.html'
|
|
33
35
|
}
|
|
34
36
|
},
|
|
35
37
|
strictUnits: {
|
|
36
|
-
src: [`${lessFolder}/strict
|
|
38
|
+
src: [`${lessFolder}/units/strict/*.less`],
|
|
37
39
|
options: {
|
|
38
|
-
helpers:
|
|
39
|
-
specs:
|
|
40
|
-
outfile:
|
|
40
|
+
helpers: 'test/browser/runner-strict-units-options.js',
|
|
41
|
+
specs: 'test/browser/runner-strict-units-spec.js',
|
|
42
|
+
outfile: 'tmp/browser/test-runner-strict-units.html'
|
|
41
43
|
}
|
|
42
44
|
},
|
|
43
45
|
errors: {
|
|
44
46
|
src: [
|
|
45
47
|
`${lessFolder}/errors/*.less`,
|
|
46
48
|
`${testFolder}/errors/javascript-error.less`,
|
|
47
|
-
|
|
49
|
+
`${localTests}/less/errors/*.less`
|
|
48
50
|
],
|
|
49
51
|
options: {
|
|
50
52
|
timeout: 20000,
|
|
51
|
-
helpers:
|
|
52
|
-
specs:
|
|
53
|
-
outfile:
|
|
53
|
+
helpers: 'test/browser/runner-errors-options.js',
|
|
54
|
+
specs: 'test/browser/runner-errors-spec.js',
|
|
55
|
+
outfile: 'tmp/browser/test-runner-errors.html'
|
|
54
56
|
}
|
|
55
57
|
},
|
|
56
58
|
noJsErrors: {
|
|
57
59
|
src: [`${lessFolder}/no-js-errors/*.less`],
|
|
58
60
|
options: {
|
|
59
|
-
helpers:
|
|
60
|
-
specs:
|
|
61
|
-
outfile:
|
|
61
|
+
helpers: 'test/browser/runner-no-js-errors-options.js',
|
|
62
|
+
specs: 'test/browser/runner-no-js-errors-spec.js',
|
|
63
|
+
outfile: 'tmp/browser/test-runner-no-js-errors.html'
|
|
62
64
|
}
|
|
63
65
|
},
|
|
64
66
|
browser: {
|
|
65
67
|
src: [
|
|
66
|
-
|
|
67
|
-
|
|
68
|
+
`${localTests}/less/*.less`,
|
|
69
|
+
`${localTests}/less/plugin/*.less`
|
|
68
70
|
],
|
|
69
71
|
options: {
|
|
70
|
-
helpers:
|
|
71
|
-
specs:
|
|
72
|
-
outfile:
|
|
72
|
+
helpers: 'test/browser/runner-browser-options.js',
|
|
73
|
+
specs: 'test/browser/runner-browser-spec.js',
|
|
74
|
+
outfile: 'tmp/browser/test-runner-browser.html'
|
|
73
75
|
}
|
|
74
76
|
},
|
|
75
77
|
relativeUrls: {
|
|
76
|
-
src: [
|
|
78
|
+
src: [`${localTests}/less/relative-urls/*.less`],
|
|
77
79
|
options: {
|
|
78
|
-
helpers:
|
|
79
|
-
specs:
|
|
80
|
-
outfile:
|
|
80
|
+
helpers: 'test/browser/runner-relative-urls-options.js',
|
|
81
|
+
specs: 'test/browser/runner-relative-urls-spec.js',
|
|
82
|
+
outfile: 'tmp/browser/test-runner-relative-urls.html'
|
|
81
83
|
}
|
|
82
84
|
},
|
|
83
85
|
rewriteUrls: {
|
|
84
|
-
src: [
|
|
86
|
+
src: [`${localTests}/less/rewrite-urls/*.less`],
|
|
85
87
|
options: {
|
|
86
|
-
helpers:
|
|
87
|
-
specs:
|
|
88
|
-
outfile:
|
|
88
|
+
helpers: 'test/browser/runner-rewrite-urls-options.js',
|
|
89
|
+
specs: 'test/browser/runner-rewrite-urls-spec.js',
|
|
90
|
+
outfile: 'tmp/browser/test-runner-rewrite-urls.html'
|
|
89
91
|
}
|
|
90
92
|
},
|
|
91
93
|
rootpath: {
|
|
92
|
-
src: [
|
|
94
|
+
src: [`${localTests}/less/rootpath/*.less`],
|
|
93
95
|
options: {
|
|
94
|
-
helpers:
|
|
95
|
-
specs:
|
|
96
|
-
outfile:
|
|
96
|
+
helpers: 'test/browser/runner-rootpath-options.js',
|
|
97
|
+
specs: 'test/browser/runner-rootpath-spec.js',
|
|
98
|
+
outfile: 'tmp/browser/test-runner-rootpath.html'
|
|
97
99
|
}
|
|
98
100
|
},
|
|
99
101
|
rootpathRelative: {
|
|
100
|
-
src: [
|
|
102
|
+
src: [`${localTests}/less/rootpath-relative/*.less`],
|
|
101
103
|
options: {
|
|
102
|
-
helpers:
|
|
103
|
-
specs:
|
|
104
|
-
outfile:
|
|
104
|
+
helpers: 'test/browser/runner-rootpath-relative-options.js',
|
|
105
|
+
specs: 'test/browser/runner-rootpath-relative-spec.js',
|
|
106
|
+
outfile: 'tmp/browser/test-runner-rootpath-relative.html'
|
|
105
107
|
}
|
|
106
108
|
},
|
|
107
109
|
rootpathRewriteUrls: {
|
|
108
|
-
src: [
|
|
110
|
+
src: [`${localTests}/less/rootpath-rewrite-urls/*.less`],
|
|
109
111
|
options: {
|
|
110
112
|
helpers:
|
|
111
|
-
|
|
112
|
-
specs:
|
|
113
|
+
'test/browser/runner-rootpath-rewrite-urls-options.js',
|
|
114
|
+
specs: 'test/browser/runner-rootpath-rewrite-urls-spec.js',
|
|
113
115
|
outfile:
|
|
114
|
-
|
|
116
|
+
'tmp/browser/test-runner-rootpath-rewrite-urls.html'
|
|
115
117
|
}
|
|
116
118
|
},
|
|
117
119
|
production: {
|
|
118
|
-
src: [
|
|
120
|
+
src: [`${localTests}/less/production/*.less`],
|
|
119
121
|
options: {
|
|
120
|
-
helpers:
|
|
121
|
-
specs:
|
|
122
|
-
outfile:
|
|
122
|
+
helpers: 'test/browser/runner-production-options.js',
|
|
123
|
+
specs: 'test/browser/runner-production-spec.js',
|
|
124
|
+
outfile: 'tmp/browser/test-runner-production.html'
|
|
123
125
|
}
|
|
124
126
|
},
|
|
125
127
|
modifyVars: {
|
|
126
|
-
src: [
|
|
128
|
+
src: [`${localTests}/less/modify-vars/*.less`],
|
|
127
129
|
options: {
|
|
128
|
-
helpers:
|
|
129
|
-
specs:
|
|
130
|
-
outfile:
|
|
130
|
+
helpers: 'test/browser/runner-modify-vars-options.js',
|
|
131
|
+
specs: 'test/browser/runner-modify-vars-spec.js',
|
|
132
|
+
outfile: 'tmp/browser/test-runner-modify-vars.html'
|
|
131
133
|
}
|
|
132
134
|
},
|
|
133
135
|
globalVars: {
|
|
134
|
-
src: [
|
|
136
|
+
src: [`${localTests}/less/global-vars/*.less`],
|
|
135
137
|
options: {
|
|
136
|
-
helpers:
|
|
137
|
-
specs:
|
|
138
|
-
outfile:
|
|
138
|
+
helpers: 'test/browser/runner-global-vars-options.js',
|
|
139
|
+
specs: 'test/browser/runner-global-vars-spec.js',
|
|
140
|
+
outfile: 'tmp/browser/test-runner-global-vars.html'
|
|
139
141
|
}
|
|
140
142
|
},
|
|
141
143
|
postProcessorPlugin: {
|
|
142
144
|
src: [`${lessFolder}/postProcessorPlugin/*.less`],
|
|
143
145
|
options: {
|
|
144
146
|
helpers: [
|
|
145
|
-
|
|
146
|
-
|
|
147
|
+
'test/plugins/postprocess/index.js',
|
|
148
|
+
'test/browser/runner-postProcessorPlugin-options.js'
|
|
147
149
|
],
|
|
148
|
-
specs:
|
|
150
|
+
specs: 'test/browser/runner-postProcessorPlugin.js',
|
|
149
151
|
outfile:
|
|
150
|
-
|
|
152
|
+
'tmp/browser/test-runner-post-processor-plugin.html'
|
|
151
153
|
}
|
|
152
154
|
},
|
|
153
155
|
preProcessorPlugin: {
|
|
154
156
|
src: [`${lessFolder}/preProcessorPlugin/*.less`],
|
|
155
157
|
options: {
|
|
156
158
|
helpers: [
|
|
157
|
-
|
|
158
|
-
|
|
159
|
+
'test/plugins/preprocess/index.js',
|
|
160
|
+
'test/browser/runner-preProcessorPlugin-options.js'
|
|
159
161
|
],
|
|
160
|
-
specs:
|
|
161
|
-
outfile:
|
|
162
|
+
specs: 'test/browser/runner-preProcessorPlugin.js',
|
|
163
|
+
outfile: 'tmp/browser/test-runner-pre-processor-plugin.html'
|
|
162
164
|
}
|
|
163
165
|
},
|
|
164
166
|
visitorPlugin: {
|
|
165
167
|
src: [`${lessFolder}/visitorPlugin/*.less`],
|
|
166
168
|
options: {
|
|
167
169
|
helpers: [
|
|
168
|
-
|
|
169
|
-
|
|
170
|
+
'test/plugins/visitor/index.js',
|
|
171
|
+
'test/browser/runner-VisitorPlugin-options.js'
|
|
170
172
|
],
|
|
171
|
-
specs:
|
|
172
|
-
outfile:
|
|
173
|
+
specs: 'test/browser/runner-VisitorPlugin.js',
|
|
174
|
+
outfile: 'tmp/browser/test-runner-visitor-plugin.html'
|
|
173
175
|
}
|
|
174
176
|
},
|
|
175
177
|
filemanagerPlugin: {
|
|
176
178
|
src: [`${lessFolder}/filemanagerPlugin/*.less`],
|
|
177
179
|
options: {
|
|
178
180
|
helpers: [
|
|
179
|
-
|
|
180
|
-
|
|
181
|
+
'test/plugins/filemanager/index.js',
|
|
182
|
+
'test/browser/runner-filemanagerPlugin-options.js'
|
|
181
183
|
],
|
|
182
|
-
specs:
|
|
183
|
-
outfile:
|
|
184
|
+
specs: 'test/browser/runner-filemanagerPlugin.js',
|
|
185
|
+
outfile: 'tmp/browser/test-runner-filemanager-plugin.html'
|
|
184
186
|
}
|
|
185
187
|
}
|
|
186
|
-
}
|
|
188
|
+
}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
const html = require('html-template-tag')
|
|
2
|
+
const path = require('path')
|
|
3
|
+
const { forceCovertToBrowserPath } = require('./utils')
|
|
4
|
+
|
|
5
|
+
const webRoot = path.resolve(__dirname, '../../../../../');
|
|
6
|
+
const mochaDir = forceCovertToBrowserPath(path.relative(webRoot, path.dirname(require.resolve('mocha'))))
|
|
7
|
+
const chaiDir = forceCovertToBrowserPath(path.relative(webRoot, path.dirname(require.resolve('chai'))))
|
|
8
|
+
const mochaTeamCityDir = forceCovertToBrowserPath(path.relative(webRoot, path.dirname(require.resolve('mocha-teamcity-reporter'))))
|
|
2
9
|
|
|
3
10
|
/**
|
|
4
11
|
* Generates HTML templates from list of test sheets
|
|
@@ -18,28 +25,30 @@ module.exports = (stylesheets, helpers, spec, less) => {
|
|
|
18
25
|
<!-- for each test, generate CSS/LESS link tags -->
|
|
19
26
|
$${stylesheets.map(function(fullLessName) {
|
|
20
27
|
var pathParts = fullLessName.split('/');
|
|
21
|
-
var fullCssName = fullLessName
|
|
28
|
+
var fullCssName = fullLessName
|
|
29
|
+
.replace(/\/(browser|test-data)\/less\//g, '/$1/css/')
|
|
30
|
+
.replace(/less$/, 'css')
|
|
22
31
|
var lessName = pathParts[pathParts.length - 1];
|
|
23
32
|
var name = lessName.split('.')[0];
|
|
24
33
|
return `
|
|
25
34
|
<!-- the tags to be generated -->
|
|
26
|
-
<link id="original-less:test-less-${name}" title="test-less-${name}" rel="stylesheet/less" type="text/css" href="
|
|
27
|
-
<link id="expected-less:test-less-${name}" rel="stylesheet" type="text/css" href="
|
|
35
|
+
<link id="original-less:test-less-${name}" title="test-less-${name}" rel="stylesheet/less" type="text/css" href="/${path.relative(webRoot, fullLessName)}">
|
|
36
|
+
<link id="expected-less:test-less-${name}" rel="stylesheet" type="text/css" href="/${path.relative(webRoot, fullCssName)}">
|
|
28
37
|
` }).join('')}
|
|
29
38
|
|
|
30
39
|
$${helpers.map(helper => `
|
|
31
40
|
<script src="../../${helper}"></script>
|
|
32
41
|
`).join('')}
|
|
33
42
|
|
|
34
|
-
<link rel="stylesheet" href="
|
|
43
|
+
<link rel="stylesheet" href="/${mochaDir}/mocha.css">
|
|
35
44
|
</head>
|
|
36
45
|
|
|
37
46
|
<body>
|
|
38
47
|
<!-- content -->
|
|
39
48
|
<div id="mocha"></div>
|
|
40
|
-
<script src="
|
|
41
|
-
<script src="
|
|
42
|
-
<script src="
|
|
49
|
+
<script src="/${mochaDir}/mocha.js"></script>
|
|
50
|
+
<script src="/${mochaTeamCityDir}/teamcityBrowser.js"></script>
|
|
51
|
+
<script src="/${chaiDir}/chai.js"></script>
|
|
43
52
|
<script>
|
|
44
53
|
expect = chai.expect
|
|
45
54
|
mocha.setup({
|
|
@@ -76,6 +85,7 @@ module.exports = (stylesheets, helpers, spec, less) => {
|
|
|
76
85
|
failedTests.push({name: test.title, result: false, message: err.message, stack: err.stack, titles: flattenTitles(test) });
|
|
77
86
|
};
|
|
78
87
|
};
|
|
88
|
+
|
|
79
89
|
</script>
|
|
80
90
|
</body>
|
|
81
91
|
</html>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* utils for covert browser paths,
|
|
3
|
+
* fix https://github.com/less/less.js/pull/4213
|
|
4
|
+
*
|
|
5
|
+
* @param {string} path
|
|
6
|
+
* @returns {string}
|
|
7
|
+
*/
|
|
8
|
+
function forceCovertToBrowserPath (path) {
|
|
9
|
+
return (path || '').replace(/\\/g, '/');
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
module.exports = {
|
|
13
|
+
forceCovertToBrowserPath
|
|
14
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
@import ".././imports/urls.less";
|
|
2
|
-
@import "http://localhost:8081/test/browser/less/imports/urls2.less";
|
|
2
|
+
@import "http://localhost:8081/packages/less/test/browser/less/imports/urls2.less";
|
|
3
3
|
@font-face {
|
|
4
4
|
src: url("/fonts/garamond-pro.ttf");
|
|
5
5
|
src: local(Futura-Medium),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
@import ".././imports/urls.less";
|
|
2
|
-
@import "http://localhost:8081/test/browser/less/imports/urls2.less";
|
|
2
|
+
@import "http://localhost:8081/packages/less/test/browser/less/imports/urls2.less";
|
|
3
3
|
@font-face {
|
|
4
4
|
src: url("/fonts/garamond-pro.ttf");
|
|
5
5
|
src: local(Futura-Medium),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
@import "../imports/urls.less";
|
|
2
|
-
@import "http://localhost:8081/test/browser/less/imports/urls2.less";
|
|
2
|
+
@import "http://localhost:8081/packages/less/test/browser/less/imports/urls2.less";
|
|
3
3
|
@font-face {
|
|
4
4
|
src: url("/fonts/garamond-pro.ttf");
|
|
5
5
|
src: local(Futura-Medium),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
@import "../imports/urls.less";
|
|
2
|
-
@import "http://localhost:8081/test/browser/less/imports/urls2.less";
|
|
2
|
+
@import "http://localhost:8081/packages/less/test/browser/less/imports/urls2.less";
|
|
3
3
|
@font-face {
|
|
4
4
|
src: url("/fonts/garamond-pro.ttf");
|
|
5
5
|
src: local(Futura-Medium),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
@import "../imports/urls.less";
|
|
2
|
-
@import "http://localhost:8081/test/browser/less/imports/urls2.less";
|
|
2
|
+
@import "http://localhost:8081/packages/less/test/browser/less/imports/urls2.less";
|
|
3
3
|
@font-face {
|
|
4
4
|
src: url("/fonts/garamond-pro.ttf");
|
|
5
5
|
src: local(Futura-Medium),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
@import "imports/urls.less";
|
|
2
|
-
@import "http://localhost:8081/test/browser/less/imports/urls2.less";
|
|
3
|
-
@import "http://localhost:8081/test/browser/less/nested-gradient-with-svg-gradient/mixin-consumer.less";
|
|
2
|
+
@import "http://localhost:8081/packages/less/test/browser/less/imports/urls2.less";
|
|
3
|
+
@import "http://localhost:8081/packages/less/test/browser/less/nested-gradient-with-svg-gradient/mixin-consumer.less";
|
|
4
4
|
@font-face {
|
|
5
5
|
src: url("/fonts/garamond-pro.ttf");
|
|
6
6
|
src: local(Futura-Medium),
|
package/test/index.js
CHANGED
|
@@ -63,6 +63,8 @@ var testMap = [
|
|
|
63
63
|
'sourcemaps-empty/', lessTester.testEmptySourcemap],
|
|
64
64
|
[{math: 'strict', strictUnits: true, sourceMap: {disableSourcemapAnnotation: true}},
|
|
65
65
|
'sourcemaps-disable-annotation/', lessTester.testSourcemapWithoutUrlAnnotation],
|
|
66
|
+
[{math: 'strict', strictUnits: true, sourceMap: true},
|
|
67
|
+
'sourcemaps-variable-selector/', lessTester.testSourcemapWithVariableInSelector],
|
|
66
68
|
[{globalVars: true, banner: '/**\n * Test\n */\n'}, 'globalVars/',
|
|
67
69
|
null, null, null, function(name, type, baseFolder) { return path.join(baseFolder, name) + '.json'; }],
|
|
68
70
|
[{modifyVars: true}, 'modifyVars/',
|
package/test/less-test.js
CHANGED
|
@@ -169,6 +169,29 @@ module.exports = function() {
|
|
|
169
169
|
}
|
|
170
170
|
}
|
|
171
171
|
|
|
172
|
+
function testSourcemapWithVariableInSelector(name, err, compiledLess, doReplacements, sourcemap, baseFolder) {
|
|
173
|
+
if (err) {
|
|
174
|
+
fail('ERROR: ' + (err && err.message));
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// Even if annotation is not necessary, the map file should be there.
|
|
179
|
+
fs.readFile(path.join('test/', name) + '.json', 'utf8', function (e, expectedSourcemap) {
|
|
180
|
+
process.stdout.write('- ' + path.join(baseFolder, name) + ': ');
|
|
181
|
+
if (sourcemap === expectedSourcemap) {
|
|
182
|
+
ok('OK');
|
|
183
|
+
} else if (err) {
|
|
184
|
+
fail('ERROR: ' + (err && err.message));
|
|
185
|
+
if (isVerbose) {
|
|
186
|
+
process.stdout.write('\n');
|
|
187
|
+
process.stdout.write(err.stack + '\n');
|
|
188
|
+
}
|
|
189
|
+
} else {
|
|
190
|
+
difference('FAIL', expectedSourcemap, sourcemap);
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
|
|
172
195
|
function testImports(name, err, compiledLess, doReplacements, sourcemap, baseFolder, imports) {
|
|
173
196
|
if (err) {
|
|
174
197
|
fail('ERROR: ' + (err && err.message));
|
|
@@ -228,7 +251,7 @@ module.exports = function() {
|
|
|
228
251
|
|
|
229
252
|
// To fix ci fail about error format change in upstream v8 project
|
|
230
253
|
// https://github.com/v8/v8/commit/c0fd89c3c089e888c4f4e8582e56db7066fa779b
|
|
231
|
-
// Node 16.9.0+ include this change via https://github.com/nodejs/node/pull/39947
|
|
254
|
+
// Node 16.9.0+ include this change via https://github.com/nodejs/node/pull/39947
|
|
232
255
|
function testTypeErrors(name, err, compiledLess, doReplacements, sourcemap, baseFolder) {
|
|
233
256
|
const fileSuffix = semver.gte(process.version, 'v16.9.0') ? '-2.txt' : '.txt';
|
|
234
257
|
fs.readFile(path.join(baseFolder, name) + fileSuffix, 'utf8', function (e, expectedErr) {
|
|
@@ -254,7 +277,7 @@ module.exports = function() {
|
|
|
254
277
|
// https://github.com/less/less.js/issues/3112
|
|
255
278
|
function testJSImport() {
|
|
256
279
|
process.stdout.write('- Testing root function registry');
|
|
257
|
-
less.functions.functionRegistry.add('ext', function() {
|
|
280
|
+
less.functions.functionRegistry.add('ext', function() {
|
|
258
281
|
return new less.tree.Anonymous('file');
|
|
259
282
|
});
|
|
260
283
|
var expected = '@charset "utf-8";\n';
|
|
@@ -282,7 +305,7 @@ module.exports = function() {
|
|
|
282
305
|
.replace(/\{pathhref\}/g, '')
|
|
283
306
|
.replace(/\{404status\}/g, '')
|
|
284
307
|
.replace(/\{nodepath\}/g, path.join(process.cwd(), 'node_modules', '/'))
|
|
285
|
-
.replace(/\{pathrel\}/g, path.join(path.relative(lessFolder, p), '/'))
|
|
308
|
+
.replace(/\{pathrel\}/g, path.join(path.relative(lessFolder, p), '/'))
|
|
286
309
|
.replace(/\{pathesc\}/g, pathesc)
|
|
287
310
|
.replace(/\{pathimport\}/g, pathimport)
|
|
288
311
|
.replace(/\{pathimportesc\}/g, pathimportesc)
|
|
@@ -327,7 +350,7 @@ module.exports = function() {
|
|
|
327
350
|
|
|
328
351
|
function runTestSetInternal(baseFolder, opts, foldername, verifyFunction, nameModifier, doReplacements, getFilename) {
|
|
329
352
|
foldername = foldername || '';
|
|
330
|
-
|
|
353
|
+
|
|
331
354
|
var originalOptions = opts || {};
|
|
332
355
|
|
|
333
356
|
if (!doReplacements) {
|
|
@@ -497,10 +520,10 @@ module.exports = function() {
|
|
|
497
520
|
}
|
|
498
521
|
|
|
499
522
|
/**
|
|
500
|
-
*
|
|
501
|
-
* @param {Object} options
|
|
502
|
-
* @param {string} filePath
|
|
503
|
-
* @param {Function} callback
|
|
523
|
+
*
|
|
524
|
+
* @param {Object} options
|
|
525
|
+
* @param {string} filePath
|
|
526
|
+
* @param {Function} callback
|
|
504
527
|
*/
|
|
505
528
|
function toCSS(options, filePath, callback) {
|
|
506
529
|
options = options || {};
|
|
@@ -577,7 +600,7 @@ module.exports = function() {
|
|
|
577
600
|
}
|
|
578
601
|
ok(stylize('OK\n', 'green'));
|
|
579
602
|
}
|
|
580
|
-
);
|
|
603
|
+
);
|
|
581
604
|
}
|
|
582
605
|
|
|
583
606
|
return {
|
|
@@ -588,6 +611,7 @@ module.exports = function() {
|
|
|
588
611
|
testTypeErrors: testTypeErrors,
|
|
589
612
|
testSourcemap: testSourcemap,
|
|
590
613
|
testSourcemapWithoutUrlAnnotation: testSourcemapWithoutUrlAnnotation,
|
|
614
|
+
testSourcemapWithVariableInSelector: testSourcemapWithVariableInSelector,
|
|
591
615
|
testImports: testImports,
|
|
592
616
|
testImportRedirect: testImportRedirect,
|
|
593
617
|
testEmptySourcemap: testEmptySourcemap,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
(function(exports) {
|
|
2
2
|
var plugin = function(less) {
|
|
3
3
|
var FileManager = less.FileManager, TestFileManager = new FileManager();
|
|
4
|
-
function TestFileManager() { }
|
|
4
|
+
function TestFileManager() { }
|
|
5
5
|
TestFileManager.loadFile = function (filename, currentDirectory, options, environment, callback) {
|
|
6
6
|
if (filename.match(/.*\.test$/)) {
|
|
7
7
|
return less.environment.fileManagers[0].loadFile('colors.test', currentDirectory, options, environment, callback);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["testweb/sourcemaps-variable-selector/basic.less"],"names":[],"mappings":"AAEC;EACG,eAAA","file":"sourcemaps-variable-selector/basic.css"}
|
package/test/test-es6.ts
CHANGED
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
console.log('Testing ES6 imports...')
|
|
3
3
|
|
|
4
4
|
import less from '..';
|
|
5
|
-
|
|
5
|
+
const lessRender = less.render;
|
|
6
6
|
|
|
7
7
|
// then I call lessRender on something
|
|
8
|
-
|
|
8
|
+
lessRender(`
|
|
9
9
|
body {
|
|
10
10
|
a: 1;
|
|
11
11
|
b: 2;
|
|
12
12
|
c: 30;
|
|
13
13
|
d: 4;
|
|
14
|
-
}`, {sourceMap: {}}, function(error, output) {
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
}`, {sourceMap: {}}, function(error: any, output: any) {
|
|
15
|
+
if (error)
|
|
16
|
+
console.error(error)
|
|
17
17
|
})
|
package/tsconfig.json
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"outDir": "./lib",
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"outDir": "./lib",
|
|
4
|
+
"moduleResolution": "node",
|
|
5
|
+
"rootDir": ".",
|
|
6
|
+
"allowJs": true,
|
|
7
|
+
"sourceMap": true,
|
|
8
|
+
"inlineSources": true,
|
|
9
|
+
"esModuleInterop": true,
|
|
10
|
+
"importHelpers": true,
|
|
11
|
+
"noImplicitAny": true,
|
|
12
|
+
"target": "ES5"
|
|
13
|
+
},
|
|
14
|
+
"ts-node": {
|
|
15
|
+
"compilerOptions": {
|
|
16
|
+
"rootDir": "."
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"include": ["**/*"],
|
|
20
|
+
"exclude": ["node_modules", "lib/**/*"]
|
|
19
21
|
}
|