setup-dotnet/__tests__/msbuild.test.ts
2025-02-26 12:03:04 +01:00

47 lines
2.6 KiB
TypeScript

import msbuildFile from '../.github/msbuild.json';
describe('msbuild tests', () => {
test('regular expression in msbuild.json is valid', async () => {
const regexPattern =
msbuildFile['problemMatcher'][0]['pattern'][0]['regexp'];
const regexResultsMap = msbuildFile['problemMatcher'][0]['pattern'][0];
const regex = new RegExp(regexPattern);
const stringsToMatch = [
"/Users/zacharyeisinger/Documents/repo/setup-dotnet/__tests__/sample-broken-csproj/sample.csproj : warning NU1904: Package 'System.Text.Encodings.Web' 4.7.0 has a known critical severity vulnerability, https://github.com/advisories/GHSA-ghhp-997w-qr28 [/Users/zacharyeisinger/Documents/repo/setup-dotnet/__tests__/sample-broken-csproj/sample.csproj]",
"/Users/zacharyeisinger/Documents/repo/setup-dotnet/__tests__/sample-broken-csproj/sample.csproj : error NU1904: Package 'System.Text.Encodings.Web' 4.7.0 has a known critical severity vulnerability, https://github.com/advisories/GHSA-ghhp-997w-qr28 [/Users/zacharyeisinger/Documents/repo/setup-dotnet/__tests__/sample-broken-csproj/sample.csproj]"
];
// Expected results are calculated according to the msbuild matcher located in msbuild.json file
const expectedResults = [
{
file: '/Users/zacharyeisinger/Documents/repo/setup-dotnet/__tests__/sample-broken-csproj/sample.csproj',
severity: 'warning',
code: 'NU1904',
message:
"Package 'System.Text.Encodings.Web' 4.7.0 has a known critical severity vulnerability, https://github.com/advisories/GHSA-ghhp-997w-qr28",
fromPath:
'/Users/zacharyeisinger/Documents/repo/setup-dotnet/__tests__/sample-broken-csproj/sample.csproj'
},
{
file: '/Users/zacharyeisinger/Documents/repo/setup-dotnet/__tests__/sample-broken-csproj/sample.csproj',
severity: 'error',
code: 'NU1904',
message:
"Package 'System.Text.Encodings.Web' 4.7.0 has a known critical severity vulnerability, https://github.com/advisories/GHSA-ghhp-997w-qr28",
fromPath:
'/Users/zacharyeisinger/Documents/repo/setup-dotnet/__tests__/sample-broken-csproj/sample.csproj'
}
];
stringsToMatch.map((string, index) => {
const matchedResultsArray = string.match(regex);
for (const propName in expectedResults[index]) {
const propertyIndex = regexResultsMap[propName];
const expectedPropValue = expectedResults[index][propName];
const matchedPropValue = matchedResultsArray![propertyIndex];
expect(matchedPropValue).toEqual(expectedPropValue);
}
});
}, 10000);
});