mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-21 10:27:46 +08:00
Skip errors due to fuse missing on OSX
This commit is contained in:
parent
1682880df1
commit
8e2016274f
@ -12,6 +12,8 @@ import (
|
||||
"sync"
|
||||
"testing"
|
||||
|
||||
"bazil.org/fuse"
|
||||
|
||||
core "github.com/ipfs/go-ipfs/core"
|
||||
|
||||
fstest "bazil.org/fuse/fs/fstestutil"
|
||||
@ -106,6 +108,7 @@ func (m *mountWrap) Close() error {
|
||||
}
|
||||
|
||||
func setupIpnsTest(t *testing.T, node *core.IpfsNode) (*core.IpfsNode, *mountWrap) {
|
||||
t.Helper()
|
||||
maybeSkipFuseTests(t)
|
||||
|
||||
var err error
|
||||
@ -126,8 +129,11 @@ func setupIpnsTest(t *testing.T, node *core.IpfsNode) (*core.IpfsNode, *mountWra
|
||||
t.Fatal(err)
|
||||
}
|
||||
mnt, err := fstest.MountedT(t, fs, nil)
|
||||
if err == fuse.ErrOSXFUSENotFound {
|
||||
t.Skip(err)
|
||||
}
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
t.Fatalf("error mounting at temporary directory: %v", err)
|
||||
}
|
||||
|
||||
return node, &mountWrap{
|
||||
|
||||
@ -5,6 +5,7 @@ package node
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"runtime"
|
||||
"strings"
|
||||
@ -22,10 +23,10 @@ func init() {
|
||||
|
||||
// dontCheckOSXFUSEConfigKey is a key used to let the user tell us to
|
||||
// skip fuse checks.
|
||||
var dontCheckOSXFUSEConfigKey = "DontCheckOSXFUSE"
|
||||
const dontCheckOSXFUSEConfigKey = "DontCheckOSXFUSE"
|
||||
|
||||
// fuseVersionPkg is the go pkg url for fuse-version
|
||||
var fuseVersionPkg = "github.com/jbenet/go-fuse-version/fuse-version"
|
||||
const fuseVersionPkg = "github.com/jbenet/go-fuse-version/fuse-version"
|
||||
|
||||
// errStrFuseRequired is returned when we're sure the user does not have fuse.
|
||||
var errStrFuseRequired = `OSXFUSE not found.
|
||||
@ -58,7 +59,12 @@ For more help, see:
|
||||
https://github.com/ipfs/go-ipfs/issues/177
|
||||
`
|
||||
|
||||
var errStrNeedFuseVersion = `unable to check fuse version.
|
||||
type errNeedFuseVersion struct {
|
||||
cause string
|
||||
}
|
||||
|
||||
func (me errNeedFuseVersion) Error() string {
|
||||
return fmt.Sprintf(`unable to check fuse version.
|
||||
|
||||
Dear User,
|
||||
|
||||
@ -79,7 +85,8 @@ version you have by running:
|
||||
[1]: https://github.com/ipfs/go-ipfs/issues/177
|
||||
[2]: https://github.com/ipfs/go-ipfs/pull/533
|
||||
[3]: %s
|
||||
`
|
||||
`, fuseVersionPkg, dontCheckOSXFUSEConfigKey, me.cause)
|
||||
}
|
||||
|
||||
var errStrFailedToRunFuseVersion = `unable to check fuse version.
|
||||
|
||||
@ -211,13 +218,13 @@ func ensureFuseVersionIsInstalled() error {
|
||||
|
||||
log.Debug("fuse-version: failed to install.")
|
||||
s := err.Error() + "\n" + cmdoutstr
|
||||
return fmt.Errorf(errStrNeedFuseVersion, fuseVersionPkg, dontCheckOSXFUSEConfigKey, s)
|
||||
return errNeedFuseVersion{s}
|
||||
}
|
||||
|
||||
// ok, try again...
|
||||
if _, err := exec.LookPath("fuse-version"); err != nil {
|
||||
log.Debug("fuse-version: failed to install?")
|
||||
return fmt.Errorf(errStrNeedFuseVersion, fuseVersionPkg, dontCheckOSXFUSEConfigKey, err)
|
||||
return errNeedFuseVersion{err.Error()}
|
||||
}
|
||||
|
||||
log.Debug("fuse-version: install success")
|
||||
|
||||
@ -8,6 +8,8 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"bazil.org/fuse"
|
||||
|
||||
"context"
|
||||
|
||||
core "github.com/ipfs/go-ipfs/core"
|
||||
@ -61,8 +63,11 @@ func TestExternalUnmount(t *testing.T) {
|
||||
mkdir(t, ipnsDir)
|
||||
|
||||
err = Mount(node, ipfsDir, ipnsDir)
|
||||
if _, ok := err.(errNeedFuseVersion); ok || err == fuse.ErrOSXFUSENotFound {
|
||||
t.Skip(err)
|
||||
}
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
t.Fatalf("error mounting: %v", err)
|
||||
}
|
||||
|
||||
// Run shell command to externally unmount the directory
|
||||
|
||||
@ -15,6 +15,8 @@ import (
|
||||
"sync"
|
||||
"testing"
|
||||
|
||||
"bazil.org/fuse"
|
||||
|
||||
core "github.com/ipfs/go-ipfs/core"
|
||||
coreapi "github.com/ipfs/go-ipfs/core/coreapi"
|
||||
coremock "github.com/ipfs/go-ipfs/core/mock"
|
||||
@ -50,6 +52,7 @@ func randObj(t *testing.T, nd *core.IpfsNode, size int64) (ipld.Node, []byte) {
|
||||
}
|
||||
|
||||
func setupIpfsTest(t *testing.T, node *core.IpfsNode) (*core.IpfsNode, *fstest.Mount) {
|
||||
t.Helper()
|
||||
maybeSkipFuseTests(t)
|
||||
|
||||
var err error
|
||||
@ -62,8 +65,11 @@ func setupIpfsTest(t *testing.T, node *core.IpfsNode) (*core.IpfsNode, *fstest.M
|
||||
|
||||
fs := NewFileSystem(node)
|
||||
mnt, err := fstest.MountedT(t, fs, nil)
|
||||
if err == fuse.ErrOSXFUSENotFound {
|
||||
t.Skip(err)
|
||||
}
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
t.Fatalf("error mounting temporary directory: %v", err)
|
||||
}
|
||||
|
||||
return node, mnt
|
||||
|
||||
Loading…
Reference in New Issue
Block a user