github.com/tiagovtristao/plz@v13.4.0+incompatible/src/core/package_test.go (about)

     1  package core
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  func TestRegisterSubinclude(t *testing.T) {
    10  	pkg := NewPackage("src/core")
    11  	label1 := ParseBuildLabel("//build_defs:js", "")
    12  	label2 := ParseBuildLabel("//build_defs:go", "")
    13  	pkg.RegisterSubinclude(label1)
    14  	pkg.RegisterSubinclude(label2)
    15  	pkg.RegisterSubinclude(label1)
    16  	assert.Equal(t, []BuildLabel{label1, label2}, pkg.Subincludes)
    17  }
    18  
    19  func TestRegisterOutput(t *testing.T) {
    20  	target1 := NewBuildTarget(ParseBuildLabel("//src/core:target1", ""))
    21  	target2 := NewBuildTarget(ParseBuildLabel("//src/core:target2", ""))
    22  	pkg := NewPackage("src/core")
    23  	target1.Sources = append(target1.Sources, FileLabel{File: "file1.go"})
    24  	target2.Sources = append(target2.Sources, FileLabel{File: "file2.go"})
    25  	target2.AddNamedSource("go", FileLabel{File: "file1.go"})
    26  	pkg.RegisterOutput("file1.go", target1)
    27  	pkg.RegisterOutput("file2.go", target2)
    28  	// Doesn't panic because it's a source of both rules, so we assume it's a filegroup.
    29  	pkg.RegisterOutput("file1.go", target2)
    30  
    31  	pkg.RegisterOutput("file3.go", target1)
    32  	assert.Error(t, pkg.RegisterOutput("file3.go", target2))
    33  }
    34  
    35  func TestAllChildren(t *testing.T) {
    36  	target1 := NewBuildTarget(ParseBuildLabel("//src/core:target1", ""))
    37  	target2 := NewBuildTarget(ParseBuildLabel("//src/core:target2", ""))
    38  	target2a := NewBuildTarget(ParseBuildLabel("//src/core:_target2#a", ""))
    39  	pkg := NewPackage("src/core")
    40  	pkg.AddTarget(target1)
    41  	pkg.AddTarget(target2)
    42  	pkg.AddTarget(target2a)
    43  	children := pkg.AllChildren(target2)
    44  	expected := []*BuildTarget{target2a, target2}
    45  	assert.Equal(t, expected, children)
    46  	children = pkg.AllChildren(target2a)
    47  	assert.Equal(t, expected, children)
    48  }
    49  
    50  func TestFindOwningPackages(t *testing.T) {
    51  	state := NewDefaultBuildState()
    52  	state.Config.Parse.BuildFileName = []string{"TEST_BUILD"}
    53  	pkgs := FindOwningPackages(state, []string{"src/core/test_data/test_subfolder1/whatever.txt"})
    54  	assert.Equal(t, []BuildLabel{ParseBuildLabel("//src/core/test_data:all", "")}, pkgs)
    55  }
    56  
    57  func TestIsIncludedIn(t *testing.T) {
    58  	label := BuildLabel{PackageName: "src", Name: "..."}
    59  	assert.True(t, NewPackage("src").IsIncludedIn(label))
    60  	assert.True(t, NewPackage("src/core").IsIncludedIn(label))
    61  	assert.False(t, NewPackage("src2").IsIncludedIn(label))
    62  }
    63  
    64  func TestVerifyOutputs(t *testing.T) {
    65  	target1 := NewBuildTarget(ParseBuildLabel("//src/core:target1", ""))
    66  	target2 := NewBuildTarget(ParseBuildLabel("//src/core:target2", ""))
    67  	pkg := NewPackage("src/core")
    68  	pkg.AddTarget(target1)
    69  	pkg.AddTarget(target2)
    70  	pkg.MustRegisterOutput("dir/file1.go", target1)
    71  	pkg.MustRegisterOutput("dir", target2)
    72  	assert.Equal(t, 1, len(pkg.verifyOutputs()))
    73  	target1.AddDependency(target2.Label)
    74  	assert.Equal(t, 0, len(pkg.verifyOutputs()))
    75  }