25 lines
1.1 KiB
Nix
25 lines
1.1 KiB
Nix
{ pkgs }:
|
|
let
|
|
dependencies = import ./yarn-dependencies.nix {
|
|
inherit pkgs;
|
|
src = ./test/yarn-dependencies;
|
|
};
|
|
in
|
|
pkgs.runCommand "quixos-yarn-dependencies-check" { nativeBuildInputs = [ pkgs.nodejs_24 ]; } ''
|
|
node - ${dependencies} <<'JS'
|
|
const assert = require('node:assert/strict');
|
|
const fs = require('node:fs');
|
|
const path = require('node:path');
|
|
const {execFileSync} = require('node:child_process');
|
|
const root = process.argv[2];
|
|
assert.deepEqual(require(path.join(root, 'fixture')), {value: 'retained dependency'});
|
|
assert.deepEqual(require(path.join(root, 'alias')), {value: 'retained dependency'});
|
|
assert.equal(fs.readlinkSync(path.join(root, 'alias')), 'fixture');
|
|
assert.equal(fs.readlinkSync(path.join(root, '.bin/fixture')), '../fixture/cli.cjs');
|
|
assert.equal(execFileSync(path.join(root, '.bin/fixture'), {encoding: 'utf8'}), 'linked executable\n');
|
|
assert.equal(fs.readFileSync(path.join(root, '.fixture-data'), 'utf8'), 'hidden dependency data\n');
|
|
assert.equal(fs.existsSync(path.join(root, '.yarn-state.yml')), false);
|
|
JS
|
|
touch "$out"
|
|
''
|