mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
bun install Security Scanner API (#21183)
### What does this PR do? Fixes #22014 todo: - [x] not spawn sync - [x] better comm to subprocess (not stderr) - [x] tty - [x] more tests (also include some tests for the actual implementation of a provider) - [x] disable autoinstall? Scanner template: https://github.com/oven-sh/security-scanner-template <!-- **Please explain what your changes do**, example: --> <!-- This adds a new flag --bail to bun test. When set, it will stop running tests after the first failure. This is useful for CI environments where you want to fail fast. --> --- - [x] Documentation or TypeScript types (it's okay to leave the rest blank in this case) - [x] Code changes ### How did you verify your code works? <!-- **For code changes, please include automated tests**. Feel free to uncomment the line below --> <!-- I wrote automated tests --> <!-- If JavaScript/TypeScript modules or builtins changed: - [ ] I included a test for the new code, or existing tests cover it - [ ] I ran my tests locally and they pass (`bun-debug test test-file-name.test`) --> <!-- If Zig files changed: - [ ] I checked the lifetime of memory allocated to verify it's (1) freed and (2) only freed when it should be - [ ] I included a test for the new code, or an existing test covers it - [ ] JSValue used outside of the stack is either wrapped in a JSC.Strong or is JSValueProtect'ed - [ ] I wrote TypeScript/JavaScript tests and they pass locally (`bun-debug test test-file-name.test`) --> <!-- If new methods, getters, or setters were added to a publicly exposed class: - [ ] I added TypeScript types for the new methods, getters, or setters --> <!-- If dependencies in tests changed: - [ ] I made sure that specific versions of dependencies are used instead of ranged or tagged versions --> <!-- If a new builtin ESM/CJS module was added: - [ ] I updated Aliases in `module_loader.zig` to include the new module - [ ] I added a test that imports the module - [ ] I added a test that require() the module --> tests (bad currently) --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Dylan Conway <dylan-conway@users.noreply.github.com> Co-authored-by: Dylan Conway <dylan.conway567@gmail.com> Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
This commit is contained in:
@@ -1165,20 +1165,20 @@ export function tmpdirSync(pattern: string = "bun.test."): string {
|
||||
export async function runBunInstall(
|
||||
env: NodeJS.Dict<string>,
|
||||
cwd: string,
|
||||
options?: {
|
||||
options: {
|
||||
allowWarnings?: boolean;
|
||||
allowErrors?: boolean;
|
||||
expectedExitCode?: number;
|
||||
expectedExitCode?: number | null;
|
||||
savesLockfile?: boolean;
|
||||
production?: boolean;
|
||||
frozenLockfile?: boolean;
|
||||
saveTextLockfile?: boolean;
|
||||
packages?: string[];
|
||||
verbose?: boolean;
|
||||
},
|
||||
} = {},
|
||||
) {
|
||||
const production = options?.production ?? false;
|
||||
const args = production ? [bunExe(), "install", "--production"] : [bunExe(), "install"];
|
||||
const args = [bunExe(), "install"];
|
||||
if (options?.packages) {
|
||||
args.push(...options.packages);
|
||||
}
|
||||
@@ -1204,7 +1204,7 @@ export async function runBunInstall(
|
||||
});
|
||||
expect(stdout).toBeDefined();
|
||||
expect(stderr).toBeDefined();
|
||||
let err = stderrForInstall(await stderr.text());
|
||||
let err: string = stderrForInstall(await stderr.text());
|
||||
expect(err).not.toContain("panic:");
|
||||
if (!options?.allowErrors) {
|
||||
expect(err).not.toContain("error:");
|
||||
@@ -1215,7 +1215,7 @@ export async function runBunInstall(
|
||||
if ((options?.savesLockfile ?? true) && !production && !options?.frozenLockfile) {
|
||||
expect(err).toContain("Saved lockfile");
|
||||
}
|
||||
let out = await stdout.text();
|
||||
let out: string = await stdout.text();
|
||||
expect(await exited).toBe(options?.expectedExitCode ?? 0);
|
||||
return { out, err, exited };
|
||||
}
|
||||
@@ -1781,6 +1781,9 @@ export function normalizeBunSnapshot(snapshot: string, optionalDir?: string) {
|
||||
// line numbers in stack traces like at FunctionName (NN:NN)
|
||||
// it must specifically look at the stacktrace format
|
||||
.replace(/^\s+at (.*?)\(.*?:\d+(?::\d+)?\)/gm, " at $1(file:NN:NN)")
|
||||
// Handle version strings in error messages like "Bun v1.2.21+revision (platform arch)"
|
||||
// This needs to come before the other version replacements
|
||||
.replace(/Bun v[\d.]+(?:-[\w.]+)?(?:\+[\w]+)?(?:\s+\([^)]+\))?/g, "Bun v<bun-version>")
|
||||
.replaceAll(Bun.version_with_sha, "<version> (<revision>)")
|
||||
.replaceAll(Bun.version, "<bun-version>")
|
||||
.replaceAll(Bun.revision, "<revision>")
|
||||
|
||||
Reference in New Issue
Block a user