/pkg/symlink/fs_test.go
Go | 121 lines | 95 code | 26 blank | 0 comment | 34 complexity | 29dcb2cc46e2cae2d49171a23ef29731 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, Apache-2.0, BSD-2-Clause, CC-BY-4.0, 0BSD, CC-BY-SA-4.0, GPL-2.0, BSD-3-Clause, MIT
- package symlink
- import (
- "io/ioutil"
- "os"
- "path/filepath"
- "testing"
- )
- func abs(t *testing.T, p string) string {
- o, err := filepath.Abs(p)
- if err != nil {
- t.Fatal(err)
- }
- return o
- }
- func TestFollowSymLinkNormal(t *testing.T) {
- link := "testdata/fs/a/d/c/data"
- rewrite, err := FollowSymlinkInScope(link, "testdata")
- if err != nil {
- t.Fatal(err)
- }
- if expected := abs(t, "testdata/b/c/data"); expected != rewrite {
- t.Fatalf("Expected %s got %s", expected, rewrite)
- }
- }
- func TestFollowSymLinkRelativePath(t *testing.T) {
- link := "testdata/fs/i"
- rewrite, err := FollowSymlinkInScope(link, "testdata")
- if err != nil {
- t.Fatal(err)
- }
- if expected := abs(t, "testdata/fs/a"); expected != rewrite {
- t.Fatalf("Expected %s got %s", expected, rewrite)
- }
- }
- func TestFollowSymLinkUnderLinkedDir(t *testing.T) {
- dir, err := ioutil.TempDir("", "docker-fs-test")
- if err != nil {
- t.Fatal(err)
- }
- os.Mkdir(filepath.Join(dir, "realdir"), 0700)
- os.Symlink("realdir", filepath.Join(dir, "linkdir"))
- linkDir := filepath.Join(dir, "linkdir", "foo")
- dirUnderLinkDir := filepath.Join(dir, "linkdir", "foo", "bar")
- os.MkdirAll(dirUnderLinkDir, 0700)
- rewrite, err := FollowSymlinkInScope(dirUnderLinkDir, linkDir)
- if err != nil {
- t.Fatal(err)
- }
- if rewrite != dirUnderLinkDir {
- t.Fatalf("Expected %s got %s", dirUnderLinkDir, rewrite)
- }
- }
- func TestFollowSymLinkRandomString(t *testing.T) {
- if _, err := FollowSymlinkInScope("toto", "testdata"); err == nil {
- t.Fatal("Random string should fail but didn't")
- }
- }
- func TestFollowSymLinkLastLink(t *testing.T) {
- link := "testdata/fs/a/d"
- rewrite, err := FollowSymlinkInScope(link, "testdata")
- if err != nil {
- t.Fatal(err)
- }
- if expected := abs(t, "testdata/b"); expected != rewrite {
- t.Fatalf("Expected %s got %s", expected, rewrite)
- }
- }
- func TestFollowSymLinkRelativeLink(t *testing.T) {
- link := "testdata/fs/a/e/c/data"
- rewrite, err := FollowSymlinkInScope(link, "testdata")
- if err != nil {
- t.Fatal(err)
- }
- if expected := abs(t, "testdata/fs/b/c/data"); expected != rewrite {
- t.Fatalf("Expected %s got %s", expected, rewrite)
- }
- }
- func TestFollowSymLinkRelativeLinkScope(t *testing.T) {
- link := "testdata/fs/a/f"
- rewrite, err := FollowSymlinkInScope(link, "testdata")
- if err != nil {
- t.Fatal(err)
- }
- if expected := abs(t, "testdata/test"); expected != rewrite {
- t.Fatalf("Expected %s got %s", expected, rewrite)
- }
- link = "testdata/fs/b/h"
- rewrite, err = FollowSymlinkInScope(link, "testdata")
- if err != nil {
- t.Fatal(err)
- }
- if expected := abs(t, "testdata/root"); expected != rewrite {
- t.Fatalf("Expected %s got %s", expected, rewrite)
- }
- }