Skip to content

Commit 93f213b

Browse files
Merge pull request #2 from LambdaTest/add-engine-info
add engine info
2 parents 67fe0fa + a1c4eb5 commit 93f213b

File tree

3 files changed

+50
-7
lines changed

3 files changed

+50
-7
lines changed

pkg/nodejs/packagejson/parse.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ type packageJSON struct {
1414
Name string `json:"name"`
1515
Version string `json:"version"`
1616
License interface{} `json:"license"`
17+
Engines map[string]string `json:"engines"`
1718
Dependencies map[string]string `json:"dependencies"`
1819
DevDependencies map[string]string `json:"devDependencies"`
1920
OptionalDependencies map[string]string `json:"optionalDependencies"`
@@ -24,6 +25,7 @@ type Package struct {
2425
Dependencies map[string]string
2526
OptionalDependencies map[string]string
2627
DevDependencies map[string]string
28+
Engines map[string]string
2729
}
2830

2931
type Parser struct{}
@@ -38,12 +40,6 @@ func (p *Parser) Parse(r io.Reader) (Package, error) {
3840
return Package{}, xerrors.Errorf("JSON decode error: %w", err)
3941
}
4042

41-
// Name and version fields are optional
42-
// https://docs.npmjs.com/cli/v9/configuring-npm/package-json#name
43-
if pkgJSON.Name == "" || pkgJSON.Version == "" {
44-
return Package{}, nil
45-
}
46-
4743
return Package{
4844
Library: types.Library{
4945
ID: utils.PackageID(pkgJSON.Name, pkgJSON.Version),
@@ -54,6 +50,7 @@ func (p *Parser) Parse(r io.Reader) (Package, error) {
5450
Dependencies: pkgJSON.Dependencies,
5551
OptionalDependencies: pkgJSON.OptionalDependencies,
5652
DevDependencies: pkgJSON.DevDependencies,
53+
Engines: pkgJSON.Engines,
5754
}, nil
5855
}
5956

pkg/nodejs/packagejson/parse_test.go

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,12 @@ func TestParse(t *testing.T) {
100100
{
101101
name: "happy path - version doesn't exist",
102102
inputFile: "testdata/without_version_package.json",
103-
want: packagejson.Package{},
103+
want: packagejson.Package{
104+
Library: types.Library{
105+
ID: "angular@",
106+
Name: "angular",
107+
},
108+
},
104109
},
105110
{
106111
name: "sad path",
@@ -112,6 +117,24 @@ func TestParse(t *testing.T) {
112117
// npm ls | grep -E -o "\S+@\S+" | awk -F@ 'NR>0 {printf("{\""$1"\", \""$2"\"},\n")}'
113118
wantErr: "JSON decode error",
114119
},
120+
{
121+
name: "engines",
122+
inputFile: "testdata/engines_package.json",
123+
want: packagejson.Package{
124+
Library: types.Library{
125+
ID: "lodash@5.0.0",
126+
Name: "lodash",
127+
Version: "5.0.0",
128+
License: "MIT",
129+
},
130+
DevDependencies: map[string]string{
131+
"mocha": "^5.2.0", "eslint": "^7.16.0",
132+
"eslint-plugin-import": "^2.22.1",
133+
"lodash": "4.17.20", "esm": "^3.2.25",
134+
},
135+
Engines: map[string]string{"node": ">=4.0.0"},
136+
},
137+
},
115138
}
116139

117140
for _, v := range vectors {
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"name": "lodash",
3+
"version": "5.0.0",
4+
"license": "MIT",
5+
"private": true,
6+
"main": "lodash.js",
7+
"engines": {
8+
"node": ">=4.0.0"
9+
},
10+
"sideEffects": false,
11+
"scripts": {
12+
"style": "eslint *.js .internal/**/*.js",
13+
"test": "mocha -r esm test/*.test.js",
14+
"validate": "npm run style && npm run test"
15+
},
16+
"devDependencies": {
17+
"mocha": "^5.2.0",
18+
"eslint": "^7.16.0",
19+
"eslint-plugin-import": "^2.22.1",
20+
"lodash": "4.17.20",
21+
"esm": "^3.2.25"
22+
}
23+
}

0 commit comments

Comments
 (0)