diff --git a/index.js b/index.js index f4a9238..7ec7060 100644 --- a/index.js +++ b/index.js @@ -68,6 +68,11 @@ if (leftStr.indexOf('file mode') === 0) { currentInfo[infoType === 'new' ? 'newMode' : 'oldMode'] = leftStr.slice(10); } + currentInfoType = infoType === 'new' ? 'add' : 'delete'; + var prevLine = lines[i - 1]; + var fileName = prevLine.substring(prevLine.indexOf(' b/') + 3); + currentInfo.newPath = infoType === 'new' ? fileName : '/dev/null'; + currentInfo.oldPath = infoType === 'new' ? '/dev/null' : fileName; break; case 'similarity': diff --git a/test/git.test.js b/test/git.test.js index 8d283f9..5f549f1 100644 --- a/test/git.test.js +++ b/test/git.test.js @@ -17,6 +17,15 @@ describe("git specific tests", () => { expect(file.newMode).toBe('100644'); }); + it("should have type add for empty files", () => { + const diff = parse("add-empty.diff"); + const file = diff[0]; + expect(file.type).toBe("add"); + expect(file.oldPath).toBe("/dev/null"); + expect(file.newPath).toBe("a.txt"); + expect(file.newMode).toBe('100644'); + }); + it("should have type delete", () => { const diff = parse("rm.diff"); const file = diff[0]; @@ -26,6 +35,15 @@ describe("git specific tests", () => { expect(file.newPath).toBe("/dev/null"); }); + it("should have type delete for empty files", () => { + const diff = parse("rm-empty.diff"); + const file = diff[0]; + expect(file.type).toBe("delete"); + expect(file.oldPath).toBe("a.txt"); + expect(file.oldMode).toBe('100644'); + expect(file.newPath).toBe("/dev/null"); + }); + it("should have type rename", () => { const diff = parse("mv.diff"); const file = diff[0]; diff --git a/test/git/add-empty.diff b/test/git/add-empty.diff new file mode 100644 index 0000000..2b6f977 --- /dev/null +++ b/test/git/add-empty.diff @@ -0,0 +1,3 @@ +diff --git a/a.txt b/a.txt +new file mode 100644 +index 0000000..7898192 \ No newline at end of file diff --git a/test/git/rm-empty.diff b/test/git/rm-empty.diff new file mode 100644 index 0000000..f9bc599 --- /dev/null +++ b/test/git/rm-empty.diff @@ -0,0 +1,3 @@ +diff --git a/a.txt b/a.txt +deleted file mode 100644 +index 7898192..0000000 \ No newline at end of file