github.com/dlintw/docker@v1.5.0-rc4/utils/utils_test.go (about)

     1  package utils
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  )
     7  
     8  func TestReplaceAndAppendEnvVars(t *testing.T) {
     9  	var (
    10  		d = []string{"HOME=/"}
    11  		o = []string{"HOME=/root", "TERM=xterm"}
    12  	)
    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  
    26  // Reading a symlink to a directory must return the directory
    27  func TestReadSymlinkedDirectoryExistingDirectory(t *testing.T) {
    28  	var err error
    29  	if err = os.Mkdir("/tmp/testReadSymlinkToExistingDirectory", 0777); err != nil {
    30  		t.Errorf("failed to create directory: %s", err)
    31  	}
    32  
    33  	if err = os.Symlink("/tmp/testReadSymlinkToExistingDirectory", "/tmp/dirLinkTest"); err != nil {
    34  		t.Errorf("failed to create symlink: %s", err)
    35  	}
    36  
    37  	var path string
    38  	if path, err = ReadSymlinkedDirectory("/tmp/dirLinkTest"); err != nil {
    39  		t.Fatalf("failed to read symlink to directory: %s", err)
    40  	}
    41  
    42  	if path != "/tmp/testReadSymlinkToExistingDirectory" {
    43  		t.Fatalf("symlink returned unexpected directory: %s", path)
    44  	}
    45  
    46  	if err = os.Remove("/tmp/testReadSymlinkToExistingDirectory"); err != nil {
    47  		t.Errorf("failed to remove temporary directory: %s", err)
    48  	}
    49  
    50  	if err = os.Remove("/tmp/dirLinkTest"); err != nil {
    51  		t.Errorf("failed to remove symlink: %s", err)
    52  	}
    53  }
    54  
    55  // Reading a non-existing symlink must fail
    56  func TestReadSymlinkedDirectoryNonExistingSymlink(t *testing.T) {
    57  	var path string
    58  	var err error
    59  	if path, err = ReadSymlinkedDirectory("/tmp/test/foo/Non/ExistingPath"); err == nil {
    60  		t.Fatalf("error expected for non-existing symlink")
    61  	}
    62  
    63  	if path != "" {
    64  		t.Fatalf("expected empty path, but '%s' was returned", path)
    65  	}
    66  }
    67  
    68  // Reading a symlink to a file must fail
    69  func TestReadSymlinkedDirectoryToFile(t *testing.T) {
    70  	var err error
    71  	var file *os.File
    72  
    73  	if file, err = os.Create("/tmp/testReadSymlinkToFile"); err != nil {
    74  		t.Fatalf("failed to create file: %s", err)
    75  	}
    76  
    77  	file.Close()
    78  
    79  	if err = os.Symlink("/tmp/testReadSymlinkToFile", "/tmp/fileLinkTest"); err != nil {
    80  		t.Errorf("failed to create symlink: %s", err)
    81  	}
    82  
    83  	var path string
    84  	if path, err = ReadSymlinkedDirectory("/tmp/fileLinkTest"); err == nil {
    85  		t.Fatalf("ReadSymlinkedDirectory on a symlink to a file should've failed")
    86  	}
    87  
    88  	if path != "" {
    89  		t.Fatalf("path should've been empty: %s", path)
    90  	}
    91  
    92  	if err = os.Remove("/tmp/testReadSymlinkToFile"); err != nil {
    93  		t.Errorf("failed to remove file: %s", err)
    94  	}
    95  
    96  	if err = os.Remove("/tmp/fileLinkTest"); err != nil {
    97  		t.Errorf("failed to remove symlink: %s", err)
    98  	}
    99  }