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  }