github.com/sercand/please@v13.4.0+incompatible/src/query/whatoutputs_test.go (about) 1 package query 2 3 import ( 4 "fmt" 5 "path" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 10 "github.com/thought-machine/please/src/core" 11 ) 12 13 func makeTarget(g *core.BuildGraph, packageName string, labelName string, outputs []string) *core.BuildTarget { 14 l := core.ParseBuildLabel(fmt.Sprintf("//%s:%s", packageName, labelName), "") 15 t := core.NewBuildTarget(l) 16 17 p := g.Package(packageName, "") 18 if p == nil { 19 p = core.NewPackage(packageName) 20 g.AddPackage(p) 21 } 22 for _, out := range outputs { 23 t.AddOutput(out) 24 p.MustRegisterOutput(out, t) 25 } 26 p.AddTarget(t) 27 g.AddTarget(t) 28 return t 29 } 30 31 func TestConstructsMapFromGraph(t *testing.T) { 32 graph := core.NewGraph() 33 m := filesToLabelMap(graph) 34 assert.Equal(t, 0, len(m)) 35 36 label := core.ParseBuildLabel("//package1:target1", "") 37 makeTarget(graph, "package1", "target1", []string{"out1", "out2"}) 38 m = filesToLabelMap(graph) 39 assert.Equal(t, 2, len(m)) 40 for _, l := range m { 41 assert.Equal(t, label.String(), l.String()) 42 } 43 } 44 45 func TestMapKeysContainFullPathFromProjectRoot(t *testing.T) { 46 graph := core.NewGraph() 47 makeTarget(graph, "package1", "target1", []string{"out1", "out2"}) 48 makeTarget(graph, "package1", "target2", []string{"out3"}) 49 makeTarget(graph, "package2", "target1", []string{"out4"}) 50 m := filesToLabelMap(graph) 51 label1 := core.ParseBuildLabel("//package1:target1", "") 52 label2 := core.ParseBuildLabel("//package1:target2", "") 53 label3 := core.ParseBuildLabel("//package2:target1", "") 54 55 p1 := graph.Package("package1", "") 56 p2 := graph.Package("package2", "") 57 58 assert.Equal(t, m[path.Join(p1.Target("target1").OutDir(), "out1")].String(), label1.String()) 59 assert.Equal(t, m[path.Join(p1.Target("target1").OutDir(), "out2")].String(), label1.String()) 60 assert.Equal(t, m[path.Join(p1.Target("target2").OutDir(), "out3")].String(), label2.String()) 61 assert.Equal(t, m[path.Join(p2.Target("target1").OutDir(), "out4")].String(), label3.String()) 62 }