github.com/nak3/source-to-image@v1.1.10-0.20180319140719-2ed55639898d/pkg/util/fs/fs_test.go (about)

     1  package fs
     2  
     3  import (
     4  	"os"
     5  	"path/filepath"
     6  	"reflect"
     7  	"testing"
     8  
     9  	testfs "github.com/openshift/source-to-image/pkg/test/fs"
    10  )
    11  
    12  func TestCopy(t *testing.T) {
    13  	sep := string(filepath.Separator)
    14  
    15  	// test plain file copy
    16  	fake := &testfs.FakeFileSystem{
    17  		Files: []os.FileInfo{
    18  			&FileInfo{FileName: "file", FileMode: 0600},
    19  		},
    20  		OpenContent: "test",
    21  	}
    22  	err := doCopy(fake, sep+"file", sep+"dest")
    23  	if err != nil {
    24  		t.Error(err)
    25  	}
    26  	if fake.CreateFile != sep+"dest" {
    27  		t.Error(fake.CreateFile)
    28  	}
    29  	if fake.CreateContent.String() != "test" {
    30  		t.Error(fake.CreateContent.String())
    31  	}
    32  	if !reflect.DeepEqual(fake.ChmodFile, []string{sep + "dest"}) {
    33  		t.Error(fake.ChmodFile)
    34  	}
    35  	if fake.ChmodMode != 0600 {
    36  		t.Error(fake.ChmodMode)
    37  	}
    38  
    39  	// test broken symlink copy
    40  	fake = &testfs.FakeFileSystem{
    41  		Files: []os.FileInfo{
    42  			&FileInfo{FileName: "link", FileMode: os.ModeSymlink},
    43  		},
    44  		ReadlinkName: sep + "linkdest",
    45  	}
    46  	err = doCopy(fake, sep+"link", sep+"dest")
    47  	if err != nil {
    48  		t.Error(err)
    49  	}
    50  	if fake.SymlinkNewname != sep+"dest" {
    51  		t.Error(fake.SymlinkNewname)
    52  	}
    53  	if fake.SymlinkOldname != sep+"linkdest" {
    54  		t.Error(fake.SymlinkOldname)
    55  	}
    56  
    57  	// test non-broken symlink copy
    58  	fake = &testfs.FakeFileSystem{
    59  		Files: []os.FileInfo{
    60  			&FileInfo{FileName: "file", FileMode: 0600},
    61  			&FileInfo{FileName: "link", FileMode: os.ModeSymlink},
    62  		},
    63  		OpenContent:  "test",
    64  		ReadlinkName: sep + "file",
    65  	}
    66  	err = doCopy(fake, sep+"link", sep+"dest")
    67  	if fake.CreateFile != sep+"dest" {
    68  		t.Error(fake.CreateFile)
    69  	}
    70  	if fake.CreateContent.String() != "test" {
    71  		t.Error(fake.CreateContent.String())
    72  	}
    73  	if !reflect.DeepEqual(fake.ChmodFile, []string{sep + "dest"}) {
    74  		t.Error(fake.ChmodFile)
    75  	}
    76  	if fake.ChmodMode != 0600 {
    77  		t.Error(fake.ChmodMode)
    78  	}
    79  }