Skip to content

Commit e6911ea

Browse files
committed
CI | Add Validate package-lock.json Tests
- Adding Validate package-lock.json Tests to ensure that npm install ran before committing the changes. Signed-off-by: liranmauda <liran.mauda@gmail.com>
1 parent 22f5e1a commit e6911ea

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
name: Validate package-lock.json Tests
2+
on: [push, pull_request]
3+
4+
jobs:
5+
run-package-lock-validation:
6+
runs-on: ubuntu-latest
7+
timeout-minutes: 90
8+
concurrency:
9+
group: ${{ github.workflow }}-${{ github.ref }}
10+
cancel-in-progress: true
11+
steps:
12+
- name: Checkout code
13+
uses: actions/checkout@v4
14+
15+
- name: Set up Node.js
16+
uses: actions/setup-node@v3
17+
with:
18+
node-version: 22
19+
20+
- name: Backup the current package-lock.json
21+
run: |
22+
# Backup the current package-lock.json
23+
mv package-lock.json package-lock-backup.json
24+
25+
# Generate a new package-lock.json
26+
npm install
27+
28+
- name: Validate top-level versions in package-lock.json
29+
run: |
30+
# Validate the main version field
31+
top_version_backup=$(jq -r '.version' package-lock-backup.json)
32+
top_version_new=$(jq -r '.version' package-lock.json)
33+
34+
# Define the ANSI escape code for red
35+
RED='\033[0;31m'
36+
NC='\033[0m' # No Color (resets the color)
37+
38+
if [ "$top_version_backup" != "$top_version_new" ]; then
39+
echo "The top-level version in package-lock.json is inconsistent."
40+
echo -e "${RED}Original version: $top_version_backup${NC}"
41+
echo -e "${RED}Generated version: $top_version_new${NC}"
42+
exit 1
43+
fi
44+
45+
- name: Validate dependencies top-level versions in package-lock.json
46+
run: |
47+
# Extract and validate top-level module versions
48+
jq '.packages[""].dependencies' package-lock-backup.json > top-level-versions-backup.json
49+
jq '.packages[""].dependencies' package-lock.json > top-level-versions-new.json
50+
51+
if ! diff -q top-level-versions-backup.json top-level-versions-new.json > /dev/null; then
52+
echo -e "${RED}Top-level module versions in package-lock.json are inconsistent.${NC}"
53+
echo -e "${RED}Differences:${NC}"
54+
diff top-level-versions-backup.json top-level-versions-new.json || true
55+
exit 1
56+
else
57+
echo "Top-level module versions are consistent. Validation passed."
58+
fi
59+
60+
- name: Validate devDependencies top-level versions in package-lock.json
61+
run: |
62+
# Extract and validate top-level module versions
63+
jq '.packages[""].devDependencies' package-lock-backup.json > top-level-versions-backup.json
64+
jq '.packages[""].devDependencies' package-lock.json > top-level-versions-new.json
65+
66+
67+
# Define the ANSI escape code for red
68+
RED='\033[0;31m'
69+
NC='\033[0m' # No Color (resets the color)
70+
71+
if ! diff -q top-level-versions-backup.json top-level-versions-new.json > /dev/null; then
72+
echo -e "${RED}Top-level module versions in package-lock.json are inconsistent.${NC}"
73+
echo -e "${RED}Differences:${NC}"
74+
diff top-level-versions-backup.json top-level-versions-new.json || true
75+
exit 1
76+
else
77+
echo "Top-level module versions are consistent. Validation passed."
78+
fi
79+

0 commit comments

Comments
 (0)