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.
Files changed (340) hide show
  1. package/README.md +70 -5
  2. package/bin/lessc +37 -23
  3. package/dist/less.js +14501 -11745
  4. package/dist/less.min.js +4 -4
  5. package/dist/less.min.js.map +1 -1
  6. package/index.cjs +41 -0
  7. package/lib/less/constants.js +5 -7
  8. package/lib/less/contexts.js +71 -55
  9. package/lib/less/data/colors.js +150 -153
  10. package/lib/less/data/index.js +4 -7
  11. package/lib/less/data/unit-conversions.js +2 -5
  12. package/lib/less/default-options.js +36 -26
  13. package/lib/less/deprecation.js +67 -0
  14. package/lib/less/environment/abstract-file-manager.js +62 -50
  15. package/lib/less/environment/abstract-plugin-loader.js +69 -46
  16. package/lib/less/environment/environment-api.ts +21 -0
  17. package/lib/less/environment/environment.js +34 -30
  18. package/lib/less/environment/file-manager-api.ts +77 -0
  19. package/lib/less/functions/boolean.js +13 -13
  20. package/lib/less/functions/color-blending.js +39 -31
  21. package/lib/less/functions/color.js +153 -137
  22. package/lib/less/functions/data-uri.js +73 -64
  23. package/lib/less/functions/default.js +9 -11
  24. package/lib/less/functions/function-caller.js +35 -34
  25. package/lib/less/functions/function-registry.js +16 -17
  26. package/lib/less/functions/index.js +33 -33
  27. package/lib/less/functions/list.js +88 -75
  28. package/lib/less/functions/math-helper.js +8 -11
  29. package/lib/less/functions/math.js +21 -21
  30. package/lib/less/functions/number.js +42 -53
  31. package/lib/less/functions/string.js +18 -22
  32. package/lib/less/functions/style.js +21 -20
  33. package/lib/less/functions/svg.js +83 -82
  34. package/lib/less/functions/types.js +28 -32
  35. package/lib/less/import-manager.js +73 -64
  36. package/lib/less/index.js +65 -65
  37. package/lib/less/less-error.js +63 -45
  38. package/lib/less/logger.js +11 -14
  39. package/lib/less/parse-tree.js +52 -53
  40. package/lib/less/parse.js +44 -44
  41. package/lib/less/parser/parser-input.js +151 -113
  42. package/lib/less/parser/parser.js +864 -658
  43. package/lib/less/plugin-manager.js +57 -46
  44. package/lib/less/render.js +17 -23
  45. package/lib/less/source-map-builder.js +52 -43
  46. package/lib/less/source-map-output.js +56 -43
  47. package/lib/less/transform-tree.js +40 -30
  48. package/lib/less/tree/anonymous.js +52 -28
  49. package/lib/less/tree/assignment.js +44 -27
  50. package/lib/less/tree/atrule-syntax.js +4 -6
  51. package/lib/less/tree/atrule.js +247 -140
  52. package/lib/less/tree/attribute.js +55 -24
  53. package/lib/less/tree/call.js +70 -42
  54. package/lib/less/tree/color.js +194 -145
  55. package/lib/less/tree/combinator.js +31 -21
  56. package/lib/less/tree/comment.js +44 -23
  57. package/lib/less/tree/condition.js +61 -36
  58. package/lib/less/tree/container.js +90 -34
  59. package/lib/less/tree/debug-info.js +28 -15
  60. package/lib/less/tree/declaration.js +97 -52
  61. package/lib/less/tree/detached-ruleset.js +42 -24
  62. package/lib/less/tree/dimension.js +127 -71
  63. package/lib/less/tree/element.js +82 -52
  64. package/lib/less/tree/expression.js +75 -50
  65. package/lib/less/tree/extend.js +71 -42
  66. package/lib/less/tree/import.js +184 -110
  67. package/lib/less/tree/index.js +52 -81
  68. package/lib/less/tree/javascript.js +43 -32
  69. package/lib/less/tree/js-eval-node.js +46 -32
  70. package/lib/less/tree/keyword.js +25 -17
  71. package/lib/less/tree/media.js +77 -35
  72. package/lib/less/tree/merge-rules.js +47 -0
  73. package/lib/less/tree/mixin-call.js +181 -98
  74. package/lib/less/tree/mixin-definition.js +211 -117
  75. package/lib/less/tree/namespace-value.js +63 -44
  76. package/lib/less/tree/negative.js +34 -21
  77. package/lib/less/tree/nested-at-rule.js +149 -66
  78. package/lib/less/tree/node.js +225 -90
  79. package/lib/less/tree/operation.js +59 -34
  80. package/lib/less/tree/paren.js +34 -17
  81. package/lib/less/tree/property.js +66 -35
  82. package/lib/less/tree/query-in-parens.js +52 -60
  83. package/lib/less/tree/quoted.js +93 -44
  84. package/lib/less/tree/ruleset.js +632 -318
  85. package/lib/less/tree/selector.js +151 -77
  86. package/lib/less/tree/unicode-descriptor.js +14 -12
  87. package/lib/less/tree/unit.js +111 -63
  88. package/lib/less/tree/url.js +62 -38
  89. package/lib/less/tree/value.js +50 -34
  90. package/lib/less/tree/variable-call.js +47 -30
  91. package/lib/less/tree/variable.js +53 -31
  92. package/lib/less/utils.js +44 -47
  93. package/lib/less/visitors/extend-visitor.js +233 -172
  94. package/lib/less/visitors/import-sequencer.js +24 -24
  95. package/lib/less/visitors/import-visitor.js +62 -52
  96. package/lib/less/visitors/index.js +14 -17
  97. package/lib/less/visitors/join-selector-visitor.js +40 -37
  98. package/lib/less/visitors/set-tree-visibility-visitor.js +32 -18
  99. package/lib/less/visitors/to-css-visitor.js +135 -128
  100. package/lib/less/visitors/visitor.js +60 -45
  101. package/lib/less-browser/add-default-options.js +23 -13
  102. package/lib/less-browser/bootstrap.js +23 -17
  103. package/lib/less-browser/browser.js +24 -21
  104. package/lib/less-browser/cache.js +17 -19
  105. package/lib/less-browser/error-reporting.js +52 -44
  106. package/lib/less-browser/file-manager.js +52 -42
  107. package/lib/less-browser/image-size.js +12 -12
  108. package/lib/less-browser/index.js +131 -105
  109. package/lib/less-browser/log-listener.js +30 -31
  110. package/lib/less-browser/plugin-loader.js +10 -10
  111. package/lib/less-browser/utils.js +19 -21
  112. package/lib/less-node/environment.js +32 -8
  113. package/lib/less-node/file-manager.js +62 -45
  114. package/lib/less-node/fs.js +11 -8
  115. package/lib/less-node/image-size.js +40 -31
  116. package/lib/less-node/index.js +28 -19
  117. package/lib/less-node/lessc-helper.js +20 -21
  118. package/lib/less-node/plugin-loader.js +35 -27
  119. package/lib/less-node/url-file-manager.js +33 -31
  120. package/package.json +29 -18
  121. package/.eslintignore +0 -6
  122. package/.eslintrc.js +0 -63
  123. package/Gruntfile.js +0 -403
  124. package/bower.json +0 -22
  125. package/lib/less/constants.js.map +0 -1
  126. package/lib/less/contexts.js.map +0 -1
  127. package/lib/less/data/colors.js.map +0 -1
  128. package/lib/less/data/index.js.map +0 -1
  129. package/lib/less/data/unit-conversions.js.map +0 -1
  130. package/lib/less/default-options.js.map +0 -1
  131. package/lib/less/environment/abstract-file-manager.js.map +0 -1
  132. package/lib/less/environment/abstract-plugin-loader.js.map +0 -1
  133. package/lib/less/environment/environment-api.js +0 -3
  134. package/lib/less/environment/environment-api.js.map +0 -1
  135. package/lib/less/environment/environment.js.map +0 -1
  136. package/lib/less/environment/file-manager-api.js +0 -3
  137. package/lib/less/environment/file-manager-api.js.map +0 -1
  138. package/lib/less/functions/boolean.js.map +0 -1
  139. package/lib/less/functions/color-blending.js.map +0 -1
  140. package/lib/less/functions/color.js.map +0 -1
  141. package/lib/less/functions/data-uri.js.map +0 -1
  142. package/lib/less/functions/default.js.map +0 -1
  143. package/lib/less/functions/function-caller.js.map +0 -1
  144. package/lib/less/functions/function-registry.js.map +0 -1
  145. package/lib/less/functions/index.js.map +0 -1
  146. package/lib/less/functions/list.js.map +0 -1
  147. package/lib/less/functions/math-helper.js.map +0 -1
  148. package/lib/less/functions/math.js.map +0 -1
  149. package/lib/less/functions/number.js.map +0 -1
  150. package/lib/less/functions/string.js.map +0 -1
  151. package/lib/less/functions/style.js.map +0 -1
  152. package/lib/less/functions/svg.js.map +0 -1
  153. package/lib/less/functions/types.js.map +0 -1
  154. package/lib/less/import-manager.js.map +0 -1
  155. package/lib/less/index.js.map +0 -1
  156. package/lib/less/less-error.js.map +0 -1
  157. package/lib/less/logger.js.map +0 -1
  158. package/lib/less/parse-tree.js.map +0 -1
  159. package/lib/less/parse.js.map +0 -1
  160. package/lib/less/parser/parser-input.js.map +0 -1
  161. package/lib/less/parser/parser.js.map +0 -1
  162. package/lib/less/plugin-manager.js.map +0 -1
  163. package/lib/less/render.js.map +0 -1
  164. package/lib/less/source-map-builder.js.map +0 -1
  165. package/lib/less/source-map-output.js.map +0 -1
  166. package/lib/less/transform-tree.js.map +0 -1
  167. package/lib/less/tree/anonymous.js.map +0 -1
  168. package/lib/less/tree/assignment.js.map +0 -1
  169. package/lib/less/tree/atrule-syntax.js.map +0 -1
  170. package/lib/less/tree/atrule.js.map +0 -1
  171. package/lib/less/tree/attribute.js.map +0 -1
  172. package/lib/less/tree/call.js.map +0 -1
  173. package/lib/less/tree/color.js.map +0 -1
  174. package/lib/less/tree/combinator.js.map +0 -1
  175. package/lib/less/tree/comment.js.map +0 -1
  176. package/lib/less/tree/condition.js.map +0 -1
  177. package/lib/less/tree/container.js.map +0 -1
  178. package/lib/less/tree/debug-info.js.map +0 -1
  179. package/lib/less/tree/declaration.js.map +0 -1
  180. package/lib/less/tree/detached-ruleset.js.map +0 -1
  181. package/lib/less/tree/dimension.js.map +0 -1
  182. package/lib/less/tree/element.js.map +0 -1
  183. package/lib/less/tree/expression.js.map +0 -1
  184. package/lib/less/tree/extend.js.map +0 -1
  185. package/lib/less/tree/import.js.map +0 -1
  186. package/lib/less/tree/index.js.map +0 -1
  187. package/lib/less/tree/javascript.js.map +0 -1
  188. package/lib/less/tree/js-eval-node.js.map +0 -1
  189. package/lib/less/tree/keyword.js.map +0 -1
  190. package/lib/less/tree/media.js.map +0 -1
  191. package/lib/less/tree/mixin-call.js.map +0 -1
  192. package/lib/less/tree/mixin-definition.js.map +0 -1
  193. package/lib/less/tree/namespace-value.js.map +0 -1
  194. package/lib/less/tree/negative.js.map +0 -1
  195. package/lib/less/tree/nested-at-rule.js.map +0 -1
  196. package/lib/less/tree/node.js.map +0 -1
  197. package/lib/less/tree/operation.js.map +0 -1
  198. package/lib/less/tree/paren.js.map +0 -1
  199. package/lib/less/tree/property.js.map +0 -1
  200. package/lib/less/tree/query-in-parens.js.map +0 -1
  201. package/lib/less/tree/quoted.js.map +0 -1
  202. package/lib/less/tree/ruleset.js.map +0 -1
  203. package/lib/less/tree/selector.js.map +0 -1
  204. package/lib/less/tree/unicode-descriptor.js.map +0 -1
  205. package/lib/less/tree/unit.js.map +0 -1
  206. package/lib/less/tree/url.js.map +0 -1
  207. package/lib/less/tree/value.js.map +0 -1
  208. package/lib/less/tree/variable-call.js.map +0 -1
  209. package/lib/less/tree/variable.js.map +0 -1
  210. package/lib/less/utils.js.map +0 -1
  211. package/lib/less/visitors/extend-visitor.js.map +0 -1
  212. package/lib/less/visitors/import-sequencer.js.map +0 -1
  213. package/lib/less/visitors/import-visitor.js.map +0 -1
  214. package/lib/less/visitors/index.js.map +0 -1
  215. package/lib/less/visitors/join-selector-visitor.js.map +0 -1
  216. package/lib/less/visitors/set-tree-visibility-visitor.js.map +0 -1
  217. package/lib/less/visitors/to-css-visitor.js.map +0 -1
  218. package/lib/less/visitors/visitor.js.map +0 -1
  219. package/lib/less-browser/add-default-options.js.map +0 -1
  220. package/lib/less-browser/bootstrap.js.map +0 -1
  221. package/lib/less-browser/browser.js.map +0 -1
  222. package/lib/less-browser/cache.js.map +0 -1
  223. package/lib/less-browser/error-reporting.js.map +0 -1
  224. package/lib/less-browser/file-manager.js.map +0 -1
  225. package/lib/less-browser/image-size.js.map +0 -1
  226. package/lib/less-browser/index.js.map +0 -1
  227. package/lib/less-browser/log-listener.js.map +0 -1
  228. package/lib/less-browser/plugin-loader.js.map +0 -1
  229. package/lib/less-browser/utils.js.map +0 -1
  230. package/lib/less-node/environment.js.map +0 -1
  231. package/lib/less-node/file-manager.js.map +0 -1
  232. package/lib/less-node/fs.js.map +0 -1
  233. package/lib/less-node/image-size.js.map +0 -1
  234. package/lib/less-node/index.js.map +0 -1
  235. package/lib/less-node/lessc-helper.js.map +0 -1
  236. package/lib/less-node/plugin-loader.js.map +0 -1
  237. package/lib/less-node/url-file-manager.js.map +0 -1
  238. package/scripts/coverage-lines.js +0 -207
  239. package/scripts/coverage-report.js +0 -158
  240. package/scripts/postinstall.js +0 -61
  241. package/test/.eslintrc.json +0 -9
  242. package/test/README.md +0 -3
  243. package/test/browser/common.js +0 -251
  244. package/test/browser/css/global-vars/simple.css +0 -3
  245. package/test/browser/css/modify-vars/simple.css +0 -8
  246. package/test/browser/css/plugin/plugin.css +0 -3
  247. package/test/browser/css/postProcessor/postProcessor.css +0 -4
  248. package/test/browser/css/relative-urls/urls.css +0 -36
  249. package/test/browser/css/rewrite-urls/urls.css +0 -36
  250. package/test/browser/css/rootpath/urls.css +0 -35
  251. package/test/browser/css/rootpath-relative/urls.css +0 -35
  252. package/test/browser/css/rootpath-rewrite-urls/urls.css +0 -35
  253. package/test/browser/css/urls.css +0 -54
  254. package/test/browser/generator/benchmark.config.js +0 -50
  255. package/test/browser/generator/generate.js +0 -78
  256. package/test/browser/generator/runner.config.js +0 -184
  257. package/test/browser/generator/runner.js +0 -2
  258. package/test/browser/generator/template.js +0 -104
  259. package/test/browser/generator/utils.js +0 -14
  260. package/test/browser/less/console-errors/test-error.less +0 -3
  261. package/test/browser/less/console-errors/test-error.txt +0 -2
  262. package/test/browser/less/errors/image-height-error.less +0 -3
  263. package/test/browser/less/errors/image-height-error.txt +0 -4
  264. package/test/browser/less/errors/image-size-error.less +0 -3
  265. package/test/browser/less/errors/image-size-error.txt +0 -4
  266. package/test/browser/less/errors/image-width-error.less +0 -3
  267. package/test/browser/less/errors/image-width-error.txt +0 -4
  268. package/test/browser/less/global-vars/simple.less +0 -3
  269. package/test/browser/less/imports/urls.less +0 -4
  270. package/test/browser/less/imports/urls2.less +0 -4
  271. package/test/browser/less/modify-vars/imports/simple2.less +0 -4
  272. package/test/browser/less/modify-vars/simple.less +0 -8
  273. package/test/browser/less/nested-gradient-with-svg-gradient/mixin-consumer.less +0 -5
  274. package/test/browser/less/nested-gradient-with-svg-gradient/svg-gradient-mixin.less +0 -15
  275. package/test/browser/less/plugin/plugin.js +0 -4
  276. package/test/browser/less/plugin/plugin.less +0 -4
  277. package/test/browser/less/postProcessor/postProcessor.less +0 -4
  278. package/test/browser/less/relative-urls/urls.less +0 -34
  279. package/test/browser/less/rewrite-urls/urls.less +0 -34
  280. package/test/browser/less/rootpath/urls.less +0 -33
  281. package/test/browser/less/rootpath-relative/urls.less +0 -33
  282. package/test/browser/less/rootpath-rewrite-urls/urls.less +0 -33
  283. package/test/browser/less/urls.less +0 -62
  284. package/test/browser/runner-VisitorPlugin-options.js +0 -3
  285. package/test/browser/runner-VisitorPlugin.js +0 -3
  286. package/test/browser/runner-browser-options.js +0 -51
  287. package/test/browser/runner-browser-spec.js +0 -12
  288. package/test/browser/runner-console-errors.js +0 -5
  289. package/test/browser/runner-errors-options.js +0 -6
  290. package/test/browser/runner-errors-spec.js +0 -3
  291. package/test/browser/runner-filemanagerPlugin-options.js +0 -5
  292. package/test/browser/runner-filemanagerPlugin.js +0 -3
  293. package/test/browser/runner-global-vars-options.js +0 -7
  294. package/test/browser/runner-global-vars-spec.js +0 -3
  295. package/test/browser/runner-main-options.js +0 -17
  296. package/test/browser/runner-main-spec.js +0 -7
  297. package/test/browser/runner-modify-vars-options.js +0 -5
  298. package/test/browser/runner-modify-vars-spec.js +0 -33
  299. package/test/browser/runner-no-js-errors-options.js +0 -4
  300. package/test/browser/runner-no-js-errors-spec.js +0 -3
  301. package/test/browser/runner-postProcessorPlugin-options.js +0 -3
  302. package/test/browser/runner-postProcessorPlugin.js +0 -3
  303. package/test/browser/runner-preProcessorPlugin-options.js +0 -3
  304. package/test/browser/runner-preProcessorPlugin.js +0 -3
  305. package/test/browser/runner-production-options.js +0 -3
  306. package/test/browser/runner-production-spec.js +0 -5
  307. package/test/browser/runner-relative-urls-options.js +0 -3
  308. package/test/browser/runner-relative-urls-spec.js +0 -3
  309. package/test/browser/runner-rewrite-urls-options.js +0 -3
  310. package/test/browser/runner-rewrite-urls-spec.js +0 -3
  311. package/test/browser/runner-rootpath-options.js +0 -3
  312. package/test/browser/runner-rootpath-relative-options.js +0 -4
  313. package/test/browser/runner-rootpath-relative-spec.js +0 -3
  314. package/test/browser/runner-rootpath-rewrite-urls-options.js +0 -4
  315. package/test/browser/runner-rootpath-rewrite-urls-spec.js +0 -3
  316. package/test/browser/runner-rootpath-spec.js +0 -3
  317. package/test/browser/runner-strict-units-options.js +0 -5
  318. package/test/browser/runner-strict-units-spec.js +0 -3
  319. package/test/index.js +0 -307
  320. package/test/less-test.js +0 -984
  321. package/test/mocha-playwright/runner.js +0 -210
  322. package/test/modify-vars.js +0 -28
  323. package/test/plugins/filemanager/index.js +0 -19
  324. package/test/plugins/postprocess/index.js +0 -14
  325. package/test/plugins/preprocess/index.js +0 -19
  326. package/test/plugins/visitor/index.js +0 -24
  327. package/test/sourcemaps/basic.json +0 -1
  328. package/test/sourcemaps/comprehensive.json +0 -1
  329. package/test/sourcemaps/custom-props.json +0 -1
  330. package/test/sourcemaps/index.html +0 -17
  331. package/test/sourcemaps/sourcemaps-basepath.json +0 -1
  332. package/test/sourcemaps/sourcemaps-include-source.json +0 -1
  333. package/test/sourcemaps/sourcemaps-rootpath.json +0 -1
  334. package/test/sourcemaps/sourcemaps-url.json +0 -1
  335. package/test/sourcemaps-disable-annotation/basic.json +0 -1
  336. package/test/sourcemaps-variable-selector/basic.json +0 -1
  337. package/test/test-es6.ts +0 -17
  338. package/test.less +0 -1
  339. package/tsconfig.build.json +0 -7
  340. package/tsconfig.json +0 -21
