From 9c60f906a16b2fa3949796b567c72b4a6a8b5bb2 Mon Sep 17 00:00:00 2001 From: Simon Lydell Date: Wed, 14 Oct 2020 11:05:39 +0200 Subject: [PATCH] Leverage `elm-json solve` (updated) (#451) Fixes #328, fixes #277, fixes #273, fixes #323, fixes #374 zwilias recently released [`elm-json`](https://github.com/zwilias/elm-json), a tool for interacting with `elm.json` files. One of the available subcommands is `solve`: Given an elm.json file (for a package or application), it tries to generate a single set of direct and indirect dependencies that satisfy all constraints. It has 2 flags that make it useful for `node-test-runner`: - `--test` => Includes the `test-dependencies` and promotes them to direct dependencies - `--extra` => Allows providing an extra set of packages that need to be direct dependencies of the final result Since `elm-json` can be installed through `npm` and has binaries available for OS X, Windows and Linux (statically linked), it seems like a fine candidate to use in `node-test-runner` for calculating the final set of dependencies needed for the generated application. --- lib/Generate.js | 110 +----------------- lib/Runner.js | 42 ------- lib/elm-test.js | 44 ++----- lib/solve.js | 31 +++++ lib/version.js | 33 ------ package-lock.json | 1 - package.json | 2 +- .../elm-home/0.19.1/packages/registry.dat | Bin 101462 -> 101496 bytes tests/fixtures/elm-home/elm-json/versions.dat | Bin 0 -> 226654 bytes tests/test_versions.js | 23 ---- 10 files changed, 46 insertions(+), 240 deletions(-) create mode 100644 lib/solve.js delete mode 100644 lib/version.js create mode 100644 tests/fixtures/elm-home/elm-json/versions.dat delete mode 100644 tests/test_versions.js diff --git a/lib/Generate.js b/lib/Generate.js index 0658144c..70c82318 100644 --- a/lib/Generate.js +++ b/lib/Generate.js @@ -3,7 +3,7 @@ const path = require('path'), fs = require('fs-extra'), Murmur = require('murmur-hash-js'), - Version = require('./version.js'), + Solve = require('./solve.js'), Compile = require('./Compile.js'), supportsColor = require('chalk').supportsColor; @@ -51,10 +51,7 @@ function readUtf8(filepath) { function generateElmJson( projectRootDir /*: string */, - pathToElmBinary /*: string */, generatedCodeDir /*: string */, - filePaths /*: Array */, - packageIndirectDeps /*: Object */, hasBeenGivenCustomGlobs /*: boolean */ ) /*: [string, string, Array] */ { const testRootDir = Compile.getTestRootDir(projectRootDir); @@ -70,6 +67,7 @@ function generateElmJson( process.exit(1); } var isPackageProject = projectElmJson.type === 'package'; + var dependencies = Solve.get_dependencies(elmJsonPath); // if we were given file globs, we don't need to check the tests/ directory exists // this is only for elm applications, which people may need to introduce slowly into their apps @@ -112,34 +110,13 @@ function generateElmJson( type: 'application', 'source-directories': [], // these are added below 'elm-version': '0.19.1', - dependencies: { - direct: {}, - indirect: {}, - }, + dependencies: dependencies, 'test-dependencies': { direct: {}, indirect: {}, }, }; - var nodeTestRunnerElmJsonPath = path.resolve( - path.join(__dirname, '..', 'elm', 'elm.json') - ); - var nodeTestRunnerElmJson = fs.readJsonSync(nodeTestRunnerElmJsonPath); - // we want to use the version of elm-explorations/test that the user - // specifies in their own test-dependencies. everything else needs to - // be included for the test runner to compile. - delete nodeTestRunnerElmJson.dependencies.direct['elm-explorations/test']; - addDirectDependencies( - nodeTestRunnerElmJson['dependencies']['direct'], - isPackageProject, - testElmJson - ); - addIndirectDependencies( - nodeTestRunnerElmJson['dependencies']['indirect'], - testElmJson - ); - // Make all the source-directories absolute, and introduce a new one. var projectSourceDirs; if (isPackageProject) { @@ -182,39 +159,6 @@ function generateElmJson( return path.relative(generatedCodeDir, absolutePath); }); - if (isPackageProject) { - addDirectDependencies( - projectElmJson['dependencies'], - isPackageProject, - testElmJson - ); - addDirectDependencies( - projectElmJson['test-dependencies'], - isPackageProject, - testElmJson - ); - addIndirectDependencies(packageIndirectDeps, testElmJson); - } else { - addDirectDependencies( - projectElmJson['dependencies']['direct'], - isPackageProject, - testElmJson - ); - addIndirectDependencies( - projectElmJson['dependencies']['indirect'], - testElmJson - ); - addDirectDependencies( - projectElmJson['test-dependencies']['direct'], - isPackageProject, - testElmJson - ); - addIndirectDependencies( - projectElmJson['test-dependencies']['indirect'], - testElmJson - ); - } - // Generate the new elm.json, if necessary. const generatedContents = JSON.stringify(testElmJson, null, 4); const generatedPath = path.join(generatedCodeDir, 'elm.json'); @@ -235,54 +179,6 @@ function generateElmJson( return [generatedCodeDir, generatedSrc, sourceDirs]; } -function addDirectDependencies( - deps /*: Object */, - isPackageProject /*: boolean */, - testElmJson /*: Object */ -) { - Object.keys(deps).forEach(function (name) { - var version = deps[name]; - if (isPackageProject) { - // Use the lowest version in the range. - // NOTE: technically this doesn't work if someone does something weird like: - // - // "2.0.0 < v < 3.0.0" - // - // ...but we're choosing not to support that right now. - version = version.split(' ')[0]; - } - if (testElmJson['dependencies']['direct'].hasOwnProperty(name)) { - var existingVersion = testElmJson['dependencies']['direct'][name]; - - // If we have a clash, choose the higher of the two versions. - // This may not work! It's entirely possible that the result won't - // compile. We're going to try it and see what happens. - version = Version.getHigherVersion(version, existingVersion); - } - testElmJson['dependencies']['direct'][name] = version; - }); -} - -function addIndirectDependencies(deps, testElmJson /*: Object */) { - Object.keys(deps).forEach(function (name) { - if (testElmJson['dependencies']['direct'].hasOwnProperty(name)) { - // already a normal dep - } else { - var version = deps[name]; - - if (testElmJson['dependencies']['indirect'].hasOwnProperty(name)) { - var existingVersion = testElmJson['dependencies']['indirect'][name]; - - // If we have a clash, choose the higher of the two versions. - // This may not work! It's entirely possible that the result won't - // compile. We're going to try it and see what happens. - version = Version.getHigherVersion(version, existingVersion); - } - - testElmJson['dependencies']['indirect'][name] = version; - } - }); -} function generateMainModule( fuzz /*: number */, seed /*: number */, diff --git a/lib/Runner.js b/lib/Runner.js index d3237bf5..778bd6cb 100644 --- a/lib/Runner.js +++ b/lib/Runner.js @@ -30,47 +30,6 @@ function getFirstLine(pathToFile /*: string */) /*: Promise */ { var readElmiPath = require('elmi-to-json').paths['elmi-to-json']; -function getIndirectDeps(projectRootDir /*: string */) /*: Promise */ { - return new Promise(function (resolve, reject) { - var proc = spawn(readElmiPath, ['--for-elm-test'], { - cwd: projectRootDir, - env: process.env, - }); - let jsonStr = ''; - let stderrStr = ''; - - proc.stdout.on('data', function (data) { - jsonStr += data; - }); - - proc.stderr.on('data', function (data) { - stderrStr += data; - }); - - proc.on('close', function (code) { - if (stderrStr !== '') { - reject(stderrStr); - } else if (code !== 0) { - reject('Finding package interface failed, exiting with code ' + code); - } - - try { - let outline = JSON.parse(jsonStr).outline; - - if (outline.type !== 'ValidPkg') { - reject( - 'Invalid package - please run `elm make` instead of `elm test` and fix the errors you see!' - ); - } else { - resolve(outline.exactDeps); - } - } catch (err) { - reject('Received invalid JSON from package interface search: ' + err); - } - }); - }); -} - function moduleFromFilePath(filePathArg) { var parsed = path.parse(path.normalize(filePathArg)); var basename = path.basename(parsed.base, '.elm'); @@ -198,6 +157,5 @@ function verifyModules(filePaths) { module.exports = { findTests: findTests, - getIndirectDeps: getIndirectDeps, getFirstLine: getFirstLine, }; diff --git a/lib/elm-test.js b/lib/elm-test.js index 8ea9291a..a2b4f7a6 100644 --- a/lib/elm-test.js +++ b/lib/elm-test.js @@ -40,7 +40,6 @@ var fs = require('fs-extra'), path = require('path'), minimist = require('minimist'), chokidar = require('chokidar'), - Runner = require('./Runner.js'), Supervisor = require('./Supervisor.js'); // Check Node version @@ -338,17 +337,14 @@ if (args._[0] === 'make') { pathToElmBinary, args.report ) - .then(() => { - Runner.getIndirectDeps(projectRootDir).then((packageIndirectDeps) => { - return elmTestMake( - projectRootDir, - pathToElmBinary, - testFilePaths, - packageIndirectDeps, - hasBeenGivenCustomGlobs - ); - }); - }) + .then(() => + elmTestMake( + projectRootDir, + pathToElmBinary, + testFilePaths, + hasBeenGivenCustomGlobs + ) + ) .catch((err) => { console.error(err.message); process.exit(1); @@ -358,7 +354,6 @@ if (args._[0] === 'make') { projectRootDir, pathToElmBinary, testFilePaths, - {}, hasBeenGivenCustomGlobs ); } @@ -406,40 +401,27 @@ if (args._[0] === 'make') { pathToElmBinary, args.report ) - .then(() => { - Runner.getIndirectDeps(projectRootDir).then((packageIndirectDeps) => { - return generateAndRun( - projectRootDir, - testFileGlobs, - testFilePaths, - packageIndirectDeps - ); - }); - }) + .then(() => generateAndRun(projectRootDir, testFileGlobs, testFilePaths)) .catch((err) => { console.error(err.message); process.exit(1); }); } else { - generateAndRun(projectRootDir, testFileGlobs, testFilePaths, {}); + generateAndRun(projectRootDir, testFileGlobs, testFilePaths); } } function generateAndRun( projectRootDir /*: string */, testFileGlobs /* Array */, - testFilePaths /*: Array */, - packageIndirectDeps /*: Object */ + testFilePaths /*: Array */ ) { const generatedCodeDir = Compile.getGeneratedCodeDir(projectRootDir); const hasBeenGivenCustomGlobs = testFileGlobs.length > 0; const returnValues = Generate.generateElmJson( projectRootDir, - pathToElmBinary, generatedCodeDir, - testFilePaths, - packageIndirectDeps, hasBeenGivenCustomGlobs ); const generatedSrc = returnValues[1]; @@ -528,17 +510,13 @@ function elmTestMake( projectRootDir /*: string */, pathToElmBinary /*: string */, testFilePaths /*: Array */, - packageIndirectDeps /*: Object */, hasBeenGivenCustomGlobs /*: boolean */ ) { const generatedCodeDir = Compile.getGeneratedCodeDir(projectRootDir); Generate.generateElmJson( projectRootDir, - pathToElmBinary, generatedCodeDir, - testFilePaths, - packageIndirectDeps, hasBeenGivenCustomGlobs ); diff --git a/lib/solve.js b/lib/solve.js new file mode 100644 index 00000000..6fa6ba8b --- /dev/null +++ b/lib/solve.js @@ -0,0 +1,31 @@ +const spawn = require('cross-spawn'); + +function get_dependencies(pathToElmJson) { + var result = spawn.sync( + 'elm-json', + [ + 'solve', + '--test', + '--extra', + 'elm/core', + 'elm/json', + 'elm/time', + 'elm/random', + '--', + pathToElmJson, + ], + { + silent: true, + env: process.env, + } + ); + + if (result.status != 0) { + console.error(result.stderr.toString()); + process.exit(1); + } + + return JSON.parse(result.stdout.toString()); +} + +module.exports = { get_dependencies }; diff --git a/lib/version.js b/lib/version.js deleted file mode 100644 index b9367611..00000000 --- a/lib/version.js +++ /dev/null @@ -1,33 +0,0 @@ -function getHigherVersion(v1, v2) { - var parsedV1 = v1.split('.').map(function (str) { - return parseInt(str); - }); - var parsedV2 = v2.split('.').map(function (str) { - return parseInt(str); - }); - - if (parsedV1[0] > parsedV2[0]) { - return v1; - } else if (parsedV2[0] > parsedV1[0]) { - return v2; - } else { - if (parsedV1[1] > parsedV2[1]) { - return v1; - } else if (parsedV2[1] > parsedV1[1]) { - return v2; - } else { - if (parsedV1[2] > parsedV2[2]) { - return v1; - } else if (parsedV2[2] > parsedV1[2]) { - return v2; - } else { - // They were completely identical. Return v1! - return v1; - } - } - } -} - -module.exports = { - getHigherVersion: getHigherVersion, -}; diff --git a/package-lock.json b/package-lock.json index 452d932d..ee9d275c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -533,7 +533,6 @@ "version": "0.2.8", "resolved": "https://registry.npmjs.org/elm-json/-/elm-json-0.2.8.tgz", "integrity": "sha512-YfK39CNrHjB4LMnas6aAb2LP37YgqAnh69bWD7ojAs7lBNNkWIeBifeszAfmapylQt1MVuwj6zPPYwrqRQXEBA==", - "dev": true, "requires": { "binwrap": "^0.2.2" } diff --git a/package.json b/package.json index 8529c181..1c484787 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "chalk": "^3.0.0", "chokidar": "^3.4.2", "cross-spawn": "^7.0.3", + "elm-json": "^0.2.8", "elmi-to-json": "^1.3.0", "fs-extra": "^8.1.0", "glob": "^7.1.6", @@ -56,7 +57,6 @@ "devDependencies": { "elm": "0.19.1-3", "elm-format": "0.8.3", - "elm-json": "0.2.8", "eslint": "7.10.0", "eslint-plugin-mocha": "8.0.0", "flow-bin": "0.135.0", diff --git a/tests/fixtures/elm-home/0.19.1/packages/registry.dat b/tests/fixtures/elm-home/0.19.1/packages/registry.dat index eed9e89d24385fd6da0d187b03a981b631ff558a..8f8e193a9f6a0bfce209cd6950253c534b13bf32 100644 GIT binary patch delta 84 zcmcaMgYCx*HUS1O&^iI3IkGnjJQbUs9L^}ZnO%IF3oj!?oPmLrnSr7Cc=Yz;(TrB? df@~#;#iiMqoT)jvx=A_t`MKM_B{3#w0su&r77_pe delta 57 zcmew{gYDW3HUS1O&^ijCIkGkiJQbTP(j>H*OMIIPBg5qRKSi5wMsL3v&8Ww|T{)RC GR1*Nno)H!R diff --git a/tests/fixtures/elm-home/elm-json/versions.dat b/tests/fixtures/elm-home/elm-json/versions.dat new file mode 100644 index 0000000000000000000000000000000000000000..35c039da328598af1b1658c97533d5b9661e32a3 GIT binary patch literal 226654 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 eTWg$<5fU;