less 4.5.1 → 4.6.0

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.
Files changed (338) hide show
  1. package/bin/lessc +37 -23
  2. package/dist/less.js +14497 -11745
  3. package/dist/less.min.js +4 -4
  4. package/dist/less.min.js.map +1 -1
  5. package/lib/less/constants.js +5 -7
  6. package/lib/less/contexts.js +71 -55
  7. package/lib/less/data/colors.js +150 -153
  8. package/lib/less/data/index.js +4 -7
  9. package/lib/less/data/unit-conversions.js +2 -5
  10. package/lib/less/default-options.js +36 -26
  11. package/lib/less/deprecation.js +67 -0
  12. package/lib/less/environment/abstract-file-manager.js +62 -50
  13. package/lib/less/environment/abstract-plugin-loader.js +69 -46
  14. package/lib/less/environment/environment-api.ts +21 -0
  15. package/lib/less/environment/environment.js +34 -30
  16. package/lib/less/environment/file-manager-api.ts +77 -0
  17. package/lib/less/functions/boolean.js +13 -13
  18. package/lib/less/functions/color-blending.js +39 -31
  19. package/lib/less/functions/color.js +153 -137
  20. package/lib/less/functions/data-uri.js +73 -64
  21. package/lib/less/functions/default.js +9 -11
  22. package/lib/less/functions/function-caller.js +35 -34
  23. package/lib/less/functions/function-registry.js +16 -17
  24. package/lib/less/functions/index.js +33 -33
  25. package/lib/less/functions/list.js +88 -75
  26. package/lib/less/functions/math-helper.js +8 -11
  27. package/lib/less/functions/math.js +21 -21
  28. package/lib/less/functions/number.js +42 -53
  29. package/lib/less/functions/string.js +18 -22
  30. package/lib/less/functions/style.js +21 -20
  31. package/lib/less/functions/svg.js +83 -82
  32. package/lib/less/functions/types.js +28 -32
  33. package/lib/less/import-manager.js +73 -64
  34. package/lib/less/index.js +65 -65
  35. package/lib/less/less-error.js +63 -45
  36. package/lib/less/logger.js +11 -14
  37. package/lib/less/parse-tree.js +52 -53
  38. package/lib/less/parse.js +44 -44
  39. package/lib/less/parser/parser-input.js +151 -113
  40. package/lib/less/parser/parser.js +864 -658
  41. package/lib/less/plugin-manager.js +57 -46
  42. package/lib/less/render.js +17 -23
  43. package/lib/less/source-map-builder.js +52 -43
  44. package/lib/less/source-map-output.js +56 -43
  45. package/lib/less/transform-tree.js +40 -30
  46. package/lib/less/tree/anonymous.js +52 -28
  47. package/lib/less/tree/assignment.js +44 -27
  48. package/lib/less/tree/atrule-syntax.js +4 -6
  49. package/lib/less/tree/atrule.js +247 -140
  50. package/lib/less/tree/attribute.js +55 -24
  51. package/lib/less/tree/call.js +70 -42
  52. package/lib/less/tree/color.js +194 -145
  53. package/lib/less/tree/combinator.js +31 -21
  54. package/lib/less/tree/comment.js +44 -23
  55. package/lib/less/tree/condition.js +61 -36
  56. package/lib/less/tree/container.js +90 -34
  57. package/lib/less/tree/debug-info.js +28 -15
  58. package/lib/less/tree/declaration.js +97 -52
  59. package/lib/less/tree/detached-ruleset.js +42 -24
  60. package/lib/less/tree/dimension.js +127 -71
  61. package/lib/less/tree/element.js +82 -52
  62. package/lib/less/tree/expression.js +75 -50
  63. package/lib/less/tree/extend.js +71 -42
  64. package/lib/less/tree/import.js +184 -110
  65. package/lib/less/tree/index.js +52 -81
  66. package/lib/less/tree/javascript.js +43 -32
  67. package/lib/less/tree/js-eval-node.js +46 -32
  68. package/lib/less/tree/keyword.js +25 -17
  69. package/lib/less/tree/media.js +77 -35
  70. package/lib/less/tree/merge-rules.js +47 -0
  71. package/lib/less/tree/mixin-call.js +181 -98
  72. package/lib/less/tree/mixin-definition.js +211 -117
  73. package/lib/less/tree/namespace-value.js +63 -44
  74. package/lib/less/tree/negative.js +34 -21
  75. package/lib/less/tree/nested-at-rule.js +149 -66
  76. package/lib/less/tree/node.js +225 -90
  77. package/lib/less/tree/operation.js +59 -34
  78. package/lib/less/tree/paren.js +34 -17
  79. package/lib/less/tree/property.js +66 -35
  80. package/lib/less/tree/query-in-parens.js +52 -60
  81. package/lib/less/tree/quoted.js +93 -44
  82. package/lib/less/tree/ruleset.js +632 -318
  83. package/lib/less/tree/selector.js +151 -77
  84. package/lib/less/tree/unicode-descriptor.js +14 -12
  85. package/lib/less/tree/unit.js +111 -63
  86. package/lib/less/tree/url.js +62 -38
  87. package/lib/less/tree/value.js +50 -34
  88. package/lib/less/tree/variable-call.js +47 -30
  89. package/lib/less/tree/variable.js +53 -31
  90. package/lib/less/utils.js +44 -47
  91. package/lib/less/visitors/extend-visitor.js +233 -172
  92. package/lib/less/visitors/import-sequencer.js +24 -24
  93. package/lib/less/visitors/import-visitor.js +62 -52
  94. package/lib/less/visitors/index.js +14 -17
  95. package/lib/less/visitors/join-selector-visitor.js +40 -37
  96. package/lib/less/visitors/set-tree-visibility-visitor.js +32 -18
  97. package/lib/less/visitors/to-css-visitor.js +135 -128
  98. package/lib/less/visitors/visitor.js +60 -45
  99. package/lib/less-browser/add-default-options.js +23 -13
  100. package/lib/less-browser/bootstrap.js +23 -17
  101. package/lib/less-browser/browser.js +24 -21
  102. package/lib/less-browser/cache.js +17 -19
  103. package/lib/less-browser/error-reporting.js +52 -44
  104. package/lib/less-browser/file-manager.js +52 -42
  105. package/lib/less-browser/image-size.js +12 -12
  106. package/lib/less-browser/index.js +131 -105
  107. package/lib/less-browser/log-listener.js +30 -31
  108. package/lib/less-browser/plugin-loader.js +10 -10
  109. package/lib/less-browser/utils.js +19 -21
  110. package/lib/less-node/environment.js +32 -8
  111. package/lib/less-node/file-manager.js +62 -45
  112. package/lib/less-node/fs.js +11 -8
  113. package/lib/less-node/image-size.js +40 -31
  114. package/lib/less-node/index.js +28 -19
  115. package/lib/less-node/lessc-helper.js +20 -21
  116. package/lib/less-node/plugin-loader.js +35 -27
  117. package/lib/less-node/url-file-manager.js +33 -31
  118. package/package.json +25 -18
  119. package/.eslintignore +0 -6
  120. package/.eslintrc.js +0 -63
  121. package/Gruntfile.js +0 -403
  122. package/bower.json +0 -22
  123. package/lib/less/constants.js.map +0 -1
  124. package/lib/less/contexts.js.map +0 -1
  125. package/lib/less/data/colors.js.map +0 -1
  126. package/lib/less/data/index.js.map +0 -1
  127. package/lib/less/data/unit-conversions.js.map +0 -1
  128. package/lib/less/default-options.js.map +0 -1
  129. package/lib/less/environment/abstract-file-manager.js.map +0 -1
  130. package/lib/less/environment/abstract-plugin-loader.js.map +0 -1
  131. package/lib/less/environment/environment-api.js +0 -3
  132. package/lib/less/environment/environment-api.js.map +0 -1
  133. package/lib/less/environment/environment.js.map +0 -1
  134. package/lib/less/environment/file-manager-api.js +0 -3
  135. package/lib/less/environment/file-manager-api.js.map +0 -1
  136. package/lib/less/functions/boolean.js.map +0 -1
  137. package/lib/less/functions/color-blending.js.map +0 -1
  138. package/lib/less/functions/color.js.map +0 -1
  139. package/lib/less/functions/data-uri.js.map +0 -1
  140. package/lib/less/functions/default.js.map +0 -1
  141. package/lib/less/functions/function-caller.js.map +0 -1
  142. package/lib/less/functions/function-registry.js.map +0 -1
  143. package/lib/less/functions/index.js.map +0 -1
  144. package/lib/less/functions/list.js.map +0 -1
  145. package/lib/less/functions/math-helper.js.map +0 -1
  146. package/lib/less/functions/math.js.map +0 -1
  147. package/lib/less/functions/number.js.map +0 -1
  148. package/lib/less/functions/string.js.map +0 -1
  149. package/lib/less/functions/style.js.map +0 -1
  150. package/lib/less/functions/svg.js.map +0 -1
  151. package/lib/less/functions/types.js.map +0 -1
  152. package/lib/less/import-manager.js.map +0 -1
  153. package/lib/less/index.js.map +0 -1
  154. package/lib/less/less-error.js.map +0 -1
  155. package/lib/less/logger.js.map +0 -1
  156. package/lib/less/parse-tree.js.map +0 -1
  157. package/lib/less/parse.js.map +0 -1
  158. package/lib/less/parser/parser-input.js.map +0 -1
  159. package/lib/less/parser/parser.js.map +0 -1
  160. package/lib/less/plugin-manager.js.map +0 -1
  161. package/lib/less/render.js.map +0 -1
  162. package/lib/less/source-map-builder.js.map +0 -1
  163. package/lib/less/source-map-output.js.map +0 -1
  164. package/lib/less/transform-tree.js.map +0 -1
  165. package/lib/less/tree/anonymous.js.map +0 -1
  166. package/lib/less/tree/assignment.js.map +0 -1
  167. package/lib/less/tree/atrule-syntax.js.map +0 -1
  168. package/lib/less/tree/atrule.js.map +0 -1
  169. package/lib/less/tree/attribute.js.map +0 -1
  170. package/lib/less/tree/call.js.map +0 -1
  171. package/lib/less/tree/color.js.map +0 -1
  172. package/lib/less/tree/combinator.js.map +0 -1
  173. package/lib/less/tree/comment.js.map +0 -1
  174. package/lib/less/tree/condition.js.map +0 -1
  175. package/lib/less/tree/container.js.map +0 -1
  176. package/lib/less/tree/debug-info.js.map +0 -1
  177. package/lib/less/tree/declaration.js.map +0 -1
  178. package/lib/less/tree/detached-ruleset.js.map +0 -1
  179. package/lib/less/tree/dimension.js.map +0 -1
  180. package/lib/less/tree/element.js.map +0 -1
  181. package/lib/less/tree/expression.js.map +0 -1
  182. package/lib/less/tree/extend.js.map +0 -1
  183. package/lib/less/tree/import.js.map +0 -1
  184. package/lib/less/tree/index.js.map +0 -1
  185. package/lib/less/tree/javascript.js.map +0 -1
  186. package/lib/less/tree/js-eval-node.js.map +0 -1
  187. package/lib/less/tree/keyword.js.map +0 -1
  188. package/lib/less/tree/media.js.map +0 -1
  189. package/lib/less/tree/mixin-call.js.map +0 -1
  190. package/lib/less/tree/mixin-definition.js.map +0 -1
  191. package/lib/less/tree/namespace-value.js.map +0 -1
  192. package/lib/less/tree/negative.js.map +0 -1
  193. package/lib/less/tree/nested-at-rule.js.map +0 -1
  194. package/lib/less/tree/node.js.map +0 -1
  195. package/lib/less/tree/operation.js.map +0 -1
  196. package/lib/less/tree/paren.js.map +0 -1
  197. package/lib/less/tree/property.js.map +0 -1
  198. package/lib/less/tree/query-in-parens.js.map +0 -1
  199. package/lib/less/tree/quoted.js.map +0 -1
  200. package/lib/less/tree/ruleset.js.map +0 -1
  201. package/lib/less/tree/selector.js.map +0 -1
  202. package/lib/less/tree/unicode-descriptor.js.map +0 -1
  203. package/lib/less/tree/unit.js.map +0 -1
  204. package/lib/less/tree/url.js.map +0 -1
  205. package/lib/less/tree/value.js.map +0 -1
  206. package/lib/less/tree/variable-call.js.map +0 -1
  207. package/lib/less/tree/variable.js.map +0 -1
  208. package/lib/less/utils.js.map +0 -1
  209. package/lib/less/visitors/extend-visitor.js.map +0 -1
  210. package/lib/less/visitors/import-sequencer.js.map +0 -1
  211. package/lib/less/visitors/import-visitor.js.map +0 -1
  212. package/lib/less/visitors/index.js.map +0 -1
  213. package/lib/less/visitors/join-selector-visitor.js.map +0 -1
  214. package/lib/less/visitors/set-tree-visibility-visitor.js.map +0 -1
  215. package/lib/less/visitors/to-css-visitor.js.map +0 -1
  216. package/lib/less/visitors/visitor.js.map +0 -1
  217. package/lib/less-browser/add-default-options.js.map +0 -1
  218. package/lib/less-browser/bootstrap.js.map +0 -1
  219. package/lib/less-browser/browser.js.map +0 -1
  220. package/lib/less-browser/cache.js.map +0 -1
  221. package/lib/less-browser/error-reporting.js.map +0 -1
  222. package/lib/less-browser/file-manager.js.map +0 -1
  223. package/lib/less-browser/image-size.js.map +0 -1
  224. package/lib/less-browser/index.js.map +0 -1
  225. package/lib/less-browser/log-listener.js.map +0 -1
  226. package/lib/less-browser/plugin-loader.js.map +0 -1
  227. package/lib/less-browser/utils.js.map +0 -1
  228. package/lib/less-node/environment.js.map +0 -1
  229. package/lib/less-node/file-manager.js.map +0 -1
  230. package/lib/less-node/fs.js.map +0 -1
  231. package/lib/less-node/image-size.js.map +0 -1
  232. package/lib/less-node/index.js.map +0 -1
  233. package/lib/less-node/lessc-helper.js.map +0 -1
  234. package/lib/less-node/plugin-loader.js.map +0 -1
  235. package/lib/less-node/url-file-manager.js.map +0 -1
  236. package/scripts/coverage-lines.js +0 -207
  237. package/scripts/coverage-report.js +0 -158
  238. package/scripts/postinstall.js +0 -61
  239. package/test/.eslintrc.json +0 -9
  240. package/test/README.md +0 -3
  241. package/test/browser/common.js +0 -251
  242. package/test/browser/css/global-vars/simple.css +0 -3
  243. package/test/browser/css/modify-vars/simple.css +0 -8
  244. package/test/browser/css/plugin/plugin.css +0 -3
  245. package/test/browser/css/postProcessor/postProcessor.css +0 -4
  246. package/test/browser/css/relative-urls/urls.css +0 -36
  247. package/test/browser/css/rewrite-urls/urls.css +0 -36
  248. package/test/browser/css/rootpath/urls.css +0 -35
  249. package/test/browser/css/rootpath-relative/urls.css +0 -35
  250. package/test/browser/css/rootpath-rewrite-urls/urls.css +0 -35
  251. package/test/browser/css/urls.css +0 -54
  252. package/test/browser/generator/benchmark.config.js +0 -50
  253. package/test/browser/generator/generate.js +0 -78
  254. package/test/browser/generator/runner.config.js +0 -184
  255. package/test/browser/generator/runner.js +0 -2
  256. package/test/browser/generator/template.js +0 -104
  257. package/test/browser/generator/utils.js +0 -14
  258. package/test/browser/less/console-errors/test-error.less +0 -3
  259. package/test/browser/less/console-errors/test-error.txt +0 -2
  260. package/test/browser/less/errors/image-height-error.less +0 -3
  261. package/test/browser/less/errors/image-height-error.txt +0 -4
  262. package/test/browser/less/errors/image-size-error.less +0 -3
  263. package/test/browser/less/errors/image-size-error.txt +0 -4
  264. package/test/browser/less/errors/image-width-error.less +0 -3
  265. package/test/browser/less/errors/image-width-error.txt +0 -4
  266. package/test/browser/less/global-vars/simple.less +0 -3
  267. package/test/browser/less/imports/urls.less +0 -4
  268. package/test/browser/less/imports/urls2.less +0 -4
  269. package/test/browser/less/modify-vars/imports/simple2.less +0 -4
  270. package/test/browser/less/modify-vars/simple.less +0 -8
  271. package/test/browser/less/nested-gradient-with-svg-gradient/mixin-consumer.less +0 -5
  272. package/test/browser/less/nested-gradient-with-svg-gradient/svg-gradient-mixin.less +0 -15
  273. package/test/browser/less/plugin/plugin.js +0 -4
  274. package/test/browser/less/plugin/plugin.less +0 -4
  275. package/test/browser/less/postProcessor/postProcessor.less +0 -4
  276. package/test/browser/less/relative-urls/urls.less +0 -34
  277. package/test/browser/less/rewrite-urls/urls.less +0 -34
  278. package/test/browser/less/rootpath/urls.less +0 -33
  279. package/test/browser/less/rootpath-relative/urls.less +0 -33
  280. package/test/browser/less/rootpath-rewrite-urls/urls.less +0 -33
  281. package/test/browser/less/urls.less +0 -62
  282. package/test/browser/runner-VisitorPlugin-options.js +0 -3
  283. package/test/browser/runner-VisitorPlugin.js +0 -3
  284. package/test/browser/runner-browser-options.js +0 -51
  285. package/test/browser/runner-browser-spec.js +0 -12
  286. package/test/browser/runner-console-errors.js +0 -5
  287. package/test/browser/runner-errors-options.js +0 -6
  288. package/test/browser/runner-errors-spec.js +0 -3
  289. package/test/browser/runner-filemanagerPlugin-options.js +0 -5
  290. package/test/browser/runner-filemanagerPlugin.js +0 -3
  291. package/test/browser/runner-global-vars-options.js +0 -7
  292. package/test/browser/runner-global-vars-spec.js +0 -3
  293. package/test/browser/runner-main-options.js +0 -17
  294. package/test/browser/runner-main-spec.js +0 -7
  295. package/test/browser/runner-modify-vars-options.js +0 -5
  296. package/test/browser/runner-modify-vars-spec.js +0 -33
  297. package/test/browser/runner-no-js-errors-options.js +0 -4
  298. package/test/browser/runner-no-js-errors-spec.js +0 -3
  299. package/test/browser/runner-postProcessorPlugin-options.js +0 -3
  300. package/test/browser/runner-postProcessorPlugin.js +0 -3
  301. package/test/browser/runner-preProcessorPlugin-options.js +0 -3
  302. package/test/browser/runner-preProcessorPlugin.js +0 -3
  303. package/test/browser/runner-production-options.js +0 -3
  304. package/test/browser/runner-production-spec.js +0 -5
  305. package/test/browser/runner-relative-urls-options.js +0 -3
  306. package/test/browser/runner-relative-urls-spec.js +0 -3
  307. package/test/browser/runner-rewrite-urls-options.js +0 -3
  308. package/test/browser/runner-rewrite-urls-spec.js +0 -3
  309. package/test/browser/runner-rootpath-options.js +0 -3
  310. package/test/browser/runner-rootpath-relative-options.js +0 -4
  311. package/test/browser/runner-rootpath-relative-spec.js +0 -3
  312. package/test/browser/runner-rootpath-rewrite-urls-options.js +0 -4
  313. package/test/browser/runner-rootpath-rewrite-urls-spec.js +0 -3
  314. package/test/browser/runner-rootpath-spec.js +0 -3
  315. package/test/browser/runner-strict-units-options.js +0 -5
  316. package/test/browser/runner-strict-units-spec.js +0 -3
  317. package/test/index.js +0 -307
  318. package/test/less-test.js +0 -984
  319. package/test/mocha-playwright/runner.js +0 -210
  320. package/test/modify-vars.js +0 -28
  321. package/test/plugins/filemanager/index.js +0 -19
  322. package/test/plugins/postprocess/index.js +0 -14
  323. package/test/plugins/preprocess/index.js +0 -19
  324. package/test/plugins/visitor/index.js +0 -24
  325. package/test/sourcemaps/basic.json +0 -1
  326. package/test/sourcemaps/comprehensive.json +0 -1
  327. package/test/sourcemaps/custom-props.json +0 -1
  328. package/test/sourcemaps/index.html +0 -17
  329. package/test/sourcemaps/sourcemaps-basepath.json +0 -1
  330. package/test/sourcemaps/sourcemaps-include-source.json +0 -1
  331. package/test/sourcemaps/sourcemaps-rootpath.json +0 -1
  332. package/test/sourcemaps/sourcemaps-url.json +0 -1
  333. package/test/sourcemaps-disable-annotation/basic.json +0 -1
  334. package/test/sourcemaps-variable-selector/basic.json +0 -1
  335. package/test/test-es6.ts +0 -17
  336. package/test.less +0 -1
  337. package/tsconfig.build.json +0 -7
  338. package/tsconfig.json +0 -21
package/test/README.md DELETED
@@ -1,3 +0,0 @@
1
- Tests are generally organized in the `less/` folder by what options are set in index.js.
2
-
3
- The main tests are located under `less/_main/`
@@ -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(/&amp;/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,3 +0,0 @@
1
- .test {
2
- color: red;
3
- }
@@ -1,8 +0,0 @@
1
- .testisimported {
2
- color: gainsboro;
3
- }
4
- .test {
5
- color1: green;
6
- color2: purple;
7
- scalar: 20;
8
- }
@@ -1,3 +0,0 @@
1
- .test {
2
- val: http://localhost:8081/packages/less/tmp/browser/test-runner-browser.html;
3
- }
@@ -1,4 +0,0 @@
1
- hr {height:50px;}
2
- .test {
3
- color: white;
4
- }
@@ -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
- })