bldy.build/build@v0.0.0-20181002085557-d04b29acc6a7/tests/tests_test.go (about) 1 package integration 2 3 import ( 4 "context" 5 "fmt" 6 "io/ioutil" 7 "log" 8 "os" 9 "path" 10 "testing" 11 "time" 12 13 "bldy.build/build" 14 "bldy.build/build/builder" 15 "bldy.build/build/graph" 16 ) 17 18 var tests = []struct { 19 name string 20 label string 21 err error 22 }{ 23 { 24 name: "empty", 25 label: "//empty:nothing", 26 err: nil, 27 }, 28 { 29 name: "binary", 30 label: "//cc:hello", 31 err: nil, 32 }, 33 { 34 name: "library", 35 label: "//cc:hellowithlib", 36 err: nil, 37 }, 38 { 39 name: "uname", 40 label: "//docker:uname", 41 err: nil, 42 }, 43 { 44 name: "filemount", 45 label: "//docker:filemount", 46 err: nil, 47 }, 48 } 49 50 func setup(t *testing.T) string { 51 workdir, _ := os.Getwd() 52 wd := path.Join(workdir, "testdata") 53 os.Chdir(wd) 54 return wd 55 } 56 57 func TestGraph(t *testing.T) { 58 wd := setup(t) 59 for _, test := range tests { 60 t.Run(test.name, func(t *testing.T) { 61 g, err := graph.New(wd, test.label) 62 if err != nil { 63 t.Fatal(err) 64 } 65 if g == nil { 66 t.Fail() 67 } 68 }) 69 } 70 } 71 72 type testNotifier struct { 73 t *testing.T 74 } 75 76 func (t *testNotifier) Update(n *graph.Node) { 77 switch n.Status { 78 case build.Building: 79 t.t.Logf("Started building %s ", n.Label.String()) 80 default: 81 t.t.Logf("Started %d %s ", n.Status, n.Label.String()) 82 83 } 84 85 } 86 87 func (t *testNotifier) Error(err error) { 88 t.t.Fail() 89 t.t.Logf("Errored:%+v\n", err) 90 } 91 92 func (t *testNotifier) Done(d time.Duration) { 93 t.t.Logf("Finished building in %s\n", d) 94 95 } 96 97 func TestBuild(t *testing.T) { 98 wd := setup(t) 99 for _, test := range tests { 100 t.Run(test.name, func(t *testing.T) { 101 g, err := graph.New(wd, test.label) 102 if err != nil { 103 t.Fatal(err) 104 } 105 if g == nil { 106 t.Fail() 107 } 108 tmpDir, _ := ioutil.TempDir("", fmt.Sprintf("bldy_test_%s_", test.name)) 109 110 b := builder.New( 111 g, 112 &builder.Config{ 113 Fresh: true, 114 BuildOut: &tmpDir, 115 }, 116 &testNotifier{t}, 117 ) 118 cpus := 1 119 ctx := context.Background() 120 b.Execute(ctx, cpus) 121 122 files, err := ioutil.ReadDir(tmpDir) 123 124 if err != nil { 125 log.Fatal(err) 126 } 127 for _, file := range files { 128 _ = file 129 // debug.Println(file.Name()) 130 } 131 }) 132 } 133 }