github.com/robertojrojas/docker@v1.9.1/utils/utils_test.go (about)

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