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 }