mirror of https://github.com/databricks/cli.git
89 lines
3.0 KiB
Go
89 lines
3.0 KiB
Go
package repofiles
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestRepoFilesRemotePath(t *testing.T) {
|
|
repoRoot := "/Repos/doraemon/bar"
|
|
repoFiles := Create(repoRoot, "/doraemon/foo/bar", nil, nil)
|
|
|
|
remotePath, err := repoFiles.RemotePath("a/b/c")
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, repoRoot+"/a/b/c", remotePath)
|
|
|
|
remotePath, err = repoFiles.RemotePath("a/b/../d")
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, repoRoot+"/a/d", remotePath)
|
|
|
|
remotePath, err = repoFiles.RemotePath("a/../c")
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, repoRoot+"/c", remotePath)
|
|
|
|
remotePath, err = repoFiles.RemotePath("a/b/c/.")
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, repoRoot+"/a/b/c", remotePath)
|
|
|
|
remotePath, err = repoFiles.RemotePath("a/b/c/d/./../../f/g")
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, repoRoot+"/a/b/f/g", remotePath)
|
|
|
|
_, err = repoFiles.RemotePath("..")
|
|
assert.ErrorContains(t, err, `relative file path is not inside repo root: ..`)
|
|
|
|
_, err = repoFiles.RemotePath("a/../..")
|
|
assert.ErrorContains(t, err, `relative file path is not inside repo root: a/../..`)
|
|
|
|
_, err = repoFiles.RemotePath("./../.")
|
|
assert.ErrorContains(t, err, `relative file path is not inside repo root: ./../.`)
|
|
|
|
_, err = repoFiles.RemotePath("/./.././..")
|
|
assert.ErrorContains(t, err, `relative file path is not inside repo root: /./.././..`)
|
|
|
|
_, err = repoFiles.RemotePath("./../.")
|
|
assert.ErrorContains(t, err, `relative file path is not inside repo root: ./../.`)
|
|
|
|
_, err = repoFiles.RemotePath("./..")
|
|
assert.ErrorContains(t, err, `relative file path is not inside repo root: ./..`)
|
|
|
|
_, err = repoFiles.RemotePath("./../../..")
|
|
assert.ErrorContains(t, err, `relative file path is not inside repo root: ./../../..`)
|
|
|
|
_, err = repoFiles.RemotePath("./../a/./b../../..")
|
|
assert.ErrorContains(t, err, `relative file path is not inside repo root: ./../a/./b../../..`)
|
|
|
|
_, err = repoFiles.RemotePath("../..")
|
|
assert.ErrorContains(t, err, `relative file path is not inside repo root: ../..`)
|
|
|
|
_, err = repoFiles.RemotePath(".//a/..//./b/..")
|
|
assert.ErrorContains(t, err, `file path relative to repo root cannot be empty`)
|
|
|
|
_, err = repoFiles.RemotePath("a/b/../..")
|
|
assert.ErrorContains(t, err, "file path relative to repo root cannot be empty")
|
|
|
|
_, err = repoFiles.RemotePath("")
|
|
assert.ErrorContains(t, err, "file path relative to repo root cannot be empty")
|
|
|
|
_, err = repoFiles.RemotePath(".")
|
|
assert.ErrorContains(t, err, "file path relative to repo root cannot be empty")
|
|
|
|
_, err = repoFiles.RemotePath("/")
|
|
assert.ErrorContains(t, err, "file path relative to repo root cannot be empty")
|
|
}
|
|
|
|
func TestRepoReadLocal(t *testing.T) {
|
|
tempDir := t.TempDir()
|
|
helloPath := filepath.Join(tempDir, "hello.txt")
|
|
err := os.WriteFile(helloPath, []byte("my name is doraemon :P"), os.ModePerm)
|
|
assert.NoError(t, err)
|
|
|
|
repoFiles := Create("/Repos/doraemon/bar", tempDir, nil, nil)
|
|
bytes, err := repoFiles.readLocal("./a/../hello.txt")
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, "my name is doraemon :P", string(bytes))
|
|
}
|