github.com/tiagovtristao/plz@v13.4.0+incompatible/src/parse/suggest_test.go (about) 1 package parse 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 8 "github.com/thought-machine/please/src/core" 9 ) 10 11 func TestSuggestNoTargetFromSamePackage(t *testing.T) { 12 pkg := makePackage("src/core", "wobble", "wibble") 13 s := suggestTargets(pkg, bl("//src/core:target2"), bl("//src/core:wibble")) 14 assert.Equal(t, s, "", "No suggestion because they're not similar at all.") 15 } 16 17 func TestSuggestSingleTargetFromSamePackage(t *testing.T) { 18 pkg := makePackage("src/core", "target1", "wibble") 19 s := suggestTargets(pkg, bl("//src/core:target2"), bl("//src/core:wibble")) 20 assert.Equal(t, s, "\nMaybe you meant :target1 ?") 21 } 22 23 func TestSuggestTwoTargetsFromSamePackage(t *testing.T) { 24 pkg := makePackage("src/core", "target1", "target21", "wibble") 25 s := suggestTargets(pkg, bl("//src/core:target"), bl("//src/core:blibble")) 26 assert.Equal(t, s, "\nMaybe you meant :target1 or :target21 ?") 27 } 28 29 func TestSuggestSeveralTargetsFromSamePackage(t *testing.T) { 30 pkg := makePackage("src/core", "target1", "target21", "target_21", "wibble") 31 s := suggestTargets(pkg, bl("//src/core:target"), bl("//src/core:blibble")) 32 assert.Equal(t, s, "\nMaybe you meant :target1 , :target21 or :target_21 ?") 33 } 34 35 func TestSuggestSingleTargetFromAnotherPackage(t *testing.T) { 36 pkg := makePackage("src/core", "target1", "wibble") 37 s := suggestTargets(pkg, bl("//src/core:target2"), bl("//src/parse:wibble")) 38 assert.Equal(t, s, "\nMaybe you meant //src/core:target1 ?") 39 } 40 41 func TestSuggestTwoTargetsFromAnotherPackage(t *testing.T) { 42 pkg := makePackage("src/core", "target1", "target21", "wibble") 43 s := suggestTargets(pkg, bl("//src/core:target"), bl("//src/parse:blibble")) 44 assert.Equal(t, s, "\nMaybe you meant //src/core:target1 or //src/core:target21 ?") 45 } 46 47 func TestSuggestSeveralTargetsFromAnotherPackage(t *testing.T) { 48 pkg := makePackage("src/core", "target1", "target21", "target_21", "wibble") 49 s := suggestTargets(pkg, bl("//src/core:target"), bl("//src/parse:blibble")) 50 assert.Equal(t, s, "\nMaybe you meant //src/core:target1 , //src/core:target21 or //src/core:target_21 ?") 51 } 52 53 func makePackage(name string, targets ...string) *core.Package { 54 pkg := core.NewPackage(name) 55 for _, target := range targets { 56 pkg.AddTarget(core.NewBuildTarget(bl("//" + name + ":" + target))) 57 } 58 return pkg 59 } 60 61 func bl(label string) core.BuildLabel { 62 return core.ParseBuildLabel(label, "") 63 }