mirror of
https://github.com/github/codeql-action.git
synced 2026-04-02 09:42:16 +00:00
Merge pull request #3570 from github/mbg/repo-props/warn-on-unexpected-props
Emit warning for unrecognised repo properties with our common prefix
This commit is contained in:
10
lib/init-action.js
generated
10
lib/init-action.js
generated
@@ -104293,6 +104293,7 @@ function getUnknownLanguagesError(languages) {
|
||||
}
|
||||
|
||||
// src/feature-flags/properties.ts
|
||||
var GITHUB_CODEQL_PROPERTY_PREFIX = "github-codeql-";
|
||||
var RepositoryPropertyName = /* @__PURE__ */ ((RepositoryPropertyName2) => {
|
||||
RepositoryPropertyName2["DISABLE_OVERLAY"] = "github-codeql-disable-overlay";
|
||||
RepositoryPropertyName2["EXTRA_QUERIES"] = "github-codeql-extra-queries";
|
||||
@@ -104329,6 +104330,7 @@ async function loadPropertiesFromApi(logger, repositoryNwo) {
|
||||
`Retrieved ${remoteProperties.length} repository properties: ${remoteProperties.map((p) => p.property_name).join(", ")}`
|
||||
);
|
||||
const properties = {};
|
||||
const unrecognisedProperties = [];
|
||||
for (const property of remoteProperties) {
|
||||
if (property.property_name === void 0) {
|
||||
throw new Error(
|
||||
@@ -104337,6 +104339,8 @@ async function loadPropertiesFromApi(logger, repositoryNwo) {
|
||||
}
|
||||
if (isKnownPropertyName(property.property_name)) {
|
||||
setProperty2(properties, property.property_name, property.value, logger);
|
||||
} else if (property.property_name.startsWith(GITHUB_CODEQL_PROPERTY_PREFIX) && !isDynamicWorkflow()) {
|
||||
unrecognisedProperties.push(property.property_name);
|
||||
}
|
||||
}
|
||||
if (Object.keys(properties).length === 0) {
|
||||
@@ -104351,6 +104355,12 @@ async function loadPropertiesFromApi(logger, repositoryNwo) {
|
||||
logger.debug(` ${property}: ${value}`);
|
||||
}
|
||||
}
|
||||
if (unrecognisedProperties.length > 0) {
|
||||
const unrecognisedPropertyList = unrecognisedProperties.map((name) => `'${name}'`).join(", ");
|
||||
logger.warning(
|
||||
`Found repository properties (${unrecognisedPropertyList}), which look like CodeQL Action repository properties, but which are not understood by this version of the CodeQL Action. Do you need to update to a newer version?`
|
||||
);
|
||||
}
|
||||
return properties;
|
||||
} catch (e) {
|
||||
throw new Error(
|
||||
|
||||
@@ -4,7 +4,7 @@ import * as sinon from "sinon";
|
||||
import * as api from "../api-client";
|
||||
import { getRunnerLogger } from "../logging";
|
||||
import { parseRepositoryNwo } from "../repository";
|
||||
import { setupTests } from "../testing-utils";
|
||||
import { RecordingLogger, setupTests } from "../testing-utils";
|
||||
|
||||
import * as properties from "./properties";
|
||||
|
||||
@@ -197,3 +197,38 @@ test.serial(
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
test.serial(
|
||||
"loadPropertiesFromApi warns if a repository property name starts with the common prefix, but is not recognised by us",
|
||||
async (t) => {
|
||||
process.env["GITHUB_EVENT_NAME"] = "push";
|
||||
const propertyName: string = `${properties.GITHUB_CODEQL_PROPERTY_PREFIX}unknown`;
|
||||
sinon.stub(api, "getRepositoryProperties").resolves({
|
||||
headers: {},
|
||||
status: 200,
|
||||
url: "",
|
||||
data: [
|
||||
{
|
||||
property_name: propertyName,
|
||||
value: "true",
|
||||
},
|
||||
] satisfies properties.GitHubPropertiesResponse,
|
||||
});
|
||||
const logger = new RecordingLogger();
|
||||
const warningSpy = sinon.spy(logger, "warning");
|
||||
const mockRepositoryNwo = parseRepositoryNwo("owner/repo");
|
||||
const response = await properties.loadPropertiesFromApi(
|
||||
logger,
|
||||
mockRepositoryNwo,
|
||||
);
|
||||
t.deepEqual(response, {});
|
||||
t.true(warningSpy.calledOnce);
|
||||
t.assert(
|
||||
warningSpy.firstCall.args[0]
|
||||
.toString()
|
||||
.startsWith(
|
||||
`Found repository properties ('${propertyName}'), which look like CodeQL Action repository properties`,
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
import { isDynamicWorkflow } from "../actions-util";
|
||||
import { getRepositoryProperties } from "../api-client";
|
||||
import { Logger } from "../logging";
|
||||
import { RepositoryNwo } from "../repository";
|
||||
|
||||
/** The common prefix that we expect all of our repository properties to have. */
|
||||
export const GITHUB_CODEQL_PROPERTY_PREFIX = "github-codeql-";
|
||||
|
||||
/**
|
||||
* Enumerates repository property names that have some meaning to us.
|
||||
*/
|
||||
@@ -114,6 +118,8 @@ export async function loadPropertiesFromApi(
|
||||
);
|
||||
|
||||
const properties: RepositoryProperties = {};
|
||||
const unrecognisedProperties: string[] = [];
|
||||
|
||||
for (const property of remoteProperties) {
|
||||
if (property.property_name === undefined) {
|
||||
throw new Error(
|
||||
@@ -123,6 +129,11 @@ export async function loadPropertiesFromApi(
|
||||
|
||||
if (isKnownPropertyName(property.property_name)) {
|
||||
setProperty(properties, property.property_name, property.value, logger);
|
||||
} else if (
|
||||
property.property_name.startsWith(GITHUB_CODEQL_PROPERTY_PREFIX) &&
|
||||
!isDynamicWorkflow()
|
||||
) {
|
||||
unrecognisedProperties.push(property.property_name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,6 +150,20 @@ export async function loadPropertiesFromApi(
|
||||
}
|
||||
}
|
||||
|
||||
// Emit a warning if we encountered unrecognised properties that have our prefix.
|
||||
if (unrecognisedProperties.length > 0) {
|
||||
const unrecognisedPropertyList = unrecognisedProperties
|
||||
.map((name) => `'${name}'`)
|
||||
.join(", ");
|
||||
|
||||
logger.warning(
|
||||
`Found repository properties (${unrecognisedPropertyList}), ` +
|
||||
"which look like CodeQL Action repository properties, " +
|
||||
"but which are not understood by this version of the CodeQL Action. " +
|
||||
"Do you need to update to a newer version?",
|
||||
);
|
||||
}
|
||||
|
||||
return properties;
|
||||
} catch (e) {
|
||||
throw new Error(
|
||||
|
||||
Reference in New Issue
Block a user