Skip to content

Commit 97446bd

Browse files
committed
🎨 added spec for folder dir
1 parent aa2e1cd commit 97446bd

File tree

2 files changed

+90
-61
lines changed

2 files changed

+90
-61
lines changed

bin/helpers/package-diff.js

Lines changed: 80 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,93 @@
1-
'use strict'
2-
const fs = require('fs')
3-
const path = require('path')
1+
"use strict";
2+
const fs = require("fs");
3+
const path = require("path");
44
const logger = require("./logger").winstonLogger;
55

6-
exports.run = (basePath, comparePath) => {
7-
if (!basePath || !comparePath) {
8-
logger.debug('Skipping package difference check.')
9-
}
10-
11-
const base = readModules(basePath)
12-
const compare = readModules(comparePath)
6+
exports.run = (basePath, comparePath) => {
7+
if (!basePath || !comparePath) {
8+
logger.debug("Skipping package difference check.");
9+
}
1310

14-
let isDiff = false;
15-
Object.keys(base.deps).forEach(baseKey => {
16-
if (baseKey in compare.deps) {
17-
if (base.deps[baseKey] === compare.deps[baseKey]) {
18-
//ignore this check
19-
} else {
20-
isDiff = true;
21-
return;
22-
}
23-
} else {
24-
isDiff = true;
25-
return;
26-
}
27-
})
11+
let base;
12+
let compare;
13+
let isDiff = false;
14+
try {
15+
base = readModules(basePath);
16+
compare = readModules(comparePath);
17+
} catch (error) {
18+
logger.debug('Unable to process package difference');
2819
return isDiff;
29-
}
30-
const readModules = (location) => {
31-
const table = {}
32-
33-
// Resolve package dependencies
34-
if (location.indexOf('package.json') !== -1) {
35-
const data = fs.readFileSync(location.replace(':dev', ''), 'utf-8')
36-
let parsed
37-
try { parsed = JSON.parse(data) } catch (e) { parsed = false }
38-
if (!parsed) { return }
39-
40-
const depsKey = location.indexOf(':dev') !== -1 ? 'devDependencies' : 'dependencies'
41-
const deps = parsed[depsKey] ? parsed[depsKey] : (parsed.dependencies || parsed.devDependencies)
20+
}
4221

43-
Object.keys(deps).forEach(key => {
44-
deps[key] = deps[key].replace(/\^|~/g, '')
45-
})
46-
return {
47-
name: `${location} {${depsKey}}`,
48-
deps,
22+
Object.keys(base.deps).forEach((baseKey) => {
23+
if (baseKey in compare.deps) {
24+
if (base.deps[baseKey] !== compare.deps[baseKey]) {
25+
isDiff = true;
26+
return;
4927
}
28+
} else {
29+
isDiff = true;
30+
return;
5031
}
51-
52-
fs.readdirSync(location)
53-
.filter(name => name !== '.bin')
54-
.map(name => {
55-
const pkg = path.join(location, name, 'package.json')
56-
const exists = fs.existsSync(pkg)
57-
if (!exists) { return }
32+
});
33+
return isDiff;
34+
};
35+
const readModules = (location) => {
36+
const table = {};
5837

59-
const data = fs.readFileSync(pkg, 'utf-8')
60-
let parsed
38+
// Resolve package dependencies
39+
if (location.indexOf("package.json") !== -1) {
40+
const data = fs.readFileSync(location.replace(":dev", ""), "utf-8");
41+
let parsed;
42+
try {
43+
parsed = JSON.parse(data);
44+
} catch (e) {
45+
parsed = false;
46+
}
47+
if (!parsed) {
48+
return;
49+
}
6150

62-
try { parsed = JSON.parse(data) } catch (e) { parsed = false }
63-
if (!parsed) { return }
51+
const depsKey =
52+
location.indexOf(":dev") !== -1 ? "devDependencies" : "dependencies";
53+
const deps = parsed[depsKey]
54+
? parsed[depsKey]
55+
: parsed.dependencies || parsed.devDependencies;
6456

65-
table[name] = parsed.version
66-
})
57+
Object.keys(deps).forEach((key) => {
58+
deps[key] = deps[key].replace(/\^|~/g, "");
59+
});
6760
return {
61+
name: `${location} {${depsKey}}`,
62+
deps,
63+
};
64+
}
65+
66+
fs.readdirSync(location)
67+
.filter((name) => name !== ".bin")
68+
.map((name) => {
69+
const pkg = path.join(location, name, "package.json");
70+
const exists = fs.existsSync(pkg);
71+
if (!exists) {
72+
return;
73+
}
74+
75+
const data = fs.readFileSync(pkg, "utf-8");
76+
let parsed;
77+
78+
try {
79+
parsed = JSON.parse(data);
80+
} catch (e) {
81+
parsed = false;
82+
}
83+
if (!parsed) {
84+
return;
85+
}
86+
87+
table[name] = parsed.version;
88+
});
89+
return {
6890
name: location,
6991
deps: table,
70-
}
71-
}
92+
};
93+
};

test/unit/bin/helpers/utils.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1042,6 +1042,13 @@ describe('utils', () => {
10421042
});
10431043
});
10441044

1045+
describe('getDirectorySize', () => {
1046+
it('should return size of directory', async() => {
1047+
expect(await utils.fetchFolderSize('/absolute/path')).to
1048+
.be.equal(0);
1049+
});
1050+
});
1051+
10451052
describe('getLocalFlag', () => {
10461053
it('should return false if connectionSettings is undefined', () => {
10471054
expect(utils.getLocalFlag(undefined)).to.be.false;
@@ -1834,7 +1841,7 @@ describe('utils', () => {
18341841
describe('setCypressTestSuiteType', () => {
18351842

18361843
it('sets correct cypressTestSuiteType when cypress.json is the cypress config file ', () => {
1837-
bsConfig = {
1844+
let bsConfig = {
18381845
run_settings: {
18391846
cypressConfigFilePath: 'cypress.json',
18401847
},
@@ -1846,7 +1853,7 @@ describe('utils', () => {
18461853
});
18471854

18481855
it('sets correct cypressTestSuiteType when cypress.config.js|.ts|.cjs|.mjs is the cypress config file ', () => {
1849-
bsConfig = {
1856+
let bsConfig = {
18501857
run_settings: {
18511858
cypressConfigFilePath: 'cypress.config.js',
18521859
},
@@ -1880,7 +1887,7 @@ describe('utils', () => {
18801887
});
18811888

18821889
it('by default assumes that CYPRESS_V9_AND_OLDER_TYPE is the test suite type', () => {
1883-
bsConfig = {
1890+
let bsConfig = {
18841891
run_settings: {},
18851892
};
18861893
utils.setCypressTestSuiteType(bsConfig);

0 commit comments

Comments
 (0)