job_test.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package engine
  2. import (
  3. "bytes"
  4. "fmt"
  5. "testing"
  6. )
  7. func TestJobStatusOK(t *testing.T) {
  8. eng := New()
  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 := New()
  17. eng.Register("return_err", func(job *Job) Status { return StatusErr })
  18. err := eng.Job("return_err").Run()
  19. if err == nil {
  20. t.Fatalf("When a job returns StatusErr, Run() should return an error")
  21. }
  22. }
  23. func TestJobStatusNotFound(t *testing.T) {
  24. eng := New()
  25. eng.Register("return_not_found", func(job *Job) Status { return StatusNotFound })
  26. err := eng.Job("return_not_found").Run()
  27. if err == nil {
  28. t.Fatalf("When a job returns StatusNotFound, Run() should return an error")
  29. }
  30. }
  31. func TestJobStdoutString(t *testing.T) {
  32. eng := New()
  33. // FIXME: test multiple combinations of output and status
  34. eng.Register("say_something_in_stdout", func(job *Job) Status {
  35. job.Printf("Hello world\n")
  36. return StatusOK
  37. })
  38. job := eng.Job("say_something_in_stdout")
  39. var outputBuffer = bytes.NewBuffer(nil)
  40. job.Stdout.Add(outputBuffer)
  41. if err := job.Run(); err != nil {
  42. t.Fatal(err)
  43. }
  44. fmt.Println(outputBuffer)
  45. var output = Tail(outputBuffer, 1)
  46. if expectedOutput := "Hello world"; output != expectedOutput {
  47. t.Fatalf("Stdout last line:\nExpected: %v\nReceived: %v", expectedOutput, output)
  48. }
  49. }
  50. func TestJobStderrString(t *testing.T) {
  51. eng := New()
  52. // FIXME: test multiple combinations of output and status
  53. eng.Register("say_something_in_stderr", func(job *Job) Status {
  54. job.Errorf("Warning, something might happen\nHere it comes!\nOh no...\nSomething happened\n")
  55. return StatusOK
  56. })
  57. job := eng.Job("say_something_in_stderr")
  58. var outputBuffer = bytes.NewBuffer(nil)
  59. job.Stderr.Add(outputBuffer)
  60. if err := job.Run(); err != nil {
  61. t.Fatal(err)
  62. }
  63. var output = Tail(outputBuffer, 1)
  64. if expectedOutput := "Something happened"; output != expectedOutput {
  65. t.Fatalf("Stderr last line:\nExpected: %v\nReceived: %v", expectedOutput, output)
  66. }
  67. }