1
0
mirror of https://github.com/ipfs/kubo.git synced 2025-05-17 15:06:47 +08:00
Files
kubo/repo/fsrepo/migrations/ipfsdir_test.go
Jorropo a433064d72 chore: replace ioutil with io and os (#8969)
Co-authored-by: Håvard Anda Estensen <haavard.ae@gmail.com>
2022-06-14 12:37:02 -04:00

154 lines
2.9 KiB
Go

package migrations
import (
"os"
"path/filepath"
"testing"
)
var (
fakeHome string
fakeIpfs string
)
func TestRepoDir(t *testing.T) {
fakeHome = t.TempDir()
os.Setenv("HOME", fakeHome)
fakeIpfs = filepath.Join(fakeHome, ".ipfs")
t.Run("testIpfsDir", testIpfsDir)
t.Run("testCheckIpfsDir", testCheckIpfsDir)
t.Run("testRepoVersion", testRepoVersion)
}
func testIpfsDir(t *testing.T) {
_, err := CheckIpfsDir("")
if err == nil {
t.Fatal("expected error when no .ipfs directory to find")
}
err = os.Mkdir(fakeIpfs, os.ModePerm)
if err != nil {
panic(err)
}
dir, err := IpfsDir("")
if err != nil {
t.Fatal(err)
}
if dir != fakeIpfs {
t.Fatal("wrong ipfs directory:", dir)
}
os.Setenv(envIpfsPath, "~/.ipfs")
dir, err = IpfsDir("")
if err != nil {
t.Fatal(err)
}
if dir != fakeIpfs {
t.Fatal("wrong ipfs directory:", dir)
}
_, err = IpfsDir("~somesuer/foo")
if err == nil {
t.Fatal("expected error with user-specific home dir")
}
err = os.Setenv(envIpfsPath, "~somesuer/foo")
if err != nil {
panic(err)
}
_, err = IpfsDir("~somesuer/foo")
if err == nil {
t.Fatal("expected error with user-specific home dir")
}
err = os.Unsetenv(envIpfsPath)
if err != nil {
panic(err)
}
dir, err = IpfsDir("~/.ipfs")
if err != nil {
t.Fatal(err)
}
if dir != fakeIpfs {
t.Fatal("wrong ipfs directory:", dir)
}
_, err = IpfsDir("")
if err != nil {
t.Fatal(err)
}
}
func testCheckIpfsDir(t *testing.T) {
_, err := CheckIpfsDir("~somesuer/foo")
if err == nil {
t.Fatal("expected error with user-specific home dir")
}
_, err = CheckIpfsDir("~/no_such_dir")
if err == nil {
t.Fatal("expected error from nonexistent directory")
}
dir, err := CheckIpfsDir("~/.ipfs")
if err != nil {
t.Fatal(err)
}
if dir != fakeIpfs {
t.Fatal("wrong ipfs directory:", dir)
}
}
func testRepoVersion(t *testing.T) {
badDir := "~somesuer/foo"
_, err := RepoVersion(badDir)
if err == nil {
t.Fatal("expected error with user-specific home dir")
}
_, err = RepoVersion(fakeIpfs)
if !os.IsNotExist(err) {
t.Fatal("expected not-exist error")
}
testVer := 42
err = WriteRepoVersion(fakeIpfs, testVer)
if err != nil {
t.Fatal(err)
}
var ver int
ver, err = RepoVersion(fakeIpfs)
if err != nil {
t.Fatal(err)
}
if ver != testVer {
t.Fatalf("expected version %d, got %d", testVer, ver)
}
err = WriteRepoVersion(badDir, testVer)
if err == nil {
t.Fatal("expected error with user-specific home dir")
}
ipfsDir, err := IpfsDir(fakeIpfs)
if err != nil {
t.Fatal(err)
}
vFilePath := filepath.Join(ipfsDir, versionFile)
err = os.WriteFile(vFilePath, []byte("bad-version-data\n"), 0644)
if err != nil {
panic(err)
}
_, err = RepoVersion(fakeIpfs)
if err == nil || err.Error() != "invalid data in repo version file" {
t.Fatal("expected 'invalid data' error")
}
err = WriteRepoVersion(fakeIpfs, testVer)
if err != nil {
t.Fatal(err)
}
}