github.com/tiagovtristao/plz@v13.4.0+incompatible/src/query/graph_test.go (about) 1 package query 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 TestQueryEntireGraph(t *testing.T) { 12 graph := makeJSONGraph(makeGraph(), nil) 13 assert.Equal(t, 2, len(graph.Packages)) 14 pkg1 := graph.Packages["package1"] 15 assert.Equal(t, 2, len(pkg1.Targets)) 16 assert.Equal(t, 0, len(pkg1.Targets["target1"].Deps)) 17 assert.Equal(t, []string{"//package1:target1"}, pkg1.Targets["target2"].Deps) 18 pkg2 := graph.Packages["package2"] 19 assert.Equal(t, 1, len(pkg2.Targets)) 20 assert.Equal(t, []string{"//package1:target2"}, pkg2.Targets["target3"].Deps) 21 } 22 23 func TestQuerySingleTarget(t *testing.T) { 24 graph := makeJSONGraph(makeGraph(), []core.BuildLabel{core.ParseBuildLabel("//package1:target2", "")}) 25 assert.Equal(t, 1, len(graph.Packages)) 26 pkg1 := graph.Packages["package1"] 27 assert.Equal(t, 2, len(pkg1.Targets)) 28 assert.Equal(t, []string{"//package1:target1"}, pkg1.Targets["target2"].Deps) 29 } 30 31 func TestQueryPackage(t *testing.T) { 32 graph := makeJSONGraph(makeGraph(), []core.BuildLabel{core.ParseBuildLabel("//package1:all", "")}) 33 assert.Equal(t, 1, len(graph.Packages)) 34 pkg1 := graph.Packages["package1"] 35 assert.Equal(t, 2, len(pkg1.Targets)) 36 assert.Equal(t, 0, len(pkg1.Targets["target1"].Deps)) 37 assert.Equal(t, []string{"//package1:target1"}, pkg1.Targets["target2"].Deps) 38 } 39 40 func makeGraph() *core.BuildState { 41 state := core.NewDefaultBuildState() 42 graph := state.Graph 43 pkg1 := core.NewPackage("package1") 44 pkg1.AddTarget(makeTarget("//package1:target1")) 45 pkg1.AddTarget(makeTarget("//package1:target2", "//package1:target1")) 46 graph.AddPackage(pkg1) 47 graph.AddTarget(pkg1.Target("target1")) 48 graph.AddTarget(pkg1.Target("target2")) 49 pkg2 := core.NewPackage("package2") 50 pkg2.AddTarget(makeTarget("//package2:target3", "//package1:target2")) 51 graph.AddPackage(pkg2) 52 graph.AddTarget(pkg2.Target("target3")) 53 graph.AddDependency(core.ParseBuildLabel("//package1:target2", ""), core.ParseBuildLabel("//package1:target1", "")) 54 graph.AddDependency(core.ParseBuildLabel("//package2:target3", ""), core.ParseBuildLabel("//package1:target2", "")) 55 return state 56 } 57 58 func makeTarget(label string, deps ...string) *core.BuildTarget { 59 target := core.NewBuildTarget(core.ParseBuildLabel(label, "")) 60 for _, dep := range deps { 61 target.AddDependency(core.ParseBuildLabel(dep, "")) 62 } 63 return target 64 }