69d88505fd
Our git version is v2+ for some time now, but go.mod still declared v1. Hopefully making both match makes https://pkg.go.dev/github.com/rfjakob/gocryptfs/v2 work. All the import paths have been fixed like this: find . -name \*.go | xargs sed -i s%github.com/rfjakob/gocryptfs/%github.com/rfjakob/gocryptfs/v2/%
81 lines
2.2 KiB
Go
81 lines
2.2 KiB
Go
package example_filesystems
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/rfjakob/gocryptfs/v2/tests/test_helpers"
|
|
)
|
|
|
|
const statusTxtContent = "It works!\n"
|
|
|
|
// checkExampleFS - verify that "dir" contains the expected test files
|
|
func checkExampleFS(t *testing.T, dir string, rw bool) {
|
|
// Read regular file
|
|
statusFile := filepath.Join(dir, "status.txt")
|
|
contentBytes, err := ioutil.ReadFile(statusFile)
|
|
if err != nil {
|
|
t.Error(err)
|
|
return
|
|
}
|
|
content := string(contentBytes)
|
|
if content != statusTxtContent {
|
|
t.Errorf("Unexpected content: %s\n", content)
|
|
}
|
|
// Read relative symlink
|
|
symlink := filepath.Join(dir, "rel")
|
|
target, err := os.Readlink(symlink)
|
|
if err != nil {
|
|
t.Error(err)
|
|
return
|
|
}
|
|
if target != "status.txt" {
|
|
t.Errorf("Unexpected link target: %s\n", target)
|
|
}
|
|
// Read absolute symlink
|
|
symlink = filepath.Join(dir, "abs")
|
|
target, err = os.Readlink(symlink)
|
|
if err != nil {
|
|
t.Error(err)
|
|
return
|
|
}
|
|
if target != "/a/b/c/d" {
|
|
t.Errorf("Unexpected link target: %s\n", target)
|
|
}
|
|
if rw {
|
|
// Test directory operations
|
|
test_helpers.TestRename(t, dir)
|
|
test_helpers.TestMkdirRmdir(t, dir)
|
|
}
|
|
}
|
|
|
|
// checkExampleFSLongnames - verify that "dir" contains the expected test files
|
|
// plus the long file name test file.
|
|
// Also tests simple directory operations.
|
|
func checkExampleFSLongnames(t *testing.T, dir string) {
|
|
checkExampleFSrw(t, dir, true)
|
|
}
|
|
|
|
// checkExampleFSrw is like checkExampleFSLongnames but gives the caller the
|
|
// choice if he wants to run tests that write to the FS.
|
|
func checkExampleFSrw(t *testing.T, dir string, rw bool) {
|
|
// regular tests
|
|
checkExampleFS(t, dir, rw)
|
|
// long name test file
|
|
longname := "longname_255_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +
|
|
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +
|
|
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +
|
|
"xxxxxxxxxxxxxxxxxxxxxxxx"
|
|
contentBytes, err := ioutil.ReadFile(filepath.Join(dir, longname))
|
|
if err != nil {
|
|
t.Error(err)
|
|
return
|
|
}
|
|
content := string(contentBytes)
|
|
if content != statusTxtContent {
|
|
t.Errorf("longname_255: unexpected content: %s\n", content)
|
|
}
|
|
}
|