job_test.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package engine
  2. import (
  3. "os"
  4. "testing"
  5. )
  6. func TestJobStatusOK(t *testing.T) {
  7. eng := newTestEngine(t)
  8. defer os.RemoveAll(eng.Root())
  9. eng.Register("return_ok", func(job *Job) Status { return StatusOK })
  10. err := eng.Job("return_ok").Run()
  11. if err != nil {
  12. t.Fatalf("Expected: err=%v\nReceived: err=%v", nil, err)
  13. }
  14. }
  15. func TestJobStatusErr(t *testing.T) {
  16. eng := newTestEngine(t)
  17. defer os.RemoveAll(eng.Root())
  18. eng.Register("return_err", func(job *Job) Status { return StatusErr })
  19. err := eng.Job("return_err").Run()
  20. if err == nil {
  21. t.Fatalf("When a job returns StatusErr, Run() should return an error")
  22. }
  23. }
  24. func TestJobStatusNotFound(t *testing.T) {
  25. eng := newTestEngine(t)
  26. defer os.RemoveAll(eng.Root())
  27. eng.Register("return_not_found", func(job *Job) Status { return StatusNotFound })
  28. err := eng.Job("return_not_found").Run()
  29. if err == nil {
  30. t.Fatalf("When a job returns StatusNotFound, Run() should return an error")
  31. }
  32. }
  33. func TestJobStdoutString(t *testing.T) {
  34. eng := newTestEngine(t)
  35. defer os.RemoveAll(eng.Root())
  36. // FIXME: test multiple combinations of output and status
  37. eng.Register("say_something_in_stdout", func(job *Job) Status {
  38. job.Printf("Hello world\n")
  39. return StatusOK
  40. })
  41. job := eng.Job("say_something_in_stdout")
  42. var output string
  43. if err := job.Stdout.AddString(&output); err != nil {
  44. t.Fatal(err)
  45. }
  46. if err := job.Run(); err != nil {
  47. t.Fatal(err)
  48. }
  49. if expectedOutput := "Hello world"; output != expectedOutput {
  50. t.Fatalf("Stdout last line:\nExpected: %v\nReceived: %v", expectedOutput, output)
  51. }
  52. }
  53. func TestJobStderrString(t *testing.T) {
  54. eng := newTestEngine(t)
  55. defer os.RemoveAll(eng.Root())
  56. // FIXME: test multiple combinations of output and status
  57. eng.Register("say_something_in_stderr", func(job *Job) Status {
  58. job.Errorf("Warning, something might happen\nHere it comes!\nOh no...\nSomething happened\n")
  59. return StatusOK
  60. })
  61. job := eng.Job("say_something_in_stderr")
  62. var output string
  63. if err := job.Stderr.AddString(&output); err != nil {
  64. t.Fatal(err)
  65. }
  66. if err := job.Run(); err != nil {
  67. t.Fatal(err)
  68. }
  69. if expectedOutput := "Something happened"; output != expectedOutput {
  70. t.Fatalf("Stderr last line:\nExpected: %v\nReceived: %v", expectedOutput, output)
  71. }
  72. }