env_test.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. package engine
  2. import (
  3. "testing"
  4. )
  5. func TestEnvLenZero(t *testing.T) {
  6. env := &Env{}
  7. if env.Len() != 0 {
  8. t.Fatalf("%d", env.Len())
  9. }
  10. }
  11. func TestEnvLenNotZero(t *testing.T) {
  12. env := &Env{}
  13. env.Set("foo", "bar")
  14. env.Set("ga", "bu")
  15. if env.Len() != 2 {
  16. t.Fatalf("%d", env.Len())
  17. }
  18. }
  19. func TestEnvLenDup(t *testing.T) {
  20. env := &Env{
  21. "foo=bar",
  22. "foo=baz",
  23. "a=b",
  24. }
  25. // len(env) != env.Len()
  26. if env.Len() != 2 {
  27. t.Fatalf("%d", env.Len())
  28. }
  29. }
  30. func TestNewJob(t *testing.T) {
  31. job := mkJob(t, "dummy", "--level=awesome")
  32. if job.Name != "dummy" {
  33. t.Fatalf("Wrong job name: %s", job.Name)
  34. }
  35. if len(job.Args) != 1 {
  36. t.Fatalf("Wrong number of job arguments: %d", len(job.Args))
  37. }
  38. if job.Args[0] != "--level=awesome" {
  39. t.Fatalf("Wrong job arguments: %s", job.Args[0])
  40. }
  41. }
  42. func TestSetenv(t *testing.T) {
  43. job := mkJob(t, "dummy")
  44. job.Setenv("foo", "bar")
  45. if val := job.Getenv("foo"); val != "bar" {
  46. t.Fatalf("Getenv returns incorrect value: %s", val)
  47. }
  48. job.Setenv("bar", "")
  49. if val := job.Getenv("bar"); val != "" {
  50. t.Fatalf("Getenv returns incorrect value: %s", val)
  51. }
  52. if val := job.Getenv("nonexistent"); val != "" {
  53. t.Fatalf("Getenv returns incorrect value: %s", val)
  54. }
  55. }
  56. func TestSetenvBool(t *testing.T) {
  57. job := mkJob(t, "dummy")
  58. job.SetenvBool("foo", true)
  59. if val := job.GetenvBool("foo"); !val {
  60. t.Fatalf("GetenvBool returns incorrect value: %t", val)
  61. }
  62. job.SetenvBool("bar", false)
  63. if val := job.GetenvBool("bar"); val {
  64. t.Fatalf("GetenvBool returns incorrect value: %t", val)
  65. }
  66. if val := job.GetenvBool("nonexistent"); val {
  67. t.Fatalf("GetenvBool returns incorrect value: %t", val)
  68. }
  69. }
  70. func TestSetenvInt(t *testing.T) {
  71. job := mkJob(t, "dummy")
  72. job.SetenvInt("foo", -42)
  73. if val := job.GetenvInt("foo"); val != -42 {
  74. t.Fatalf("GetenvInt returns incorrect value: %d", val)
  75. }
  76. job.SetenvInt("bar", 42)
  77. if val := job.GetenvInt("bar"); val != 42 {
  78. t.Fatalf("GetenvInt returns incorrect value: %d", val)
  79. }
  80. if val := job.GetenvInt("nonexistent"); val != 0 {
  81. t.Fatalf("GetenvInt returns incorrect value: %d", val)
  82. }
  83. }
  84. func TestSetenvList(t *testing.T) {
  85. job := mkJob(t, "dummy")
  86. job.SetenvList("foo", []string{"bar"})
  87. if val := job.GetenvList("foo"); len(val) != 1 || val[0] != "bar" {
  88. t.Fatalf("GetenvList returns incorrect value: %v", val)
  89. }
  90. job.SetenvList("bar", nil)
  91. if val := job.GetenvList("bar"); val != nil {
  92. t.Fatalf("GetenvList returns incorrect value: %v", val)
  93. }
  94. if val := job.GetenvList("nonexistent"); val != nil {
  95. t.Fatalf("GetenvList returns incorrect value: %v", val)
  96. }
  97. }
  98. func TestEnviron(t *testing.T) {
  99. job := mkJob(t, "dummy")
  100. job.Setenv("foo", "bar")
  101. val, exists := job.Environ()["foo"]
  102. if !exists {
  103. t.Fatalf("foo not found in the environ")
  104. }
  105. if val != "bar" {
  106. t.Fatalf("bar not found in the environ")
  107. }
  108. }
  109. func TestMultiMap(t *testing.T) {
  110. e := &Env{}
  111. e.Set("foo", "bar")
  112. e.Set("bar", "baz")
  113. e.Set("hello", "world")
  114. m := e.MultiMap()
  115. e2 := &Env{}
  116. e2.Set("old_key", "something something something")
  117. e2.InitMultiMap(m)
  118. if v := e2.Get("old_key"); v != "" {
  119. t.Fatalf("%#v", v)
  120. }
  121. if v := e2.Get("bar"); v != "baz" {
  122. t.Fatalf("%#v", v)
  123. }
  124. if v := e2.Get("hello"); v != "world" {
  125. t.Fatalf("%#v", v)
  126. }
  127. }