Skip to content

Commit fa24079

Browse files
committed
publish
1 parent cb5e602 commit fa24079

File tree

3 files changed

+73
-38
lines changed

3 files changed

+73
-38
lines changed

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "json-diff-cli",
3-
"version": "0.4.2",
3+
"version": "0.4.12",
44
"description": "json-diff-cli",
55
"main": "index.js",
66
"scripts": {

scripts/csv.js

Lines changed: 71 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -9,43 +9,44 @@ const parseCSV = (csvPath) => {
99
const result = [];
1010
return new Promise((resolve, reject) => {
1111
csv({ noheader: false })
12-
.fromFile(csvPath)
13-
.on('json', (obj) => {
14-
result.push(obj);
15-
})
16-
.on('done', (err) => {
17-
if (err) {
18-
reject(err);
19-
} else {
20-
resolve(result);
21-
}
22-
});
12+
.fromFile(csvPath)
13+
.on('json', (obj) => {
14+
result.push(obj);
15+
})
16+
.on('done', (err) => {
17+
if (err) {
18+
reject(err);
19+
} else {
20+
resolve(result);
21+
}
22+
});
2323
});
2424
};
2525

26-
const readFirstLine = csvPath => new Promise((resolve, reject) => {
27-
const rs = fs.createReadStream(csvPath, { encoding: 'utf8' });
28-
let acc = '';
29-
let pos = 0;
30-
let index;
31-
rs.on('data', (chunk) => {
32-
index = chunk.indexOf('\n');
33-
acc += chunk;
34-
if (index !== -1) {
35-
rs.close();
36-
} else {
37-
pos += chunk.length;
38-
}
39-
})
40-
.on('close', () => {
41-
resolve(acc.slice(0, pos + index));
42-
})
43-
.on('error', (err) => {
44-
reject(err);
26+
const readFirstLine = (csvPath) =>
27+
new Promise((resolve, reject) => {
28+
const rs = fs.createReadStream(csvPath, { encoding: 'utf8' });
29+
let acc = '';
30+
let pos = 0;
31+
let index;
32+
rs.on('data', (chunk) => {
33+
index = chunk.indexOf('\n');
34+
acc += chunk;
35+
if (index !== -1) {
36+
rs.close();
37+
} else {
38+
pos += chunk.length;
39+
}
40+
})
41+
.on('close', () => {
42+
resolve(acc.slice(0, pos + index));
43+
})
44+
.on('error', (err) => {
45+
reject(err);
46+
});
4547
});
46-
});
4748

48-
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
49+
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
4950

5051
const csvScript = async (args) => {
5152
const csvPath = args.path;
@@ -72,6 +73,21 @@ const csvScript = async (args) => {
7273
const body = row.body;
7374
const timeout = args.timeout;
7475
const skipcertificate = row.skipCertificate || false;
76+
const expectedStatusCode = row.expectedStatusCode ? parseInt(row.expectedStatusCode, 10) : null;
77+
let customDiff = row.customDiff || '{}';
78+
let customCompare = row.customCompare || '{}';
79+
80+
try {
81+
customDiff = JSON.parse(customDiff);
82+
} catch (err) {
83+
throw new Error('invalid json provided to customDiff');
84+
}
85+
86+
try {
87+
customCompare = JSON.parse(customCompare);
88+
} catch (err) {
89+
throw new Error('invalid json provided to customCompare');
90+
}
7591

7692
if (url1.charAt(0) === '#') {
7793
continue; // eslint-disable-line
@@ -99,6 +115,15 @@ const csvScript = async (args) => {
99115
}
100116
sortKeys.push('id');
101117

118+
const skipHeadersInputs = row.skipHeaders || '';
119+
const skipHeaders = [];
120+
if (skipHeadersInputs) {
121+
const list = skipHeadersInputs.split('|');
122+
list.forEach((splitHeaders) => {
123+
skipHeaders.push(splitHeaders);
124+
});
125+
}
126+
102127
const ignore = row.ignore;
103128
const ignores = [];
104129
if (ignore) {
@@ -116,7 +141,11 @@ const csvScript = async (args) => {
116141
headers,
117142
timeout,
118143
skipcertificate,
144+
expectedStatusCode,
145+
skipHeaders,
119146
ignore: ignores,
147+
customDiff,
148+
customCompare,
120149
};
121150

122151
try {
@@ -128,8 +157,12 @@ const csvScript = async (args) => {
128157
const diff = await core.diffURLs(url1, url2, options);
129158

130159
if (args.diffheaders) {
160+
options.skipHeaders.forEach((h) => {
161+
delete diff.leftHeaders[h];
162+
delete diff.rightHeaders[h];
163+
});
131164
const headersDiff = await core.diffJSON(diff.leftHeaders, diff.rightHeaders);
132-
if (headersDiff.length !== 0) {
165+
if (headersDiff.length !== 0 && headersDiff[0].diff !== 'none') {
133166
if (diff.differences[0].diff === 'none') {
134167
diff.differences.splice(0, 1);
135168
}
@@ -183,6 +216,7 @@ const csvScript = async (args) => {
183216

184217
console.log(output);
185218
} catch (err) {
219+
console.log(err);
186220
console.log(chalk.red(err.toString()), '\n');
187221
}
188222
}
@@ -192,6 +226,7 @@ const csvScript = async (args) => {
192226
}
193227
};
194228

195-
module.exports = args => csvScript(args).catch((err) => {
196-
console.log(chalk.red(err.toString()));
197-
});
229+
module.exports = (args) =>
230+
csvScript(args).catch((err) => {
231+
console.log(chalk.red(err.toString()));
232+
});

0 commit comments

Comments
 (0)