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  }