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  }