Skip to content

Commit

Permalink
Merge pull request #1282 from github/aeisenberg/user-error-source-root
Browse files Browse the repository at this point in the history
Convert "Invalid source root" errors to UserErrors
  • Loading branch information
aeisenberg authored Oct 6, 2022
2 parents 24c8de1 + 9e044c5 commit 84dffe7
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 34 deletions.
46 changes: 31 additions & 15 deletions lib/init.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion lib/init.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

55 changes: 37 additions & 18 deletions src/init.ts
Original file line number Diff line number Diff line change
Expand Up @@ -117,24 +117,7 @@ export async function runInit(
}
}
} catch (e) {
// Handle the situation where init is called twice
// for the same database in the same job.
if (
e instanceof Error &&
e.message?.includes("Refusing to create databases") &&
e.message.includes("exists and is not an empty directory.")
) {
throw new util.UserError(
`Is the "init" action called twice in the same job? ${e.message}`
);
} else if (
e instanceof Error &&
e.message?.includes("is not compatible with this CodeQL CLI")
) {
throw new util.UserError(e.message);
} else {
throw e;
}
throw processError(e);
}
return await getCombinedTracerConfig(
config,
Expand All @@ -144,6 +127,42 @@ export async function runInit(
);
}

/**
* Possibly convert this error into a UserError in order to avoid
* counting this error towards our internal error budget.
*
* @param e The error to possibly convert to a UserError.
*
* @returns A UserError if the error is a known error that can be
* attributed to the user, otherwise the original error.
*/
function processError(e: any): Error {
if (!(e instanceof Error)) {
return e;
}

if (
// Init action called twice
e.message?.includes("Refusing to create databases") &&
e.message?.includes("exists and is not an empty directory.")
) {
return new util.UserError(
`Is the "init" action called twice in the same job? ${e.message}`
);
}

if (
// Version of CodeQL CLI is incompatible with this version of the CodeQL Action
e.message?.includes("is not compatible with this CodeQL CLI") ||
// Expected source location for database creation does not exist
e.message?.includes("Invalid source root")
) {
return new util.UserError(e.message);
}

return e;
}

// Runs a powershell script to inject the tracer into a parent process
// so it can tracer future processes, hopefully including the build process.
// If processName is given then injects into the nearest parent process with
Expand Down

0 comments on commit 84dffe7

Please sign in to comment.