Skip to content

Commit

Permalink
Tests: simplify npm
Browse files Browse the repository at this point in the history
  • Loading branch information
Cykelero committed Jun 22, 2022
1 parent af2860e commit 9ae158e
Showing 1 changed file with 31 additions and 41 deletions.
72 changes: 31 additions & 41 deletions spec/npm/npmSpec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
const fs = require('fs');

describe('npm', function() {
let testEnv;

Expand All @@ -10,59 +8,52 @@ describe('npm', function() {
it('should install and run simply named packages', async function() {
const scriptSource = `
const uniqueCount = npm.dedupe([1, 2, 2, 3]).length;
here.file('output').make(true).content = uniqueCount;
process.stdout.write(String(uniqueCount));
`;

await testEnv.runLemonScript(scriptSource);

const outputPath = testEnv.nativePathFor('output');
let value = parseInt(fs.readFileSync(outputPath));
expect(value).toBe(3);

let scriptOutput = await testEnv.runLemonScript(scriptSource);

expect(scriptOutput).toBe('3');
});

it('should install and run scoped packages', async function() {
const scriptSource = `
const stryker = new npm['@stryker-mutator/core'].Stryker({ concurrency: 4 });
here.file('output').make(true).content = stryker.cliOptions.concurrency;
process.stdout.write(String(stryker.cliOptions.concurrency));
`;

await testEnv.runLemonScript(scriptSource);

const outputPath = testEnv.nativePathFor('output');
let value = parseInt(fs.readFileSync(outputPath));
expect(value).toBe(4);

let scriptOutput = await testEnv.runLemonScript(scriptSource);

expect(scriptOutput).toBe('4');
});

it('should recognize pinned versions for scoped packages', async function() {
// The require header must be in column 0 of the script, thus the unusual formatting
const scriptSource = `// tl:require: @octokit/[email protected]
here.file('output').make(true).content = npm['@octokit/core'].Octokit.VERSION;
process.stdout.write(String(npm['@octokit/core'].Octokit.VERSION));
`;

await testEnv.runLemonScript(scriptSource);

const outputPath = testEnv.nativePathFor('output');
let value = fs.readFileSync(outputPath).toString();
expect(value).toBe('3.2.4');

let scriptOutput = await testEnv.runLemonScript(scriptSource);

expect(scriptOutput).toBe('3.2.4');
});

it('should allow require-access to sub files', async function() {
const scriptSource = `// tl:require: [email protected]
const uuid_v1 = npm['uuid:v1'];
const uuid_v4 = npm['uuid:v4'];
here.file('output.json').make(true).content = {
process.stdout.write(JSON.stringify({
v1: uuid_v1.toString(),
v4: uuid_v4.toString()
};
}));
`;

await testEnv.runLemonScript(scriptSource);

const outputPath = testEnv.nativePathFor('output.json');
let value = JSON.parse(fs.readFileSync(outputPath));
expect(value.v1).toContain('function v1');
expect(value.v4).toContain('function v4');

let scriptOutput = await testEnv.runLemonScript(scriptSource);

let parsedScriptOutput = JSON.parse(scriptOutput);
expect(parsedScriptOutput.v1).toContain('function v1');
expect(parsedScriptOutput.v4).toContain('function v4');
});

describe('(pre-0.3)', function() {
Expand All @@ -72,18 +63,17 @@ describe('npm', function() {
const uuid_v1 = npm['uuid/v1'];
const uuid_v4 = npm['uuid/v4'];
here.file('output.json').make(true).content = {
process.stdout.write(JSON.stringify({
v1: uuid_v1.toString(),
v4: uuid_v4.toString()
};
}));
`;

await testEnv.runLemonScript(scriptSource, [], ['--no-pin']);

const outputPath = testEnv.nativePathFor('output.json');
let value = JSON.parse(fs.readFileSync(outputPath));
expect(value.v1).toContain('function v1');
expect(value.v4).toContain('function v4');

let scriptOutput = await testEnv.runLemonScript(scriptSource, [], ['--no-pin']);

let parsedScriptOutput = JSON.parse(scriptOutput);
expect(parsedScriptOutput.v1).toContain('function v1');
expect(parsedScriptOutput.v4).toContain('function v4');
});
});
});

0 comments on commit 9ae158e

Please sign in to comment.