@@ -1,3 +0,0 @@
1
- describe('less.js Visitor Plugin', function() {
2
- testLessEqualsInDocument();
3
- });
@@ -1,51 +0,0 @@
1
- var less = {
2
- logLevel: 4,
3
- errorReporting: 'console',
4
- javascriptEnabled: true,
5
- math: 'always'
6
- };
7
-
8
- // test inline less in style tags by grabbing an assortment of less files and doing `@import`s
9
- var testFiles = ['charsets/charsets', 'color-functions/basic', 'comments/comments', 'css-3/css-3', 'strings/strings', 'media/media', 'mixins/mixins'],
10
- testSheets = [];
11
-
12
- // setup style tags with less and link tags pointing to expected css output
13
-
14
- /**
15
- * @todo - generate the node_modules path for this file and in templates
16
- */
17
- var lessFolder = '../../node_modules/@less/test-data/tests-unit'
18
- var cssFolder = '../../node_modules/@less/test-data/tests-unit'
19
-
20
- for (var i = 0; i < testFiles.length; i++) {
21
- var file = testFiles[i],
22
- lessPath = lessFolder + '/' + file + '.less',
23
- cssPath = cssFolder + '/' + file + '.css',
24
- lessStyle = document.createElement('style'),
25
- cssLink = document.createElement('link'),
26
- lessText = '@import "' + lessPath + '";';
27
-
28
- lessStyle.type = 'text/less';
29
- lessStyle.id = file;
30
- lessStyle.href = file;
31
-
32
- if (lessStyle.styleSheet === undefined) {
33
- lessStyle.appendChild(document.createTextNode(lessText));
34
- }
35
-
36
- cssLink.rel = 'stylesheet';
37
- cssLink.type = 'text/css';
38
- cssLink.href = cssPath;
39
- cssLink.id = 'expected-' + file;
40
-
41
- var head = document.getElementsByTagName('head')[0];
42
-
43
- head.appendChild(lessStyle);
44
-
45
- if (lessStyle.styleSheet) {
46
- lessStyle.styleSheet.cssText = lessText;
47
- }
48
-
49
- head.appendChild(cssLink);
50
- testSheets[i] = lessStyle;
51
- }
@@ -1,12 +0,0 @@
1
- describe('less.js browser behaviour', function() {
2
- testLessEqualsInDocument();
3
-
4
- it('has some log messages', function() {
5
- expect(logMessages.length).to.be.above(0);
6
- });
7
-
8
- for (var i = 0; i < testFiles.length; i++) {
9
- var sheet = testSheets[i];
10
- testSheet(sheet);
11
- }
12
- });
@@ -1,5 +0,0 @@
1
- less.errorReporting = 'console';
2
-
3
- describe('less.js error reporting console test', function() {
4
- testLessErrorsInDocument(true);
5
- });
@@ -1,6 +0,0 @@
1
- var less = {
2
- strictUnits: true,
3
- math: 'strict-legacy',
4
- logLevel: 4,
5
- javascriptEnabled: true
6
- };
@@ -1,3 +0,0 @@
1
- describe('less.js error tests', function() {
2
- testLessErrorsInDocument();
3
- });
@@ -1,5 +0,0 @@
1
- var less = {
2
- logLevel: 4,
3
- errorReporting: 'console',
4
- plugins: [AddFilePlugin]
5
- };
@@ -1,3 +0,0 @@
1
- describe('less.js filemanager Plugin', function() {
2
- testLessEqualsInDocument();
3
- });
@@ -1,7 +0,0 @@
1
- var less = {
2
- logLevel: 4,
3
- errorReporting: 'console',
4
- globalVars: {
5
- '@global-var': 'red'
6
- }
7
- };
@@ -1,3 +0,0 @@
1
- describe('less.js global vars', function() {
2
- testLessEqualsInDocument();
3
- });
@@ -1,17 +0,0 @@
1
- var less = {
2
- logLevel: 4,
3
- errorReporting: 'console'
4
- };
5
- less.functions = {
6
- add: function(a, b) {
7
- return new(less.tree.Dimension)(a.value + b.value);
8
- },
9
- increment: function(a) {
10
- return new(less.tree.Dimension)(a.value + 1);
11
- },
12
- _color: function(str) {
13
- if (str.value === 'evil red') {
14
- return new(less.tree.Color)('600');
15
- }
16
- }
17
- };
@@ -1,7 +0,0 @@
1
- console.warn('start spec');
2
- describe('less.js main tests', function() {
3
- testLessEqualsInDocument();
4
- it('the global environment', function() {
5
- expect(window.require).to.be.undefined;
6
- });
7
- });
@@ -1,5 +0,0 @@
1
- /* exported less */
2
- var less = {
3
- logLevel: 4,
4
- errorReporting: 'console'
5
- };
@@ -1,33 +0,0 @@
1
- var alreadyRun = false;
2
-
3
- describe('less.js modify vars', function () {
4
- beforeEach(function (done) {
5
- // simulating "setUp" or "beforeAll" method
6
- if (alreadyRun) {
7
- done();
8
- return;
9
- }
10
-
11
- alreadyRun = true;
12
-
13
- less.pageLoadFinished
14
- .then(function () {
15
- less.modifyVars({
16
- var1: 'green',
17
- var2: 'purple',
18
- scale: 20
19
- }).then(function () {
20
- done();
21
- });
22
- });
23
- });
24
-
25
- testLessEqualsInDocument();
26
- it('Should log only 2 XHR requests', function (done) {
27
- var xhrLogMessages = logMessages.filter(function (item) {
28
- return (/XHR: Getting '/).test(item);
29
- });
30
- expect(xhrLogMessages.length).to.equal(2);
31
- done();
32
- });
33
- });
@@ -1,4 +0,0 @@
1
- var less = {logLevel: 4};
2
-
3
- less.strictUnits = true;
4
- less.javascriptEnabled = false;
@@ -1,3 +0,0 @@
1
- describe('less.js javascript disabled error tests', function() {
2
- testLessErrorsInDocument();
3
- });
@@ -1,3 +0,0 @@
1
- var less = {logLevel: 4,
2
- errorReporting: 'console',
3
- plugins: [postProcessorPlugin]};
@@ -1,3 +0,0 @@
1
- describe('less.js postProcessor Plugin', function() {
2
- testLessEqualsInDocument();
3
- });
@@ -1,3 +0,0 @@
1
- var less = {logLevel: 4,
2
- errorReporting: 'console',
3
- plugins: [preProcessorPlugin]};
@@ -1,3 +0,0 @@
1
- describe('less.js preProcessor Plugin', function() {
2
- testLessEqualsInDocument();
3
- });
@@ -1,3 +0,0 @@
1
- var less = {logLevel: 1,
2
- errorReporting: 'console'};
3
- less.env = 'production';
@@ -1,5 +0,0 @@
1
- describe('less.js production behaviour', function() {
2
- it('doesn\'t log any messages', function() {
3
- expect(logMessages.length).to.equal(0);
4
- });
5
- });
@@ -1,3 +0,0 @@
1
- var less = {logLevel: 4,
2
- errorReporting: 'console'};
3
- less.relativeUrls = true;
@@ -1,3 +0,0 @@
1
- describe('less.js browser test - relative url\'s', function() {
2
- testLessEqualsInDocument();
3
- });
@@ -1,3 +0,0 @@
1
- var less = {logLevel: 4,
2
- errorReporting: 'console'};
3
- less.rewriteUrls = 'all';
@@ -1,3 +0,0 @@
1
- describe('less.js browser test - rewrite urls', function() {
2
- testLessEqualsInDocument();
3
- });
@@ -1,3 +0,0 @@
1
- var less = {logLevel: 4,
2
- errorReporting: 'console'};
3
- less.rootpath = 'https://localhost/';
@@ -1,4 +0,0 @@
1
- var less = {logLevel: 4,
2
- errorReporting: 'console'};
3
- less.rootpath = 'https://www.github.com/cloudhead/less.js/';
4
- less.relativeUrls = true;
@@ -1,3 +0,0 @@
1
- describe('less.js browser test - rootpath and relative urls', function() {
2
- testLessEqualsInDocument();
3
- });
@@ -1,4 +0,0 @@
1
- var less = {logLevel: 4,
2
- errorReporting: 'console'};
3
- less.rootpath = 'https://www.github.com/cloudhead/less.js/';
4
- less.rewriteUrls = 'all';
@@ -1,3 +0,0 @@
1
- describe('less.js browser test - rootpath and rewrite urls', function() {
2
- testLessEqualsInDocument();
3
- });
@@ -1,3 +0,0 @@
1
- describe('less.js browser test - rootpath url\'s', function() {
2
- testLessEqualsInDocument();
3
- });
@@ -1,5 +0,0 @@
1
- var less = {
2
- logLevel: 4,
3
- errorReporting: 'console',
4
- strictMath: true,
5
- strictUnits: true };
@@ -1,3 +0,0 @@
1
- describe('less.js strict units tests', function() {
2
- testLessEqualsInDocument();
3
- });
package/test/index.js DELETED
@@ -1,307 +0,0 @@
1
- // Mock needle for HTTP requests BEFORE any other requires
2
- const Module = require('module');
3
- const originalRequire = Module.prototype.require;
4
- Module.prototype.require = function(id) {
5
- if (id === 'needle') {
6
- return {
7
- get: function(url, options, callback) {
8
-
9
- // Handle CDN requests
10
- if (url.includes('cdn.jsdelivr.net')) {
11
- if (url.includes('selectors.less')) {
12
- setTimeout(() => {
13
- callback(null, { statusCode: 200 }, fs.readFileSync(path.join(__dirname, '../../test-data/tests-unit/selectors/selectors.less'), 'utf8'));
14
- }, 10);
15
- return;
16
- }
17
- if (url.includes('media.less')) {
18
- setTimeout(() => {
19
- callback(null, { statusCode: 200 }, fs.readFileSync(path.join(__dirname, '../../test-data/tests-unit/media/media.less'), 'utf8'));
20
- }, 10);
21
- return;
22
- }
23
- if (url.includes('empty.less')) {
24
- setTimeout(() => {
25
- callback(null, { statusCode: 200 }, fs.readFileSync(path.join(__dirname, '../../test-data/tests-unit/empty/empty.less'), 'utf8'));
26
- }, 10);
27
- return;
28
- }
29
- }
30
-
31
- // Handle redirect test - simulate needle's automatic redirect handling
32
- if (url.includes('example.com/redirect.less')) {
33
- setTimeout(() => {
34
- // Simulate the final response after needle automatically follows the redirect
35
- callback(null, { statusCode: 200 }, 'h1 { color: blue; }');
36
- }, 10);
37
- return;
38
- }
39
-
40
- if (url.includes('example.com/target.less')) {
41
- setTimeout(() => {
42
- callback(null, { statusCode: 200 }, 'h1 { color: blue; }');
43
- }, 10);
44
- return;
45
- }
46
-
47
- // Default error for unmocked URLs
48
- setTimeout(() => {
49
- callback(new Error('Unmocked URL: ' + url), null, null);
50
- }, 10);
51
- }
52
- };
53
- }
54
- return originalRequire.apply(this, arguments);
55
- };
56
-
57
- // Now load other modules after mocking is set up
58
- var path = require('path'),
59
- fs = require('fs'),
60
- lessTest = require('./less-test'),
61
- stylize = require('../lib/less-node/lessc-helper').stylize;
62
-
63
- // Parse command line arguments for test filtering
64
- var args = process.argv.slice(2);
65
- var testFilter = args.length > 0 ? args[0] : null;
66
-
67
- // Create the test runner with the filter
68
- var lessTester = lessTest(testFilter);
69
-
70
- // HTTP mocking is now handled by needle mocking above
71
-
72
- // Test HTTP redirect functionality
73
- function testHttpRedirects() {
74
- const less = require('../lib/less-node').default;
75
-
76
- console.log('🧪 Testing HTTP redirect functionality...');
77
-
78
- const redirectTest = `
79
- @import "https://example.com/redirect.less";
80
-
81
- h1 { color: red; }
82
- `;
83
-
84
- return less.render(redirectTest, {
85
- filename: 'test-redirect.less'
86
- }).then(result => {
87
- console.log('✅ HTTP redirect test SUCCESS:');
88
- console.log(result.css);
89
-
90
- // Check if both imported and local content are present
91
- if (result.css.includes('color: blue') && result.css.includes('color: red')) {
92
- console.log('🎉 HTTP redirect test PASSED - both imported and local content found');
93
- return true;
94
- } else {
95
- console.log('❌ HTTP redirect test FAILED - missing expected content');
96
- return false;
97
- }
98
- }).catch(err => {
99
- console.log('❌ HTTP redirect test ERROR:');
100
- console.log(err.message);
101
- return false;
102
- });
103
- }
104
-
105
- // Test import-remote functionality
106
- function testImportRemote() {
107
- const less = require('../lib/less-node').default;
108
- const fs = require('fs');
109
- const path = require('path');
110
-
111
- console.log('🧪 Testing import-remote functionality...');
112
-
113
- const testFile = path.join(__dirname, '../../test-data/tests-unit/import/import-remote.less');
114
- const expectedFile = path.join(__dirname, '../../test-data/tests-unit/import/import-remote.css');
115
-
116
- const content = fs.readFileSync(testFile, 'utf8');
117
- const expected = fs.readFileSync(expectedFile, 'utf8');
118
-
119
- return less.render(content, {
120
- filename: testFile
121
- }).then(result => {
122
- console.log('✅ Import-remote test SUCCESS:');
123
- console.log('Expected:', expected.trim());
124
- console.log('Actual:', result.css.trim());
125
-
126
- if (result.css.trim() === expected.trim()) {
127
- console.log('🎉 Import-remote test PASSED - CDN imports and variable resolution working');
128
- return true;
129
- } else {
130
- console.log('❌ Import-remote test FAILED - output mismatch');
131
- return false;
132
- }
133
- }).catch(err => {
134
- console.log('❌ Import-remote test ERROR:');
135
- console.log(err.message);
136
- return false;
137
- });
138
- }
139
-
140
- console.log('\n' + stylize('Less', 'underline') + '\n');
141
-
142
- if (testFilter) {
143
- console.log('Running tests matching: ' + testFilter + '\n');
144
- }
145
-
146
- // Glob patterns for main test runs (excluding problematic tests that will run separately)
147
- var globPatterns = [
148
- 'tests-config/*/*.less',
149
- 'tests-unit/*/*.less',
150
- // Debug tests have nested subdirectories (comments/, mediaquery/, all/)
151
- 'tests-config/debug/*/linenumbers-*.less',
152
- '!tests-config/sourcemaps/**/*.less', // Exclude sourcemaps (need special handling)
153
- '!tests-config/sourcemaps-empty/*', // Exclude sourcemaps-empty (need special handling)
154
- '!tests-config/sourcemaps-disable-annotation/*', // Exclude sourcemaps-disable-annotation (need special handling)
155
- '!tests-config/sourcemaps-variable-selector/*', // Exclude sourcemaps-variable-selector (need special handling)
156
- '!tests-config/globalVars/*', // Exclude globalVars (need JSON config handling)
157
- '!tests-config/modifyVars/*', // Exclude modifyVars (need JSON config handling)
158
- '!tests-config/js-type-errors/*', // Exclude js-type-errors (need special test function)
159
- '!tests-config/no-js-errors/*', // Exclude no-js-errors (need special test function)
160
- '!tests-unit/import/import-remote.less', // Exclude import-remote (tested separately in isolation)
161
-
162
- // HTTP import tests are now included since we have needle mocking
163
- ];
164
-
165
- var testMap = [
166
- // Main test runs using glob patterns (cosmiconfig handles configs)
167
- {
168
- patterns: globPatterns
169
- },
170
-
171
- // Error tests
172
- {
173
- patterns: ['tests-error/eval/*.less'],
174
- verifyFunction: lessTester.testErrors
175
- },
176
- {
177
- patterns: ['tests-error/parse/*.less'],
178
- verifyFunction: lessTester.testErrors
179
- },
180
-
181
- // Special test cases with specific handling
182
- {
183
- patterns: ['tests-config/js-type-errors/*.less'],
184
- verifyFunction: lessTester.testTypeErrors
185
- },
186
- {
187
- patterns: ['tests-config/no-js-errors/*.less'],
188
- verifyFunction: lessTester.testErrors
189
- },
190
-
191
- // Sourcemap tests with special handling
192
- {
193
- patterns: [
194
- 'tests-config/sourcemaps/**/*.less',
195
- 'tests-config/sourcemaps-url/**/*.less',
196
- 'tests-config/sourcemaps-rootpath/**/*.less',
197
- 'tests-config/sourcemaps-basepath/**/*.less',
198
- 'tests-config/sourcemaps-include-source/**/*.less'
199
- ],
200
- verifyFunction: lessTester.testSourcemap,
201
- getFilename: function(filename, type, baseFolder) {
202
- if (type === 'vars') {
203
- return path.join(baseFolder, filename) + '.json';
204
- }
205
- // Extract just the filename (without directory) for the JSON file
206
- var jsonFilename = path.basename(filename);
207
- // For sourcemap type, return path relative to test directory
208
- if (type === 'sourcemap') {
209
- return path.join('test/sourcemaps', jsonFilename) + '.json';
210
- }
211
- return path.join('test/sourcemaps', jsonFilename) + '.json';
212
- }
213
- },
214
- {
215
- patterns: ['tests-config/sourcemaps-empty/*.less'],
216
- verifyFunction: lessTester.testEmptySourcemap
217
- },
218
- {
219
- patterns: ['tests-config/sourcemaps-disable-annotation/*.less'],
220
- verifyFunction: lessTester.testSourcemapWithoutUrlAnnotation
221
- },
222
- {
223
- patterns: ['tests-config/sourcemaps-variable-selector/*.less'],
224
- verifyFunction: lessTester.testSourcemapWithVariableInSelector
225
- },
226
-
227
- // Import tests with JSON configs
228
- {
229
- patterns: ['tests-config/globalVars/*.less'],
230
- lessOptions: {
231
- globalVars: function(file) {
232
- const fs = require('fs');
233
- const path = require('path');
234
- const basename = path.basename(file, '.less');
235
- const jsonPath = path.join(path.dirname(file), basename + '.json');
236
- try {
237
- return JSON.parse(fs.readFileSync(jsonPath, 'utf8'));
238
- } catch (e) {
239
- return {};
240
- }
241
- }
242
- }
243
- },
244
- {
245
- patterns: ['tests-config/modifyVars/*.less'],
246
- lessOptions: {
247
- modifyVars: function(file) {
248
- const fs = require('fs');
249
- const path = require('path');
250
- const basename = path.basename(file, '.less');
251
- const jsonPath = path.join(path.dirname(file), basename + '.json');
252
- try {
253
- return JSON.parse(fs.readFileSync(jsonPath, 'utf8'));
254
- } catch (e) {
255
- return {};
256
- }
257
- }
258
- }
259
- }
260
- ];
261
-
262
- // Note: needle mocking is set up globally at the top of the file
263
-
264
- testMap.forEach(function(testConfig) {
265
- // For glob patterns, pass lessOptions as the first parameter and patterns as the second
266
- if (testConfig.patterns) {
267
- lessTester.runTestSet(
268
- testConfig.lessOptions || {}, // First param: options (including lessOptions)
269
- testConfig.patterns, // Second param: patterns
270
- testConfig.verifyFunction || null, // Third param: verifyFunction
271
- testConfig.nameModifier || null, // Fourth param: nameModifier
272
- testConfig.doReplacements || null, // Fifth param: doReplacements
273
- testConfig.getFilename || null // Sixth param: getFilename
274
- );
275
- } else {
276
- // Legacy format for non-glob tests
277
- var args = [
278
- testConfig.options || {}, // First param: options
279
- testConfig.foldername, // Second param: foldername
280
- testConfig.verifyFunction || null, // Third param: verifyFunction
281
- testConfig.nameModifier || null, // Fourth param: nameModifier
282
- testConfig.doReplacements || null, // Fifth param: doReplacements
283
- testConfig.getFilename || null // Sixth param: getFilename
284
- ];
285
- lessTester.runTestSet.apply(lessTester, args);
286
- }
287
- });
288
-
289
- // Special synchronous tests
290
- lessTester.testSyncronous({syncImport: true}, 'tests-unit/import/import');
291
- lessTester.testSyncronous({syncImport: true}, 'tests-config/math-strict/css');
292
-
293
- lessTester.testNoOptions();
294
- lessTester.testDisablePluginRule();
295
- lessTester.testJSImport();
296
- lessTester.finished();
297
-
298
-
299
- // Test HTTP redirect functionality
300
- console.log('\nTesting HTTP redirect functionality...');
301
- testHttpRedirects();
302
- console.log('HTTP redirect test completed');
303
-
304
- // Test import-remote functionality in isolation
305
- console.log('\nTesting import-remote functionality...');
306
- testImportRemote();
307
- console.log('Import-remote test completed');