engine_test.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package engine
  2. import (
  3. "io/ioutil"
  4. "os"
  5. "path"
  6. "testing"
  7. )
  8. func TestRegister(t *testing.T) {
  9. if err := Register("dummy1", nil); err != nil {
  10. t.Fatal(err)
  11. }
  12. if err := Register("dummy1", nil); err == nil {
  13. t.Fatalf("Expecting error, got none")
  14. }
  15. eng := newTestEngine(t)
  16. //Should fail because global handlers are copied
  17. //at the engine creation
  18. if err := eng.Register("dummy1", nil); err == nil {
  19. t.Fatalf("Expecting error, got none")
  20. }
  21. if err := eng.Register("dummy2", nil); err != nil {
  22. t.Fatal(err)
  23. }
  24. if err := eng.Register("dummy2", nil); err == nil {
  25. t.Fatalf("Expecting error, got none")
  26. }
  27. }
  28. func TestJob(t *testing.T) {
  29. eng := newTestEngine(t)
  30. job1 := eng.Job("dummy1", "--level=awesome")
  31. if job1.handler != nil {
  32. t.Fatalf("job1.handler should be empty")
  33. }
  34. h := func(j *Job) Status {
  35. j.Printf("%s\n", j.Name)
  36. return 42
  37. }
  38. eng.Register("dummy2", h)
  39. job2 := eng.Job("dummy2", "--level=awesome")
  40. if job2.handler == nil {
  41. t.Fatalf("job2.handler shouldn't be nil")
  42. }
  43. if job2.handler(job2) != 42 {
  44. t.Fatalf("handler dummy2 was not found in job2")
  45. }
  46. }
  47. func TestEngineRoot(t *testing.T) {
  48. tmp, err := ioutil.TempDir("", "docker-test-TestEngineCreateDir")
  49. if err != nil {
  50. t.Fatal(err)
  51. }
  52. defer os.RemoveAll(tmp)
  53. dir := path.Join(tmp, "dir")
  54. eng, err := New(dir)
  55. if err != nil {
  56. t.Fatal(err)
  57. }
  58. if st, err := os.Stat(dir); err != nil {
  59. t.Fatal(err)
  60. } else if !st.IsDir() {
  61. t.Fatalf("engine.New() created something other than a directory at %s", dir)
  62. }
  63. if r := eng.Root(); r != dir {
  64. t.Fatalf("Expected: %v\nReceived: %v", dir, r)
  65. }
  66. }
  67. func TestEngineString(t *testing.T) {
  68. eng1 := newTestEngine(t)
  69. defer os.RemoveAll(eng1.Root())
  70. eng2 := newTestEngine(t)
  71. defer os.RemoveAll(eng2.Root())
  72. s1 := eng1.String()
  73. s2 := eng2.String()
  74. if eng1 == eng2 {
  75. t.Fatalf("Different engines should have different names (%v == %v)", s1, s2)
  76. }
  77. }
  78. func TestEngineLogf(t *testing.T) {
  79. eng := newTestEngine(t)
  80. defer os.RemoveAll(eng.Root())
  81. input := "Test log line"
  82. if n, err := eng.Logf("%s\n", input); err != nil {
  83. t.Fatal(err)
  84. } else if n < len(input) {
  85. t.Fatalf("Test: Logf() should print at least as much as the input\ninput=%d\nprinted=%d", len(input), n)
  86. }
  87. }