utils_test.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package utils
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "os"
  6. "path/filepath"
  7. "testing"
  8. )
  9. func TestReplaceAndAppendEnvVars(t *testing.T) {
  10. var (
  11. d = []string{"HOME=/"}
  12. o = []string{"HOME=/root", "TERM=xterm"}
  13. )
  14. env := ReplaceOrAppendEnvValues(d, o)
  15. if len(env) != 2 {
  16. t.Fatalf("expected len of 2 got %d", len(env))
  17. }
  18. if env[0] != "HOME=/root" {
  19. t.Fatalf("expected HOME=/root got '%s'", env[0])
  20. }
  21. if env[1] != "TERM=xterm" {
  22. t.Fatalf("expected TERM=xterm got '%s'", env[1])
  23. }
  24. }
  25. func TestImageReference(t *testing.T) {
  26. tests := []struct {
  27. repo string
  28. ref string
  29. expected string
  30. }{
  31. {"repo", "tag", "repo:tag"},
  32. {"repo", "sha256:c100b11b25d0cacd52c14e0e7bf525e1a4c0e6aec8827ae007055545909d1a64", "repo@sha256:c100b11b25d0cacd52c14e0e7bf525e1a4c0e6aec8827ae007055545909d1a64"},
  33. }
  34. for i, test := range tests {
  35. actual := ImageReference(test.repo, test.ref)
  36. if test.expected != actual {
  37. t.Errorf("%d: expected %q, got %q", i, test.expected, actual)
  38. }
  39. }
  40. }
  41. func TestDigestReference(t *testing.T) {
  42. input := "sha256:c100b11b25d0cacd52c14e0e7bf525e1a4c0e6aec8827ae007055545909d1a64"
  43. if !DigestReference(input) {
  44. t.Errorf("Expected DigestReference=true for input %q", input)
  45. }
  46. input = "latest"
  47. if DigestReference(input) {
  48. t.Errorf("Unexpected DigestReference=true for input %q", input)
  49. }
  50. }
  51. func TestReadDockerIgnore(t *testing.T) {
  52. tmpDir, err := ioutil.TempDir("", "dockerignore-test")
  53. if err != nil {
  54. t.Fatal(err)
  55. }
  56. defer os.RemoveAll(tmpDir)
  57. diName := filepath.Join(tmpDir, ".dockerignore")
  58. di, err := ReadDockerIgnore(diName)
  59. if err != nil {
  60. t.Fatalf("Expected not to have error, got %s", err)
  61. }
  62. if diLen := len(di); diLen != 0 {
  63. t.Fatalf("Expected to have zero dockerignore entry, got %d", diLen)
  64. }
  65. content := fmt.Sprintf("test1\n/test2\n/a/file/here\n\nlastfile")
  66. err = ioutil.WriteFile(diName, []byte(content), 0777)
  67. if err != nil {
  68. t.Fatal(err)
  69. }
  70. di, err = ReadDockerIgnore(diName)
  71. if err != nil {
  72. t.Fatal(err)
  73. }
  74. if di[0] != "test1" {
  75. t.Fatalf("First element is not test1")
  76. }
  77. if di[1] != "/test2" {
  78. t.Fatalf("Second element is not /test2")
  79. }
  80. if di[2] != "/a/file/here" {
  81. t.Fatalf("Third element is not /a/file/here")
  82. }
  83. if di[3] != "lastfile" {
  84. t.Fatalf("Fourth element is not lastfile")
  85. }
  86. }