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  }