mirror of
https://github.com/LukeHagar/vercel.git
synced 2025-12-10 04:22:12 +00:00
The `@vercel/build-utils` package was meant be shared functions necessary for writing a Vercel Builder (aka Runtime). This package has since bloated into the catch-all package for anything that wasn't a Builder. This PR removes the bloat in favor of a new package, `@vercel/fs-detectors`. It also removes the need for `@vercel/build-utils` to have a dependency on `@vercel/frameworks`. - Related to #7951
80 lines
2.1 KiB
TypeScript
Vendored
80 lines
2.1 KiB
TypeScript
Vendored
import path from 'path';
|
|
import fs from 'fs-extra';
|
|
import {
|
|
packAndDeploy,
|
|
testDeployment,
|
|
// @ts-ignore
|
|
} from '../../../test/lib/deployment/test-deployment';
|
|
|
|
jest.setTimeout(4 * 60 * 1000);
|
|
|
|
const builderUrl = '@canary';
|
|
let buildUtilsUrl: string;
|
|
|
|
beforeAll(async () => {
|
|
const buildUtilsPath = path.resolve(__dirname, '..');
|
|
buildUtilsUrl = await packAndDeploy(buildUtilsPath);
|
|
console.log('buildUtilsUrl', buildUtilsUrl);
|
|
});
|
|
|
|
const fixturesPath = path.resolve(__dirname, 'fixtures');
|
|
|
|
// Fixtures that have separate tests and should be skipped in the loop
|
|
const skipFixtures: string[] = [
|
|
'01-zero-config-api',
|
|
'02-zero-config-api',
|
|
'03-zero-config-angular',
|
|
'04-zero-config-brunch',
|
|
'05-zero-config-gatsby',
|
|
'06-zero-config-hugo',
|
|
'07-zero-config-jekyll',
|
|
'08-zero-config-middleman',
|
|
'21-npm-workspaces',
|
|
'23-pnpm-workspaces',
|
|
];
|
|
|
|
// eslint-disable-next-line no-restricted-syntax
|
|
for (const fixture of fs.readdirSync(fixturesPath)) {
|
|
if (skipFixtures.includes(fixture)) {
|
|
continue; // eslint-disable-line no-continue
|
|
}
|
|
|
|
// eslint-disable-next-line no-loop-func
|
|
it(`Should build "${fixture}"`, async () => {
|
|
await expect(
|
|
testDeployment(
|
|
{ builderUrl, buildUtilsUrl },
|
|
path.join(fixturesPath, fixture)
|
|
)
|
|
).resolves.toBeDefined();
|
|
});
|
|
}
|
|
|
|
// few foreign tests
|
|
|
|
const buildersToTestWith = ['node'];
|
|
|
|
// eslint-disable-next-line no-restricted-syntax
|
|
for (const builder of buildersToTestWith) {
|
|
const fixturesPath2 = path.resolve(
|
|
__dirname,
|
|
`../../${builder}/test/fixtures`
|
|
);
|
|
|
|
// eslint-disable-next-line no-restricted-syntax
|
|
for (const fixture of fs.readdirSync(fixturesPath2)) {
|
|
// don't run all foreign fixtures, just some
|
|
if (['01-cowsay', '01-cache-headers', '03-env-vars'].includes(fixture)) {
|
|
// eslint-disable-next-line no-loop-func
|
|
it(`Should build "${builder}/${fixture}"`, async () => {
|
|
await expect(
|
|
testDeployment(
|
|
{ builderUrl, buildUtilsUrl },
|
|
path.join(fixturesPath2, fixture)
|
|
)
|
|
).resolves.toBeDefined();
|
|
});
|
|
}
|
|
}
|
|
}
|