Skip to content

Commit d3931d6

Browse files
committed
Replaced shell script testing of package.json with a jasmine test
1 parent 12a2991 commit d3931d6

File tree

2 files changed

+137
-20
lines changed

2 files changed

+137
-20
lines changed

package.spec.ts

+135
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
// Test if all package.json files are in sync
2+
// ----------------------------------------------------------------------------
3+
4+
// Import dependencies
5+
const path = require('path'),
6+
fs = require('fs');
7+
8+
// Run tests async
9+
(async () => {
10+
11+
// Read main package.json
12+
const packageJsonMain = JSON.parse(fs.readFileSync(path.join(__dirname, './package.json')));
13+
14+
// Find all other instances of package.json
15+
const packageJsonPaths = (function findFiles (dir, matcherFn, aggregator = []) {
16+
const paths = fs.readdirSync(dir);
17+
for (const name of paths) {
18+
const fullname = path.join(dir, name),
19+
stat = fs.lstatSync(fullname);
20+
if (stat.isDirectory()) {
21+
findFiles(fullname, matcherFn, aggregator);
22+
} else if (matcherFn(name)) {
23+
aggregator.push(fullname.trim());
24+
}
25+
}
26+
return aggregator;
27+
})(
28+
path.join(__dirname, './projects'),
29+
(filename) => (filename === 'package.json')
30+
);
31+
32+
// Check if package.json is in sync across the project
33+
describe('package.json synced', () => {
34+
35+
for (const packageJsonNestedPath of packageJsonPaths) {
36+
37+
// Read nested package.json
38+
const packageJsonNested = JSON.parse(fs.readFileSync(packageJsonNestedPath));
39+
40+
// Test nested package.json
41+
describe(`... with "${packageJsonNestedPath}"`, () => {
42+
43+
// Check package version
44+
it('Matches version', () => {
45+
expect(packageJsonMain.version === packageJsonNested.version).toBeTruthy();
46+
});
47+
48+
// Check package name
49+
it('Matches name', () => {
50+
expect(packageJsonMain.name === packageJsonNested.name).toBeTruthy();
51+
});
52+
53+
// Check package description
54+
it('Matches description', () => {
55+
expect(packageJsonMain.description === packageJsonNested.description).toBeTruthy();
56+
});
57+
58+
// Check package author
59+
it('Matches author', () => {
60+
expect(packageJsonMain.author === packageJsonNested.author).toBeTruthy();
61+
});
62+
63+
// Check package license
64+
it('Matches license', () => {
65+
expect(packageJsonMain.license === packageJsonNested.license).toBeTruthy();
66+
});
67+
68+
// Check package repository
69+
it('Matches repository', () => {
70+
expect(JSON.stringify(packageJsonMain.repository) === JSON.stringify(packageJsonNested.repository)).toBeTruthy();
71+
});
72+
73+
// Check package keywords
74+
it('Matches keywords', () => {
75+
expect(JSON.stringify(packageJsonMain.keywords) === JSON.stringify(packageJsonNested.keywords)).toBeTruthy();
76+
});
77+
78+
// Check package dependency versions
79+
describe('Matches dependency versions', () => {
80+
// Check primary dependencies
81+
if (packageJsonNested.dependencies) {
82+
for (const key of Object.keys(packageJsonNested.dependencies)) {
83+
it(`Matches ${key} version ${packageJsonNested.dependencies[key]}`, () => {
84+
if (packageJsonMain.dependencies && packageJsonMain.dependencies[key]) {
85+
expect(packageJsonNested.dependencies[key] === packageJsonMain.dependencies[key]).toBeTruthy();
86+
}
87+
if (packageJsonMain.devDependencies && packageJsonMain.devDependencies[key]) {
88+
expect(packageJsonNested.dependencies[key] === packageJsonMain.devDependencies[key]).toBeTruthy();
89+
}
90+
if (packageJsonMain.peerDependencies && packageJsonMain.peerDependencies[key]) {
91+
expect(packageJsonNested.dependencies[key] === packageJsonMain.peerDependencies[key]).toBeTruthy();
92+
}
93+
});
94+
}
95+
}
96+
// Check dev dependencies
97+
if (packageJsonNested.devDependencies) {
98+
for (const key of Object.keys(packageJsonNested.devDependencies)) {
99+
it(`Matches ${key} version ${packageJsonNested.devDependencies[key]}`, () => {
100+
if (packageJsonMain.dependencies && packageJsonMain.dependencies[key]) {
101+
expect(packageJsonNested.devDependencies[key] === packageJsonMain.dependencies[key]).toBeTruthy();
102+
}
103+
if (packageJsonMain.devDependencies && packageJsonMain.devDependencies[key]) {
104+
expect(packageJsonNested.devDependencies[key] === packageJsonMain.devDependencies[key]).toBeTruthy();
105+
}
106+
if (packageJsonMain.peerDependencies && packageJsonMain.peerDependencies[key]) {
107+
expect(packageJsonNested.devDependencies[key] === packageJsonMain.peerDependencies[key]).toBeTruthy();
108+
}
109+
});
110+
}
111+
}
112+
// Check peer dependencies
113+
if (packageJsonNested.peerDependencies) {
114+
for (const key of Object.keys(packageJsonNested.peerDependencies)) {
115+
it(`Matches ${key} version ${packageJsonNested.peerDependencies[key]}`, () => {
116+
if (packageJsonMain.dependencies && packageJsonMain.dependencies[key]) {
117+
expect(packageJsonNested.peerDependencies[key] === packageJsonMain.dependencies[key]).toBeTruthy();
118+
}
119+
if (packageJsonMain.devDependencies && packageJsonMain.devDependencies[key]) {
120+
expect(packageJsonNested.peerDependencies[key] === packageJsonMain.devDependencies[key]).toBeTruthy();
121+
}
122+
if (packageJsonMain.peerDependencies && packageJsonMain.peerDependencies[key]) {
123+
expect(packageJsonNested.peerDependencies[key] === packageJsonMain.peerDependencies[key]).toBeTruthy();
124+
}
125+
});
126+
}
127+
}
128+
});
129+
130+
});
131+
}
132+
133+
});
134+
135+
})();

scripts/publish-to-npm.sh

+2-20
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,9 @@ echo '> Building latest library version ...';
66
ng build --prod
77

88
# Check if main project package.json and library package.json are have same proeprty values
9+
echo '';
910
echo '> Comparing package.json files between repo and library...';
10-
11-
repVersion=$( cat ../package.json | jq -r ".version" );
12-
libVersion=$( cat ../dist/iqui-ngx/package.json | jq -r ".version");
13-
echo "- version: '${repVersion}' ?= '${libVersion}'";
14-
if [ "${repVersion}" != "${libVersion}" ]; then
15-
echo "ERROR: versions in package.json are different between the showcase repo and the library!"
16-
exit 1;
17-
fi
18-
19-
repName=$( cat ../package.json | jq -r ".name" );
20-
libName=$( cat ../dist/iqui-ngx/package.json | jq -r ".name");
21-
echo "- name: '${repName}' ?= '${libName}'";
22-
if [ "${repName}" != "${libName}" ]; then
23-
echo "ERROR: names in package.json are different between the showcase repo and the library!"
24-
exit 1;
25-
fi
26-
27-
# TODO: Compare peer dependencies in package.json files
28-
29-
# TODO: Compare dependencies in package.json files
11+
npx jasmine ../package.spec.ts
3012

3113
repDescription=$( cat ../package.json | jq -r ".description" );
3214
libDescription=$( cat ../dist/iqui-ngx/package.json | jq -r ".description");

0 commit comments

Comments
 (0)