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,184 +0,0 @@
1
- var path = require('path');
2
- var resolve = require('resolve')
3
- var { forceCovertToBrowserPath } = require('./utils');
4
-
5
- /** Root of repo */
6
- var testFolder = forceCovertToBrowserPath(path.dirname(resolve.sync('@less/test-data')));
7
- var testsUnitFolder = forceCovertToBrowserPath(path.join(testFolder, 'tests-unit'));
8
- var testsConfigFolder = forceCovertToBrowserPath(path.join(testFolder, 'tests-config'));
9
- var localTests = forceCovertToBrowserPath(path.resolve(__dirname, '..'));
10
-
11
- module.exports = {
12
- main: {
13
- // src is used to build list of less files to compile
14
- src: [
15
- `${testsUnitFolder}/*/*.less`,
16
- `!${testsUnitFolder}/plugin-preeval/plugin-preeval.less`, // uses ES6 syntax
17
- // Don't test NPM import, obviously
18
- `!${testsUnitFolder}/plugin-module/plugin-module.less`,
19
- `!${testsUnitFolder}/import/import-module.less`,
20
- `!${testsUnitFolder}/javascript/javascript.less`,
21
- `!${testsUnitFolder}/urls/urls.less`,
22
- `!${testsUnitFolder}/empty/empty.less`,
23
- `!${testsUnitFolder}/color-functions/operations.less`, // conflicts with operations/operations.less
24
- // Exclude debug line numbers tests - these are Node.js only (dumpLineNumbers is deprecated)
25
- `!${testsConfigFolder}/debug/**/*.less`
26
- ],
27
- options: {
28
- helpers: 'test/browser/runner-main-options.js',
29
- specs: 'test/browser/runner-main-spec.js',
30
- outfile: 'tmp/browser/test-runner-main.html'
31
- }
32
- },
33
- strictUnits: {
34
- src: [`${testsConfigFolder}/units/strict/*.less`],
35
- options: {
36
- helpers: 'test/browser/runner-strict-units-options.js',
37
- specs: 'test/browser/runner-strict-units-spec.js',
38
- outfile: 'tmp/browser/test-runner-strict-units.html'
39
- }
40
- },
41
- errors: {
42
- src: [
43
- `${testFolder}/tests-error/eval/*.less`,
44
- `${testFolder}/tests-error/parse/*.less`,
45
- `${localTests}/less/errors/*.less`
46
- ],
47
- options: {
48
- timeout: 20000,
49
- helpers: 'test/browser/runner-errors-options.js',
50
- specs: 'test/browser/runner-errors-spec.js',
51
- outfile: 'tmp/browser/test-runner-errors.html'
52
- }
53
- },
54
- noJsErrors: {
55
- src: [`${testsConfigFolder}/no-js-errors/*.less`],
56
- options: {
57
- helpers: 'test/browser/runner-no-js-errors-options.js',
58
- specs: 'test/browser/runner-no-js-errors-spec.js',
59
- outfile: 'tmp/browser/test-runner-no-js-errors.html'
60
- }
61
- },
62
- browser: {
63
- src: [
64
- `${localTests}/less/*.less`,
65
- `${localTests}/less/plugin/*.less`
66
- ],
67
- options: {
68
- helpers: 'test/browser/runner-browser-options.js',
69
- specs: 'test/browser/runner-browser-spec.js',
70
- outfile: 'tmp/browser/test-runner-browser.html'
71
- }
72
- },
73
- relativeUrls: {
74
- src: [`${localTests}/less/relative-urls/*.less`],
75
- options: {
76
- helpers: 'test/browser/runner-relative-urls-options.js',
77
- specs: 'test/browser/runner-relative-urls-spec.js',
78
- outfile: 'tmp/browser/test-runner-relative-urls.html'
79
- }
80
- },
81
- rewriteUrls: {
82
- src: [`${localTests}/less/rewrite-urls/*.less`],
83
- options: {
84
- helpers: 'test/browser/runner-rewrite-urls-options.js',
85
- specs: 'test/browser/runner-rewrite-urls-spec.js',
86
- outfile: 'tmp/browser/test-runner-rewrite-urls.html'
87
- }
88
- },
89
- rootpath: {
90
- src: [`${localTests}/less/rootpath/*.less`],
91
- options: {
92
- helpers: 'test/browser/runner-rootpath-options.js',
93
- specs: 'test/browser/runner-rootpath-spec.js',
94
- outfile: 'tmp/browser/test-runner-rootpath.html'
95
- }
96
- },
97
- rootpathRelative: {
98
- src: [`${localTests}/less/rootpath-relative/*.less`],
99
- options: {
100
- helpers: 'test/browser/runner-rootpath-relative-options.js',
101
- specs: 'test/browser/runner-rootpath-relative-spec.js',
102
- outfile: 'tmp/browser/test-runner-rootpath-relative.html'
103
- }
104
- },
105
- rootpathRewriteUrls: {
106
- src: [`${localTests}/less/rootpath-rewrite-urls/*.less`],
107
- options: {
108
- helpers:
109
- 'test/browser/runner-rootpath-rewrite-urls-options.js',
110
- specs: 'test/browser/runner-rootpath-rewrite-urls-spec.js',
111
- outfile:
112
- 'tmp/browser/test-runner-rootpath-rewrite-urls.html'
113
- }
114
- },
115
- production: {
116
- src: [`${localTests}/less/production/*.less`],
117
- options: {
118
- helpers: 'test/browser/runner-production-options.js',
119
- specs: 'test/browser/runner-production-spec.js',
120
- outfile: 'tmp/browser/test-runner-production.html'
121
- }
122
- },
123
- modifyVars: {
124
- src: [`${localTests}/less/modify-vars/*.less`],
125
- options: {
126
- helpers: 'test/browser/runner-modify-vars-options.js',
127
- specs: 'test/browser/runner-modify-vars-spec.js',
128
- outfile: 'tmp/browser/test-runner-modify-vars.html'
129
- }
130
- },
131
- globalVars: {
132
- src: [`${localTests}/less/global-vars/*.less`],
133
- options: {
134
- helpers: 'test/browser/runner-global-vars-options.js',
135
- specs: 'test/browser/runner-global-vars-spec.js',
136
- outfile: 'tmp/browser/test-runner-global-vars.html'
137
- }
138
- },
139
- postProcessorPlugin: {
140
- src: [`${testsConfigFolder}/postProcessorPlugin/*.less`],
141
- options: {
142
- helpers: [
143
- 'test/plugins/postprocess/index.js',
144
- 'test/browser/runner-postProcessorPlugin-options.js'
145
- ],
146
- specs: 'test/browser/runner-postProcessorPlugin.js',
147
- outfile:
148
- 'tmp/browser/test-runner-post-processor-plugin.html'
149
- }
150
- },
151
- preProcessorPlugin: {
152
- src: [`${testsConfigFolder}/preProcessorPlugin/*.less`],
153
- options: {
154
- helpers: [
155
- 'test/plugins/preprocess/index.js',
156
- 'test/browser/runner-preProcessorPlugin-options.js'
157
- ],
158
- specs: 'test/browser/runner-preProcessorPlugin.js',
159
- outfile: 'tmp/browser/test-runner-pre-processor-plugin.html'
160
- }
161
- },
162
- visitorPlugin: {
163
- src: [`${testsConfigFolder}/visitorPlugin/*.less`],
164
- options: {
165
- helpers: [
166
- 'test/plugins/visitor/index.js',
167
- 'test/browser/runner-VisitorPlugin-options.js'
168
- ],
169
- specs: 'test/browser/runner-VisitorPlugin.js',
170
- outfile: 'tmp/browser/test-runner-visitor-plugin.html'
171
- }
172
- },
173
- filemanagerPlugin: {
174
- src: [`${testsConfigFolder}/filemanagerPlugin/*.less`],
175
- options: {
176
- helpers: [
177
- 'test/plugins/filemanager/index.js',
178
- 'test/browser/runner-filemanagerPlugin-options.js'
179
- ],
180
- specs: 'test/browser/runner-filemanagerPlugin.js',
181
- outfile: 'tmp/browser/test-runner-filemanager-plugin.html'
182
- }
183
- }
184
- }
@@ -1,2 +0,0 @@
1
- const runner = require('./generate')
2
- runner()
@@ -1,104 +0,0 @@
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'))))
9
-
10
- /**
11
- * Generates HTML templates from list of test sheets
12
- */
13
- module.exports = (stylesheets, helpers, spec, less) => {
14
- if (!Array.isArray(helpers)) {
15
- helpers = [helpers]
16
- }
17
- return html`
18
- <!DOCTYPE html>
19
- <html lang="en">
20
- <head>
21
- <meta charset="utf-8">
22
-
23
- <title>Less.js Spec Runner</title>
24
-
25
- <!-- for each test, generate CSS/LESS link tags -->
26
- $${stylesheets.map(function(fullLessName) {
27
- var pathParts = fullLessName.split('/');
28
- var fullCssName = fullLessName.replace(/less$/, 'css');
29
-
30
- // Check if the CSS file exists in the same directory as the LESS file
31
- var fs = require('fs');
32
- var cssExists = fs.existsSync(fullCssName);
33
-
34
- // If not, try the css/ directory for local browser tests
35
- if (!cssExists && fullLessName.includes('/test/browser/less/')) {
36
- var cssInCssDir = fullLessName.replace('/test/browser/less/', '/test/browser/css/').replace(/less$/, 'css');
37
- if (fs.existsSync(cssInCssDir)) {
38
- fullCssName = cssInCssDir;
39
- }
40
- }
41
-
42
- var lessName = pathParts[pathParts.length - 1];
43
- var name = lessName.split('.')[0];
44
- return `
45
- <!-- the tags to be generated -->
46
- <link id="original-less:test-less-${name}" title="test-less-${name}" rel="stylesheet/less" type="text/css" href="/${path.relative(webRoot, fullLessName)}">
47
- <link id="expected-less:test-less-${name}" rel="stylesheet" type="text/css" href="/${path.relative(webRoot, fullCssName)}">
48
- ` }).join('')}
49
-
50
- $${helpers.map(helper => `
51
- <script src="../../${helper}"></script>
52
- `).join('')}
53
-
54
- <link rel="stylesheet" href="/${mochaDir}/mocha.css">
55
- </head>
56
-
57
- <body>
58
- <!-- content -->
59
- <div id="mocha"></div>
60
- <script src="/${mochaDir}/mocha.js"></script>
61
- <script src="/${mochaTeamCityDir}/teamcityBrowser.js"></script>
62
- <script src="/${chaiDir}/chai.js"></script>
63
- <script>
64
- expect = chai.expect
65
- mocha.setup({
66
- ui: 'bdd',
67
- timeout: 2500
68
- });
69
- </script>
70
- <script src="common.js"></script>
71
- <script src="../../${spec}"></script>
72
- <script src="${less || 'less.min.js'}"></script>
73
- <script>
74
- /** Saucelabs config */
75
- onload = function() {
76
- var runner = mocha.run();
77
-
78
- var failedTests = [];
79
- runner.on('end', function() {
80
- window.mochaResults = runner.stats;
81
- window.mochaResults.reports = failedTests;
82
- });
83
-
84
- runner.on('fail', logFailure);
85
-
86
- function logFailure(test, err){
87
- var flattenTitles = function(test){
88
- var titles = [];
89
- while (test.parent.title) {
90
- titles.push(test.parent.title);
91
- test = test.parent;
92
- }
93
- return titles.reverse();
94
- };
95
-
96
- failedTests.push({name: test.title, result: false, message: err.message, stack: err.stack, titles: flattenTitles(test) });
97
- };
98
- };
99
-
100
- </script>
101
- </body>
102
- </html>
103
- `
104
- }
@@ -1,14 +0,0 @@
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,3 +0,0 @@
1
- .a {
2
- prop: (3 / #fff);
3
- }
@@ -1,2 +0,0 @@
1
- less: OperationError: Can't subtract or divide a color from a number in {pathhref}console-errors/test-error.less on line null, column 0:
2
- 1 prop: (3 / #fff);
@@ -1,3 +0,0 @@
1
- .test-height{
2
- height: image-height("../data/image.jpg")
3
- }
@@ -1,4 +0,0 @@
1
- RuntimeError: Error evaluating function `image-height`: Image size functions are not supported in browser version of less in image-height-error.less on line 2, column 11:
2
- 1 .test-height{
3
- 2 height: image-height("../data/image.jpg")
4
- 3 }
@@ -1,3 +0,0 @@
1
- .test-size{
2
- size: image-size("../data/image.jpg")
3
- }
@@ -1,4 +0,0 @@
1
- RuntimeError: Error evaluating function `image-size`: Image size functions are not supported in browser version of less in image-size-error.less on line 2, column 9:
2
- 1 .test-size{
3
- 2 size: image-size("../data/image.jpg")
4
- 3 }
@@ -1,3 +0,0 @@
1
- .test-width{
2
- width: image-width("../data/image.jpg")
3
- }
@@ -1,4 +0,0 @@
1
- RuntimeError: Error evaluating function `image-width`: Image size functions are not supported in browser version of less in image-width-error.less on line 2, column 10:
2
- 1 .test-width{
3
- 2 width: image-width("../data/image.jpg")
4
- 3 }
@@ -1,3 +0,0 @@
1
- .test {
2
- color: @global-var;
3
- }
@@ -1,4 +0,0 @@
1
- @import "modify-this.css";
2
- .modify {
3
- my-url: url("a.png");
4
- }
@@ -1,4 +0,0 @@
1
- @import "modify-again.css";
2
- .modify {
3
- my-url: url("b.png");
4
- }
@@ -1,4 +0,0 @@
1
- @var2: blue;
2
- .testisimported {
3
- color: gainsboro;
4
- }
@@ -1,8 +0,0 @@
1
- @import "imports/simple2";
2
- @var1: red;
3
- @scale: 10;
4
- .test {
5
- color1: @var1;
6
- color2: @var2;
7
- scalar: @scale
8
- }
@@ -1,5 +0,0 @@
1
- @import "svg-gradient-mixin.less";
2
-
3
- .gray-gradient {
4
- .gradient-mixin(#999);
5
- }
@@ -1,15 +0,0 @@
1
- .gradient-mixin(@color) {
2
- background: svg-gradient(to bottom,
3
- fade(@color, 0%) 0%,
4
- fade(@color, 5%) 60%,
5
- fade(@color, 10%) 70%,
6
- fade(@color, 15%) 73%,
7
- fade(@color, 20%) 75%,
8
- fade(@color, 25%) 80%,
9
- fade(@color, 30%) 85%,
10
- fade(@color, 35%) 88%,
11
- fade(@color, 40%) 90%,
12
- fade(@color, 45%) 95%,
13
- fade(@color, 50%) 100%
14
- );
15
- }
@@ -1,4 +0,0 @@
1
-
2
- functions.add('func', function() {
3
- return less.anonymous(location.href);
4
- });
@@ -1,4 +0,0 @@
1
- @plugin "plugin";
2
- .test {
3
- val: func();
4
- }
@@ -1,4 +0,0 @@
1
- @color: white;
2
- .test {
3
- color: @color;
4
- }
@@ -1,34 +0,0 @@
1
- @import ".././imports/urls.less";
2
- @import "http://localhost:8081/packages/less/test/browser/less/imports/urls2.less";
3
- @font-face {
4
- src: url("/fonts/garamond-pro.ttf");
5
- src: local(Futura-Medium),
6
- url(fonts.svg#MyGeometricModern) format("svg");
7
- }
8
- #shorthands {
9
- background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
10
- }
11
- #misc {
12
- background-image: url(images/image.jpg);
13
- background: url("#inline-svg");
14
- }
15
- #data-uri {
16
- background: url(data:image/png;charset=utf-8;base64,
17
- kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
18
- k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
19
- kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
20
- background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
21
- background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
22
- }
23
-
24
- #svg-data-uri {
25
- background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
26
- }
27
-
28
- .comma-delimited {
29
- background: url(bg.jpg) no-repeat, url(bg.png) repeat-x top left, url(bg);
30
- }
31
- .values {
32
- @a: 'Trebuchet';
33
- url: url(@a);
34
- }
@@ -1,34 +0,0 @@
1
- @import ".././imports/urls.less";
2
- @import "http://localhost:8081/packages/less/test/browser/less/imports/urls2.less";
3
- @font-face {
4
- src: url("/fonts/garamond-pro.ttf");
5
- src: local(Futura-Medium),
6
- url(fonts.svg#MyGeometricModern) format("svg");
7
- }
8
- #shorthands {
9
- background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
10
- }
11
- #misc {
12
- background-image: url(images/image.jpg);
13
- background: url("#inline-svg");
14
- }
15
- #data-uri {
16
- background: url(data:image/png;charset=utf-8;base64,
17
- kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
18
- k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
19
- kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
20
- background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
21
- background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
22
- }
23
-
24
- #svg-data-uri {
25
- background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
26
- }
27
-
28
- .comma-delimited {
29
- background: url(bg.jpg) no-repeat, url(bg.png) repeat-x top left, url(bg);
30
- }
31
- .values {
32
- @a: 'Trebuchet';
33
- url: url(@a);
34
- }
@@ -1,33 +0,0 @@
1
- @import "../imports/urls.less";
2
- @import "http://localhost:8081/packages/less/test/browser/less/imports/urls2.less";
3
- @font-face {
4
- src: url("/fonts/garamond-pro.ttf");
5
- src: local(Futura-Medium),
6
- url(fonts.svg#MyGeometricModern) format("svg");
7
- }
8
- #shorthands {
9
- background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
10
- }
11
- #misc {
12
- background-image: url(images/image.jpg);
13
- }
14
- #data-uri {
15
- background: url(data:image/png;charset=utf-8;base64,
16
- kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
17
- k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
18
- kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
19
- background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
20
- background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
21
- }
22
-
23
- #svg-data-uri {
24
- background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
25
- }
26
-
27
- .comma-delimited {
28
- background: url(bg.jpg) no-repeat, url(bg.png) repeat-x top left, url(bg);
29
- }
30
- .values {
31
- @a: 'Trebuchet';
32
- url: url(@a);
33
- }
@@ -1,33 +0,0 @@
1
- @import "../imports/urls.less";
2
- @import "http://localhost:8081/packages/less/test/browser/less/imports/urls2.less";
3
- @font-face {
4
- src: url("/fonts/garamond-pro.ttf");
5
- src: local(Futura-Medium),
6
- url(fonts.svg#MyGeometricModern) format("svg");
7
- }
8
- #shorthands {
9
- background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
10
- }
11
- #misc {
12
- background-image: url(images/image.jpg);
13
- }
14
- #data-uri {
15
- background: url(data:image/png;charset=utf-8;base64,
16
- kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
17
- k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
18
- kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
19
- background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
20
- background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
21
- }
22
-
23
- #svg-data-uri {
24
- background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
25
- }
26
-
27
- .comma-delimited {
28
- background: url(bg.jpg) no-repeat, url(bg.png) repeat-x top left, url(bg);
29
- }
30
- .values {
31
- @a: 'Trebuchet';
32
- url: url(@a);
33
- }
@@ -1,33 +0,0 @@
1
- @import "../imports/urls.less";
2
- @import "http://localhost:8081/packages/less/test/browser/less/imports/urls2.less";
3
- @font-face {
4
- src: url("/fonts/garamond-pro.ttf");
5
- src: local(Futura-Medium),
6
- url(fonts.svg#MyGeometricModern) format("svg");
7
- }
8
- #shorthands {
9
- background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
10
- }
11
- #misc {
12
- background-image: url(images/image.jpg);
13
- }
14
- #data-uri {
15
- background: url(data:image/png;charset=utf-8;base64,
16
- kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
17
- k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
18
- kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
19
- background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
20
- background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
21
- }
22
-
23
- #svg-data-uri {
24
- background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
25
- }
26
-
27
- .comma-delimited {
28
- background: url(bg.jpg) no-repeat, url(bg.png) repeat-x top left, url(bg);
29
- }
30
- .values {
31
- @a: 'Trebuchet';
32
- url: url(@a);
33
- }
@@ -1,62 +0,0 @@
1
- @import "imports/urls.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
- @font-face {
5
- src: url("/fonts/garamond-pro.ttf");
6
- src: local(Futura-Medium),
7
- url(fonts.svg#MyGeometricModern) format("svg");
8
- not-a-comment: url(//z);
9
- }
10
- #shorthands {
11
- background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
12
- }
13
- #misc {
14
- background-image: url(images/image.jpg);
15
- }
16
- #data-uri {
17
- background: url(data:image/png;charset=utf-8;base64,
18
- kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
19
- k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
20
- kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
21
- background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
22
- background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
23
- }
24
-
25
- #svg-data-uri {
26
- background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
27
- }
28
-
29
- .comma-delimited {
30
- background: url(bg.jpg) no-repeat, url(bg.png) repeat-x top left, url(bg);
31
- }
32
- .values {
33
- @a: 'Trebuchet';
34
- url: url(@a);
35
- }
36
- #data-uri {
37
- uri: data-uri('image/jpeg;base64', '../../data/image.jpg');
38
- }
39
-
40
- #data-uri-guess {
41
- uri: data-uri('../../data/image.jpg');
42
- }
43
-
44
- #data-uri-ascii {
45
- uri-1: data-uri('text/html', '../../data/page.html');
46
- uri-2: data-uri('../../data/page.html');
47
- }
48
-
49
- #svg-functions {
50
- @colorlist1: black, white;
51
- background-image: svg-gradient(to bottom, @colorlist1);
52
- background-image: svg-gradient(to bottom, black white);
53
- background-image: svg-gradient(to bottom, black, orange 3%, white);
54
- @colorlist2: black, orange 3%, white;
55
- background-image: svg-gradient(to bottom, @colorlist2);
56
- @green_5: green 5%;
57
- @orange_percentage: 3%;
58
- @orange_color: orange;
59
- @colorlist3: (mix(black, white) + #444) 1%, @orange_color @orange_percentage, ((@green_5)), white 95%;
60
- background-image: svg-gradient(to bottom,@colorlist3);
61
- background-image: svg-gradient(to bottom, (mix(black, white) + #444) 1%, @orange_color @orange_percentage, ((@green_5)), white 95%);
62
- }
@@ -1,3 +0,0 @@
1
- var less = {logLevel: 4,
2
- errorReporting: 'console',
3
- plugins: [VisitorPlugin]};