approvals
Version:
Approval Tests Library - Capturing Human Intelligence
51 lines (50 loc) • 1.96 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = __importDefault(require("fs"));
const diff_1 = __importDefault(require("diff"));
const AUtils_1 = require("../../AUtils");
const ConsoleUtils_1 = require("../../Utilities/ConsoleUtils");
class NodeDiffReporter {
constructor() {
this.name = "nodediff";
}
canReportOn(fileName) {
(0, AUtils_1.assertFileExists)(fileName);
var isBinary = (0, AUtils_1.isBinaryFile)(fileName);
if (isBinary) {
return false;
}
return true;
}
report(approved, received, _options) {
(0, AUtils_1.createEmptyFileIfNotExists)(approved);
var approvedText = fs_1.default.readFileSync(approved).toString();
var receivedText = fs_1.default.readFileSync(received).toString();
console.log(`*******************************************`);
console.log(`* Showing diff for ${approved} vs ${received}\n`);
var diff = diff_1.default.diffChars(approvedText, receivedText);
diff.forEach(function (part) {
// green for additions, red for deletions
// grey for common parts
let text = "";
if (part.added) {
text = (0, ConsoleUtils_1.greenText)(part.value);
}
else {
if (part.removed) {
text = (0, ConsoleUtils_1.redText)(part.value);
}
else {
text = (0, ConsoleUtils_1.grayText)(part.value);
}
}
process.stdout.write(text);
});
console.log(`\n* End of diff for ${approved} vs ${received}`);
console.log(`*******************************************\n\n`);
}
}
exports.default = NodeDiffReporter;