Skip to content

Commit d98075e

Browse files
authored
fix: Handle package.json when only devDependencies present (#298)
1 parent 6575029 commit d98075e

4 files changed

Lines changed: 25 additions & 0 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"devDependencies": {
3+
"a": "^1.0.0"
4+
}
5+
}

pkg/parser/npm_graph.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ func parseNpmPackageJsonAsGraph(packageJsonPath string, config *ParserConfig) (*
7676
manifest := models.NewPackageManifestFromLocal(packageJsonPath, models.EcosystemNpm)
7777

7878
dependencies := packageJson.Dependencies
79+
if dependencies == nil {
80+
dependencies = make(map[string]string)
81+
}
82+
7983
if config.IncludeDevDependencies {
8084
for k, v := range packageJson.DevDependencies {
8185
if _, ok := dependencies[k]; !ok {

pkg/parser/npm_graph_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,17 @@ func TestNpmGraphParserBasic(t *testing.T) {
2828
assert.NotEmpty(t, pm.DependencyGraph.GetNodes())
2929
}
3030

31+
func TestPackageJsonOnlyDevDependencies(t *testing.T) {
32+
pm, err := parseNpmPackageJsonAsGraph("./fixtures/package-json-with-only-dev-dependencies.json",
33+
&ParserConfig{IncludeDevDependencies: true})
34+
assert.Nil(t, err)
35+
36+
assert.NotNil(t, pm)
37+
assert.NotNil(t, pm.DependencyGraph)
38+
assert.NotEmpty(t, pm.DependencyGraph.GetNodes())
39+
assert.Equal(t, 1, len(pm.GetPackages()))
40+
}
41+
3142
func TestNpmGraphParserDependencies(t *testing.T) {
3243
pm, err := parseNpmPackageLockAsGraph("./fixtures/package-lock-graph.json", defaultParserConfigForTest)
3344
assert.Nil(t, err)

pkg/reporter/summary.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,11 @@ func (r *summaryReporter) sortedRemediationsGroupByDirectDependency() []*summary
416416
}
417417

418418
func (r *summaryReporter) renderRemediationAdvice() {
419+
if len(r.remediationScores) == 0 {
420+
fmt.Println(text.BgGreen.Sprint(" No risky libraries identified "))
421+
return
422+
}
423+
419424
fmt.Println(text.Bold.Sprint("Consider upgrading the following libraries for maximum impact:"))
420425
fmt.Println()
421426

0 commit comments

Comments
 (0)