github.com/guilhermebr/docker@v1.4.2-0.20150428121140-67da055cebca/pkg/fileutils/fileutils_test.go (about)

     1  package fileutils
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  )
     7  
     8  // Reading a symlink to a directory must return the directory
     9  func TestReadSymlinkedDirectoryExistingDirectory(t *testing.T) {
    10  	var err error
    11  	if err = os.Mkdir("/tmp/testReadSymlinkToExistingDirectory", 0777); err != nil {
    12  		t.Errorf("failed to create directory: %s", err)
    13  	}
    14  
    15  	if err = os.Symlink("/tmp/testReadSymlinkToExistingDirectory", "/tmp/dirLinkTest"); err != nil {
    16  		t.Errorf("failed to create symlink: %s", err)
    17  	}
    18  
    19  	var path string
    20  	if path, err = ReadSymlinkedDirectory("/tmp/dirLinkTest"); err != nil {
    21  		t.Fatalf("failed to read symlink to directory: %s", err)
    22  	}
    23  
    24  	if path != "/tmp/testReadSymlinkToExistingDirectory" {
    25  		t.Fatalf("symlink returned unexpected directory: %s", path)
    26  	}
    27  
    28  	if err = os.Remove("/tmp/testReadSymlinkToExistingDirectory"); err != nil {
    29  		t.Errorf("failed to remove temporary directory: %s", err)
    30  	}
    31  
    32  	if err = os.Remove("/tmp/dirLinkTest"); err != nil {
    33  		t.Errorf("failed to remove symlink: %s", err)
    34  	}
    35  }
    36  
    37  // Reading a non-existing symlink must fail
    38  func TestReadSymlinkedDirectoryNonExistingSymlink(t *testing.T) {
    39  	var path string
    40  	var err error
    41  	if path, err = ReadSymlinkedDirectory("/tmp/test/foo/Non/ExistingPath"); err == nil {
    42  		t.Fatalf("error expected for non-existing symlink")
    43  	}
    44  
    45  	if path != "" {
    46  		t.Fatalf("expected empty path, but '%s' was returned", path)
    47  	}
    48  }
    49  
    50  // Reading a symlink to a file must fail
    51  func TestReadSymlinkedDirectoryToFile(t *testing.T) {
    52  	var err error
    53  	var file *os.File
    54  
    55  	if file, err = os.Create("/tmp/testReadSymlinkToFile"); err != nil {
    56  		t.Fatalf("failed to create file: %s", err)
    57  	}
    58  
    59  	file.Close()
    60  
    61  	if err = os.Symlink("/tmp/testReadSymlinkToFile", "/tmp/fileLinkTest"); err != nil {
    62  		t.Errorf("failed to create symlink: %s", err)
    63  	}
    64  
    65  	var path string
    66  	if path, err = ReadSymlinkedDirectory("/tmp/fileLinkTest"); err == nil {
    67  		t.Fatalf("ReadSymlinkedDirectory on a symlink to a file should've failed")
    68  	}
    69  
    70  	if path != "" {
    71  		t.Fatalf("path should've been empty: %s", path)
    72  	}
    73  
    74  	if err = os.Remove("/tmp/testReadSymlinkToFile"); err != nil {
    75  		t.Errorf("failed to remove file: %s", err)
    76  	}
    77  
    78  	if err = os.Remove("/tmp/fileLinkTest"); err != nil {
    79  		t.Errorf("failed to remove symlink: %s", err)
    80  	}
    81  }