Skip to content

Commit

Permalink
refactor(protect): move stdout logs to top level
Browse files Browse the repository at this point in the history
  • Loading branch information
Jahed Ahmed committed Aug 19, 2021
1 parent 20feb67 commit e8fed38
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 23 deletions.
9 changes: 5 additions & 4 deletions packages/snyk-protect/src/lib/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ async function protect(projectFolderPath: string) {
const snykFilePath = path.resolve(projectFolderPath, '.snyk');

if (!fs.existsSync(snykFilePath)) {
console.log('No .snyk file found');
console.log('No .snyk file found.');
sendAnalytics({
type: ProtectResultType.NO_SNYK_FILE,
});
Expand Down Expand Up @@ -67,7 +67,7 @@ async function protect(projectFolderPath: string) {
> = await getAllPatches(vulnIdAndPackageNames, packageNameToVersionsMap);

if (packageAtVersionsToPatches.size === 0) {
console.log('Nothing to patch');
console.log('Nothing to patch.');
sendAnalytics({
type: ProtectResultType.NOTHING_TO_PATCH,
});
Expand All @@ -83,7 +83,8 @@ async function protect(projectFolderPath: string) {
vuldIdAndPatches?.forEach((vp) => {
vp.patches.forEach((patchDiffs) => {
patchDiffs.patchDiffs.forEach((diff) => {
applyPatchToFile(diff, fpp.path);
const patchedPath = applyPatchToFile(diff, fpp.path);
console.log(`Patched: ${patchedPath}`);
});
});
patchedModules.push({
Expand All @@ -94,7 +95,7 @@ async function protect(projectFolderPath: string) {
});
});

console.log('Successfully applied Snyk patches');
console.log('Applied Snyk patches.');

sendAnalytics({
type: ProtectResultType.APPLIED_PATCHES,
Expand Down
23 changes: 9 additions & 14 deletions packages/snyk-protect/src/lib/patch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export function applyPatchToFile(patchContents: string, baseFolder: string) {
const contentsToPatch = fs.readFileSync(targetFilePath, 'utf-8');
const patchedContents = patchString(patchContents, contentsToPatch);
fs.writeFileSync(targetFilePath, patchedContents);
console.log(`patched ${targetFilePath}`);
return targetFilePath;
}

export function extractTargetFilePathFromPatch(patchContents: string): string {
Expand Down Expand Up @@ -39,13 +39,11 @@ export function patchString(
const contentsToPatchLines = contentsToPatch.split('\n');

if (!patchContentLines[2]) {
// return;
throw new Error('Invalid patch');
throw new Error('Invalid patch.');
}
const unparsedLineToPatch = /^@@ -(\d*),.*@@/.exec(patchContentLines[2]);
if (!unparsedLineToPatch || !unparsedLineToPatch[1]) {
// return;
throw new Error('Invalid patch');
throw new Error('Invalid patch.');
}
let lineToPatch = parseInt(unparsedLineToPatch[1], 10) - 2;

Expand All @@ -66,16 +64,13 @@ export function patchString(
}
case ' ': {
if (currentLine !== nextLine) {
console.log(
'Expected\n line from local file\n',
JSON.stringify(currentLine),
'\n to match patch line\n',
JSON.stringify(nextLine),
'\n',
);
throw new Error(
// `File ${filename} to be patched does not match, not patching`,
`File to be patched does not match, not patching`,
'File does not match patch contents.' +
' Expected\n' +
' line from local file\n' +
` ${JSON.stringify(currentLine)}\n` +
' to match patch line\n' +
` ${JSON.stringify(nextLine)}\n`,
);
}
break;
Expand Down
2 changes: 1 addition & 1 deletion packages/snyk-protect/test/acceptance/fix-pr.smoke.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ describe('Fix PR', () => {
).toEqual(
expect.objectContaining<RunCLIResult>({
code: 0,
stdout: expect.stringContaining('Successfully applied Snyk patches'),
stdout: expect.stringContaining('Applied Snyk patches.'),
stderr: expect.any(String),
}),
);
Expand Down
8 changes: 4 additions & 4 deletions packages/snyk-protect/test/acceptance/protect.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ describe('@snyk/protect', () => {
project.read('node_modules/nyc/node_modules/lodash/lodash.js'),
).resolves.toEqual(patchedLodash);

expect(log).toHaveBeenCalledWith('Successfully applied Snyk patches');
expect(log).toHaveBeenCalledWith('Applied Snyk patches.');
expect(postJsonSpy).toHaveBeenCalledTimes(1);
expect(postJsonSpy.mock.calls[0][1]).toEqual({
data: {
Expand Down Expand Up @@ -68,7 +68,7 @@ describe('@snyk/protect', () => {
project.read('node_modules/lodash/lodash.js'),
).resolves.toEqual(patchedLodash);

expect(log).toHaveBeenCalledWith('Successfully applied Snyk patches');
expect(log).toHaveBeenCalledWith('Applied Snyk patches.');
expect(postJsonSpy).toHaveBeenCalledTimes(1);
expect(postJsonSpy.mock.calls[0][1]).toEqual({
data: {
Expand Down Expand Up @@ -107,7 +107,7 @@ describe('@snyk/protect', () => {

await protect(project.path());

expect(log).toHaveBeenCalledWith('Nothing to patch');
expect(log).toHaveBeenCalledWith('Nothing to patch.');

expect(postJsonSpy).toHaveBeenCalledTimes(1);
expect(postJsonSpy.mock.calls[0][1]).toEqual({
Expand Down Expand Up @@ -142,7 +142,7 @@ describe('@snyk/protect', () => {

await protect(project.path());

expect(log).toHaveBeenCalledWith('No .snyk file found');
expect(log).toHaveBeenCalledWith('No .snyk file found.');

expect(postJsonSpy).toHaveBeenCalledTimes(1);
expect(postJsonSpy.mock.calls[0][1]).toEqual({
Expand Down

0 comments on commit e8fed38

Please sign in to comment.