From 9bbc87ae8942e347f01ed7f59e74b96e9156f9c0 Mon Sep 17 00:00:00 2001 From: Rodrigo Fernandes Date: Tue, 12 Jul 2016 16:17:20 +0100 Subject: [PATCH] Fix parsing of binary files --- package.json | 2 +- src/diff-parser.js | 9 ++++++--- test/diff-parser-tests.js | 20 ++++++++++++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 397e482..dcadd41 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "release": "./scripts/release.sh", "release-bower": "./scripts/update-bower-version.sh", "templates": "./scripts/hulk.js --wrapper node --variable 'browserTemplates' ./src/templates/*.mustache > ./src/templates/diff2html-templates.js", - "style": "jscs src/*.js src/ui/js/*.js", + "style": "eslint src/*.js src/ui/js/*.js", "coverage": "istanbul cover _mocha -- -u exports -R spec ./test/**/*", "check-coverage": "istanbul check-coverage --statements 90 --functions 90 --branches 85 --lines 90 ./coverage/coverage.json", "test": "npm run style && npm run coverage && npm run check-coverage", diff --git a/src/diff-parser.js b/src/diff-parser.js index 2dc0e92..3f0fc03 100644 --- a/src/diff-parser.js +++ b/src/diff-parser.js @@ -211,10 +211,10 @@ */ if ( (utils.startsWith(line, oldFileNameHeader) && - utils.startsWith(nxtLine, newFileNameHeader) && utils.startsWith(afterNxtLine, hunkHeaderPrefix)) || + utils.startsWith(nxtLine, newFileNameHeader)) || (utils.startsWith(line, newFileNameHeader) && - utils.startsWith(prevLine, oldFileNameHeader) && utils.startsWith(nxtLine, hunkHeaderPrefix)) + utils.startsWith(prevLine, oldFileNameHeader)) ) { /* * --- Date Timestamp[FractionalSeconds] TimeZone @@ -239,7 +239,10 @@ } } - if (currentFile && utils.startsWith(line, hunkHeaderPrefix)) { + if ( + (currentFile && utils.startsWith(line, hunkHeaderPrefix)) || + (currentFile.isGitDiff && currentFile && currentFile.oldName && currentFile.newName && !currentBlock) + ) { startBlock(line); return; } diff --git a/test/diff-parser-tests.js b/test/diff-parser-tests.js index 0ce1496..682abce 100644 --- a/test/diff-parser-tests.js +++ b/test/diff-parser-tests.js @@ -523,5 +523,25 @@ describe('DiffParser', function() { assert.deepEqual(linesContent, [' test']); }); + it('should parse binary file diff', function() { + var diff = + 'diff --git a/last-changes-config.png b/last-changes-config.png\n' + + 'index 322248b..56fc1f2 100644\n' + + '--- a/last-changes-config.png\n' + + '+++ b/last-changes-config.png\n' + + 'Binary files differ'; + + var result = DiffParser.generateDiffJson(diff); + var file1 = result[0]; + assert.equal(1, result.length); + assert.equal(0, file1.addedLines); + assert.equal(0, file1.deletedLines); + assert.equal('last-changes-config.png', file1.oldName); + assert.equal('last-changes-config.png', file1.newName); + assert.equal(1, file1.blocks.length); + assert.equal(0, file1.blocks[0].lines.length); + assert.equal('Binary files differ', file1.blocks[0].header); + }); + }); });