Skip to content
This repository was archived by the owner on Sep 9, 2020. It is now read-only.

Commit dd15e17

Browse files
committed
Add panic for non-empty ProjectOptions
1 parent 701c109 commit dd15e17

File tree

2 files changed

+29
-9
lines changed

2 files changed

+29
-9
lines changed

manifest.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import (
1515

1616
"github.com/golang/dep/gps"
1717
"github.com/golang/dep/gps/pkgtree"
18-
"github.com/pelletier/go-toml"
18+
toml "github.com/pelletier/go-toml"
1919
"github.com/pkg/errors"
2020
)
2121

@@ -417,18 +417,25 @@ func fromRawPruneOptions(raw rawPruneOptions) gps.RootPruneOptions {
417417
return opts
418418
}
419419

420-
func toRawPruneOptions(options gps.PruneOptions) rawPruneOptions {
420+
// toRawPruneOptions converts a gps.RootPruneOption's PruneOptions to rawPruneOptions
421+
//
422+
// Will panic if gps.RootPruneOption includes ProjectPruneOptions
423+
// See https://github.com/golang/dep/pull/1460#discussion_r158128740 for more information
424+
func toRawPruneOptions(root gps.RootPruneOptions) rawPruneOptions {
425+
if len(root.ProjectOptions) != 0 {
426+
panic("toRawPruneOptions cannot convert ProjectOptions to rawPruneOptions")
427+
}
421428
raw := rawPruneOptions{}
422429

423-
if (options & gps.PruneUnusedPackages) != 0 {
430+
if (root.PruneOptions & gps.PruneUnusedPackages) != 0 {
424431
raw.UnusedPackages = true
425432
}
426433

427-
if (options & gps.PruneNonGoFiles) != 0 {
434+
if (root.PruneOptions & gps.PruneNonGoFiles) != 0 {
428435
raw.NonGoFiles = true
429436
}
430437

431-
if (options & gps.PruneGoTestFiles) != 0 {
438+
if (root.PruneOptions & gps.PruneGoTestFiles) != 0 {
432439
raw.GoTests = true
433440
}
434441
return raw
@@ -495,7 +502,7 @@ func (m *Manifest) toRaw() rawManifest {
495502
}
496503
sort.Sort(sortedRawProjects(raw.Overrides))
497504

498-
raw.PruneOptions = toRawPruneOptions(m.PruneOptions.PruneOptions)
505+
raw.PruneOptions = toRawPruneOptions(m.PruneOptions)
499506

500507
return raw
501508
}

manifest_test.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -611,12 +611,12 @@ func TestValidateProjectRoots(t *testing.T) {
611611
func TestToRawPruneOptions(t *testing.T) {
612612
cases := []struct {
613613
name string
614-
pruneOptions gps.PruneOptions
614+
pruneOptions gps.RootPruneOptions
615615
wantOptions rawPruneOptions
616616
}{
617617
{
618618
name: "all options",
619-
pruneOptions: 15,
619+
pruneOptions: gps.RootPruneOptions{PruneOptions: 15},
620620
wantOptions: rawPruneOptions{
621621
UnusedPackages: true,
622622
NonGoFiles: true,
@@ -625,7 +625,7 @@ func TestToRawPruneOptions(t *testing.T) {
625625
},
626626
{
627627
name: "no options",
628-
pruneOptions: 1,
628+
pruneOptions: gps.RootPruneOptions{PruneOptions: 1},
629629
wantOptions: rawPruneOptions{
630630
UnusedPackages: false,
631631
NonGoFiles: false,
@@ -645,6 +645,19 @@ func TestToRawPruneOptions(t *testing.T) {
645645
}
646646
}
647647

648+
func TestToRawPruneOptions_Panic(t *testing.T) {
649+
pruneOptions := gps.RootPruneOptions{
650+
PruneOptions: 1,
651+
ProjectOptions: gps.PruneProjectOptions{"github.com/carolynvs/deptest": 1},
652+
}
653+
defer func() {
654+
if err := recover(); err == nil {
655+
t.Error("toRawPruneOptions did not panic with non-empty ProjectOptions")
656+
}
657+
}()
658+
_ = toRawPruneOptions(pruneOptions)
659+
}
660+
648661
func containsErr(s []error, e error) bool {
649662
for _, a := range s {
650663
if a.Error() == e.Error() {

0 commit comments

Comments
 (0)