diff --git a/source/platforms/git/diffToGitJSONDSL.ts b/source/platforms/git/diffToGitJSONDSL.ts index 1d67adb47..f767402ff 100644 --- a/source/platforms/git/diffToGitJSONDSL.ts +++ b/source/platforms/git/diffToGitJSONDSL.ts @@ -9,11 +9,13 @@ import { GitJSONDSL } from "../../dsl/GitDSL" */ export const diffToGitJSONDSL = (diff: string, commits: GitCommit[]): GitJSONDSL => { - const fileDiffs: any[] = parseDiff(diff) + const fileDiffs: parseDiff.File[] = parseDiff(diff) - const addedDiffs = fileDiffs.filter((diff: any) => diff["new"]) - const removedDiffs = fileDiffs.filter((diff: any) => diff["deleted"]) - const modifiedDiffs = fileDiffs.filter((diff: any) => !includes(addedDiffs, diff) && !includes(removedDiffs, diff)) + const addedDiffs = fileDiffs.filter((diff: parseDiff.File) => diff.new == true) as any[] + const removedDiffs = fileDiffs.filter((diff: parseDiff.File) => diff.deleted == true) as any[] + const modifiedDiffs = fileDiffs.filter( + (diff: any) => !includes(addedDiffs, diff) && !includes(removedDiffs, diff) + ) as any[] return { // Work around for danger/danger-js#807 diff --git a/source/platforms/github/GitHubAPI.ts b/source/platforms/github/GitHubAPI.ts index c02ff29f6..65a9eee6e 100644 --- a/source/platforms/github/GitHubAPI.ts +++ b/source/platforms/github/GitHubAPI.ts @@ -21,6 +21,7 @@ const limit = pLimit(25) export interface GitHubFile { filename: string patch: string + status: string } // Note that there are parts of this class which don't seem to be @@ -373,8 +374,17 @@ export class GitHubAPI { // This is a hack to get the file patch into a format that parse-diff accepts // as the GitHub API for listing pull request files is missing file names in the patch. function prefixedPatch(file: GitHubFile): string { + let fileMode = "" + if (file.status == "added") { + fileMode = "new file mode" + } else if (file.status == "removed") { + fileMode = "deleted file mode" + } else if (file.status == "modified") { + fileMode = "modified file mode" + } return ` diff --git a/${file.filename} b/${file.filename} +${fileMode} 0 --- a/${file.filename} +++ b/${file.filename} ${file.patch} diff --git a/source/platforms/github/_tests/_github_api.test.ts b/source/platforms/github/_tests/_github_api.test.ts index f9eb74a4a..0b4bf3bba 100644 --- a/source/platforms/github/_tests/_github_api.test.ts +++ b/source/platforms/github/_tests/_github_api.test.ts @@ -80,7 +80,7 @@ describe("API testing", () => { json: jest .fn() .mockImplementation(() => - Promise.resolve(JSON.parse('[{"filename": "file.txt", "patch": "+ hello"}]')) + Promise.resolve(JSON.parse('[{"filename": "file.txt", "status": "added", "patch": "+ hello"}]')) ), }) @@ -88,6 +88,7 @@ describe("API testing", () => { let expected = ` diff --git a/file.txt b/file.txt +new file mode 0 --- a/file.txt +++ b/file.txt + hello