[cli][node] Re-apply @TooTallNate's vc dev updates (#4254)

This reverts commit 099bc6dbf6 (#4231).
This commit is contained in:
Nathan Rajlich
2020-05-12 13:58:05 -07:00
committed by GitHub
parent 69b62b8101
commit 97eeddb6ac
31 changed files with 828 additions and 825 deletions

View File

@@ -1,17 +1,23 @@
import test from 'ava';
import { filterPackage } from '../src/util/dev/builder-cache';
import npa from 'npm-package-arg';
import { filterPackage, isBundledBuilder } from '../src/util/dev/builder-cache';
test('[dev-builder] filter install "latest", cached canary', async t => {
test('[dev-builder] filter install "latest", cached canary', t => {
const buildersPkg = {
dependencies: {
'@vercel/build-utils': '0.0.1-canary.0',
},
};
const result = filterPackage('@vercel/build-utils', 'canary', buildersPkg);
const result = filterPackage(
'@vercel/build-utils',
'canary',
buildersPkg,
{}
);
t.is(result, true);
});
test('[dev-builder] filter install "canary", cached stable', async t => {
test('[dev-builder] filter install "canary", cached stable', t => {
const buildersPkg = {
dependencies: {
'@vercel/build-utils': '0.0.1',
@@ -20,22 +26,28 @@ test('[dev-builder] filter install "canary", cached stable', async t => {
const result = filterPackage(
'@vercel/build-utils@canary',
'latest',
buildersPkg
buildersPkg,
{}
);
t.is(result, true);
});
test('[dev-builder] filter install "latest", cached stable', async t => {
test('[dev-builder] filter install "latest", cached stable', t => {
const buildersPkg = {
dependencies: {
'@vercel/build-utils': '0.0.1',
},
};
const result = filterPackage('@vercel/build-utils', 'latest', buildersPkg);
const result = filterPackage(
'@vercel/build-utils',
'latest',
buildersPkg,
{}
);
t.is(result, false);
});
test('[dev-builder] filter install "canary", cached canary', async t => {
test('[dev-builder] filter install "canary", cached canary', t => {
const buildersPkg = {
dependencies: {
'@vercel/build-utils': '0.0.1-canary.0',
@@ -44,87 +56,209 @@ test('[dev-builder] filter install "canary", cached canary', async t => {
const result = filterPackage(
'@vercel/build-utils@canary',
'canary',
buildersPkg
buildersPkg,
{}
);
t.is(result, false);
});
test('[dev-builder] filter install URL, cached stable', async t => {
test('[dev-builder] filter install URL, cached stable', t => {
const buildersPkg = {
dependencies: {
'@vercel/build-utils': '0.0.1',
},
};
const result = filterPackage('https://tarball.now.sh', 'latest', buildersPkg);
const result = filterPackage(
'https://tarball.now.sh',
'latest',
buildersPkg,
{}
);
t.is(result, true);
});
test('[dev-builder] filter install URL, cached canary', async t => {
test('[dev-builder] filter install URL, cached canary', t => {
const buildersPkg = {
dependencies: {
'@vercel/build-utils': '0.0.1-canary.0',
},
};
const result = filterPackage('https://tarball.now.sh', 'canary', buildersPkg);
const result = filterPackage(
'https://tarball.now.sh',
'canary',
buildersPkg,
{}
);
t.is(result, true);
});
test('[dev-builder] filter install "latest", cached URL - stable', async t => {
test('[dev-builder] filter install "latest", cached URL - stable', t => {
const buildersPkg = {
dependencies: {
'@vercel/build-utils': 'https://tarball.now.sh',
},
};
const result = filterPackage('@vercel/build-utils', 'latest', buildersPkg);
const result = filterPackage(
'@vercel/build-utils',
'latest',
buildersPkg,
{}
);
t.is(result, true);
});
test('[dev-builder] filter install "latest", cached URL - canary', async t => {
test('[dev-builder] filter install "latest", cached URL - canary', t => {
const buildersPkg = {
dependencies: {
'@vercel/build-utils': 'https://tarball.now.sh',
},
};
const result = filterPackage('@vercel/build-utils', 'canary', buildersPkg);
const result = filterPackage(
'@vercel/build-utils',
'canary',
buildersPkg,
{}
);
t.is(result, true);
});
test('[dev-builder] filter install not bundled version, cached same version', async t => {
test('[dev-builder] filter install not bundled version, cached same version', t => {
const buildersPkg = {
dependencies: {
'not-bundled-package': '0.0.1',
},
};
const result = filterPackage('not-bundled-package@0.0.1', '_', buildersPkg);
const result = filterPackage(
'not-bundled-package@0.0.1',
'_',
buildersPkg,
{}
);
t.is(result, false);
});
test('[dev-builder] filter install not bundled version, cached different version', async t => {
test('[dev-builder] filter install not bundled version, cached different version', t => {
const buildersPkg = {
dependencies: {
'not-bundled-package': '0.0.9',
},
};
const result = filterPackage('not-bundled-package@0.0.1', '_', buildersPkg);
const result = filterPackage(
'not-bundled-package@0.0.1',
'_',
buildersPkg,
{}
);
t.is(result, true);
});
test('[dev-builder] filter install not bundled stable, cached version', async t => {
test('[dev-builder] filter install not bundled stable, cached version', t => {
const buildersPkg = {
dependencies: {
'not-bundled-package': '0.0.1',
},
};
const result = filterPackage('not-bundled-package', '_', buildersPkg);
const result = filterPackage('not-bundled-package', '_', buildersPkg, {});
t.is(result, true);
});
test('[dev-builder] filter install not bundled tagged, cached tagged', async t => {
test('[dev-builder] filter install not bundled tagged, cached tagged', t => {
const buildersPkg = {
dependencies: {
'not-bundled-package': '16.9.0-alpha.0',
},
};
const result = filterPackage('not-bundled-package@alpha', '_', buildersPkg);
const result = filterPackage(
'not-bundled-package@alpha',
'_',
buildersPkg,
{}
);
t.is(result, true);
});
test('[dev-builder] isBundledBuilder() - stable', t => {
const nowCliPkg = {
dependencies: {
'@now/node': '1.5.2',
},
};
// "canary" tag
{
const parsed = npa('@now/node@canary');
const result = isBundledBuilder(parsed, nowCliPkg);
t.is(result, false);
}
// "latest" tag
{
const parsed = npa('@now/node');
const result = isBundledBuilder(parsed, nowCliPkg);
t.is(result, true);
}
// specific matching version
{
const parsed = npa('@now/node@1.5.2');
const result = isBundledBuilder(parsed, nowCliPkg);
t.is(result, true);
}
// specific non-matching version
{
const parsed = npa('@now/node@1.5.1');
const result = isBundledBuilder(parsed, nowCliPkg);
t.is(result, false);
}
// URL
{
const parsed = npa('https://example.com');
const result = isBundledBuilder(parsed, nowCliPkg);
t.is(result, false);
}
});
test('[dev-builder] isBundledBuilder() - canary', t => {
const nowCliPkg = {
dependencies: {
'@now/node': '1.5.2-canary.3',
},
};
// "canary" tag
{
const parsed = npa('@now/node@canary');
const result = isBundledBuilder(parsed, nowCliPkg);
t.is(result, true);
}
// "latest" tag
{
const parsed = npa('@now/node');
const result = isBundledBuilder(parsed, nowCliPkg);
t.is(result, false);
}
// specific matching version
{
const parsed = npa('@now/node@1.5.2-canary.3');
const result = isBundledBuilder(parsed, nowCliPkg);
t.is(result, true);
}
// specific non-matching version
{
const parsed = npa('@now/node@1.5.2-canary.2');
const result = isBundledBuilder(parsed, nowCliPkg);
t.is(result, false);
}
// URL
{
const parsed = npa('https://example.com');
const result = isBundledBuilder(parsed, nowCliPkg);
t.is(result, false);
}
});