package engine import ( "io/ioutil" "os" "path" "testing" ) func TestRegister(t *testing.T) { if err := Register("dummy1", nil); err != nil { t.Fatal(err) } if err := Register("dummy1", nil); err == nil { t.Fatalf("Expecting error, got none") } eng := newTestEngine(t) //Should fail because global handlers are copied //at the engine creation if err := eng.Register("dummy1", nil); err == nil { t.Fatalf("Expecting error, got none") } if err := eng.Register("dummy2", nil); err != nil { t.Fatal(err) } if err := eng.Register("dummy2", nil); err == nil { t.Fatalf("Expecting error, got none") } } func TestJob(t *testing.T) { eng := newTestEngine(t) job1 := eng.Job("dummy1", "--level=awesome") if job1.handler != nil { t.Fatalf("job1.handler should be empty") } h := func(j *Job) Status { j.Printf("%s\n", j.Name) return 42 } eng.Register("dummy2", h) job2 := eng.Job("dummy2", "--level=awesome") if job2.handler == nil { t.Fatalf("job2.handler shouldn't be nil") } if job2.handler(job2) != 42 { t.Fatalf("handler dummy2 was not found in job2") } } func TestEngineRoot(t *testing.T) { tmp, err := ioutil.TempDir("", "docker-test-TestEngineCreateDir") if err != nil { t.Fatal(err) } defer os.RemoveAll(tmp) dir := path.Join(tmp, "dir") eng, err := New(dir) if err != nil { t.Fatal(err) } if st, err := os.Stat(dir); err != nil { t.Fatal(err) } else if !st.IsDir() { t.Fatalf("engine.New() created something other than a directory at %s", dir) } if r := eng.Root(); r != dir { t.Fatalf("Expected: %v\nReceived: %v", dir, r) } } func TestEngineString(t *testing.T) { eng1 := newTestEngine(t) defer os.RemoveAll(eng1.Root()) eng2 := newTestEngine(t) defer os.RemoveAll(eng2.Root()) s1 := eng1.String() s2 := eng2.String() if eng1 == eng2 { t.Fatalf("Different engines should have different names (%v == %v)", s1, s2) } } func TestEngineLogf(t *testing.T) { eng := newTestEngine(t) defer os.RemoveAll(eng.Root()) input := "Test log line" if n, err := eng.Logf("%s\n", input); err != nil { t.Fatal(err) } else if n < len(input) { t.Fatalf("Test: Logf() should print at least as much as the input\ninput=%d\nprinted=%d", len(input), n) } }