diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4f30242c3..8e7c614f9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,7 +38,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] - node: [10, 12, 14, 16, 19] + node: [10, 12, 14, 16, 20] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 diff --git a/package-lock.json b/package-lock.json index c1ca16a13..b0d4eb3a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,8 +12,7 @@ "devDependencies": { "github-changes": "^1.1.2", "lerna": "^3.22.1", - "npm-run-all": "^4.1.5", - "resolve-bin": "~1.0.1" + "npm-run-all": "^4.1.5" } }, "node_modules/@babel/code-frame": { @@ -4441,11 +4440,6 @@ "node": ">=0.10.0" } }, - "node_modules/find-parent-dir": { - "version": "0.3.1", - "dev": true, - "license": "MIT" - }, "node_modules/find-up": { "version": "4.1.0", "dev": true, @@ -9033,14 +9027,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-bin": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "find-parent-dir": "~0.3.0" - } - }, "node_modules/resolve-cwd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", @@ -14659,10 +14645,6 @@ "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", "dev": true }, - "find-parent-dir": { - "version": "0.3.1", - "dev": true - }, "find-up": { "version": "4.1.0", "dev": true, @@ -18203,13 +18185,6 @@ "path-parse": "^1.0.6" } }, - "resolve-bin": { - "version": "1.0.1", - "dev": true, - "requires": { - "find-parent-dir": "~0.3.0" - } - }, "resolve-cwd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", diff --git a/package.json b/package.json index 61fce01dd..9758bb590 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,6 @@ "devDependencies": { "github-changes": "^1.1.2", "lerna": "^3.22.1", - "npm-run-all": "^4.1.5", - "resolve-bin": "~1.0.1" + "npm-run-all": "^4.1.5" } } diff --git a/packages/less/Gruntfile.js b/packages/less/Gruntfile.js index 65e400fc4..b0731c887 100644 --- a/packages/less/Gruntfile.js +++ b/packages/less/Gruntfile.js @@ -2,7 +2,6 @@ var resolve = require('resolve'); var path = require('path'); -var resolveBin = require('resolve-bin') var testFolder = path.relative(process.cwd(), path.dirname(resolve.sync('@less/test-data'))); var lessFolder = path.join(testFolder, 'less'); @@ -184,12 +183,6 @@ module.exports = function(grunt) { // Make the SauceLabs jobs ["all"].concat(browserTests).map(makeJob); - var path = require('path'); - - // Handle async / await in Rollup build for tests - const tsNodeRuntime = resolveBin.sync('ts-node'); - const crossEnv = resolveBin.sync('cross-env'); - // Project configuration. grunt.initConfig({ shell: { @@ -223,12 +216,7 @@ module.exports = function(grunt) { command: "node build/rollup.js --browser --out=./tmp/browser/less.min.js" }, test: { - command: [ - // https://github.com/TypeStrong/ts-node/issues/693#issuecomment-848907036 - crossEnv + " TS_NODE_SCOPE=true", - tsNodeRuntime + " test/test-es6.ts", - "node test/index.js" - ].join(' && ') + command: 'ts-node test/test-es6.ts && node test/index.js' }, generatebrowser: { command: 'node test/browser/generator/generate.js' diff --git a/packages/less/test/browser/generator/runner.config.js b/packages/less/test/browser/generator/runner.config.js index a47bf7341..6298e0ad8 100644 --- a/packages/less/test/browser/generator/runner.config.js +++ b/packages/less/test/browser/generator/runner.config.js @@ -1,11 +1,11 @@ var path = require('path'); var resolve = require('resolve') +var { forceCovertToBrowserPath } = require('./utils'); /** Root of repo */ -var rootFolder = path.resolve(__dirname, '../../../../../'); -var testFolder = path.dirname(resolve.sync('@less/test-data')) -var lessFolder = path.join(testFolder, 'less'); -var localTests = path.resolve(__dirname, '..'); +var testFolder = forceCovertToBrowserPath(path.dirname(resolve.sync('@less/test-data'))); +var lessFolder = forceCovertToBrowserPath(path.join(testFolder, 'less')); +var localTests = forceCovertToBrowserPath(path.resolve(__dirname, '..')); module.exports = { main: { @@ -35,7 +35,7 @@ module.exports = { } }, strictUnits: { - src: [`${lessFolder}/strict-units/*.less`], + src: [`${lessFolder}/units/strict/*.less`], options: { helpers: 'test/browser/runner-strict-units-options.js', specs: 'test/browser/runner-strict-units-spec.js', @@ -185,4 +185,4 @@ module.exports = { outfile: 'tmp/browser/test-runner-filemanager-plugin.html' } } -} \ No newline at end of file +} diff --git a/packages/less/test/browser/generator/template.js b/packages/less/test/browser/generator/template.js index 7341114e5..77c5a896e 100644 --- a/packages/less/test/browser/generator/template.js +++ b/packages/less/test/browser/generator/template.js @@ -1,10 +1,11 @@ const html = require('html-template-tag') const path = require('path') +const { forceCovertToBrowserPath } = require('./utils') const webRoot = path.resolve(__dirname, '../../../../../'); -const mochaDir = path.relative(webRoot, path.dirname(require.resolve('mocha'))) -const chaiDir = path.relative(webRoot, path.dirname(require.resolve('chai'))) -const mochaTeamCityDir = path.relative(webRoot, path.dirname(require.resolve('mocha-teamcity-reporter'))) +const mochaDir = forceCovertToBrowserPath(path.relative(webRoot, path.dirname(require.resolve('mocha')))) +const chaiDir = forceCovertToBrowserPath(path.relative(webRoot, path.dirname(require.resolve('chai')))) +const mochaTeamCityDir = forceCovertToBrowserPath(path.relative(webRoot, path.dirname(require.resolve('mocha-teamcity-reporter')))) /** * Generates HTML templates from list of test sheets diff --git a/packages/less/test/browser/generator/utils.js b/packages/less/test/browser/generator/utils.js new file mode 100644 index 000000000..a2041f1f2 --- /dev/null +++ b/packages/less/test/browser/generator/utils.js @@ -0,0 +1,14 @@ +/** + * utils for covert browser paths, + * fix https://github.com/less/less.js/pull/4213 + * + * @param {string} path + * @returns {string} + */ +function forceCovertToBrowserPath (path) { + return (path || '').replace(/\\/g, '/'); +} + +module.exports = { + forceCovertToBrowserPath +}