Skip to content

Commit 6e6eea5

Browse files
committed
ErrNotFound, IsNotFound(err)
1 parent c012f5d commit 6e6eea5

File tree

5 files changed

+29
-14
lines changed

5 files changed

+29
-14
lines changed

gopmod/classfile.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@
1717
package gopmod
1818

1919
import (
20-
"syscall"
21-
20+
"github.com/goplus/mod"
2221
"github.com/goplus/mod/modcache"
2322
"github.com/goplus/mod/modfetch"
2423
"github.com/goplus/mod/modfile"
@@ -46,9 +45,17 @@ var (
4645
)
4746

4847
var (
48+
ErrNotFound = mod.ErrNotFound
4949
ErrNotClassFileMod = errors.New("not a classfile module")
5050
)
5151

52+
// IsNotFound returns a boolean indicating whether the error is known to
53+
// report that a module or package does not exist. It is satisfied by
54+
// ErrNotFound.
55+
func IsNotFound(err error) bool {
56+
return errors.Err(err) == ErrNotFound
57+
}
58+
5259
// -----------------------------------------------------------------------------
5360

5461
// ClassKind checks a fname is a known classfile or not.
@@ -98,10 +105,10 @@ func (p *Module) ImportClasses(importClass ...func(c *Project)) (err error) {
98105
func (p *Module) importMod(modPath string, imcls func(c *Project)) (err error) {
99106
mod, ok := p.LookupDepMod(modPath)
100107
if !ok {
101-
return syscall.ENOENT
108+
return ErrNotFound
102109
}
103110
err = p.importClassFrom(mod, imcls)
104-
if errors.Err(err) != syscall.ENOENT {
111+
if !IsNotFound(err) {
105112
return
106113
}
107114
mod, err = modfetch.Get(mod.String())

gopmod/gopmod_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@ func TestClassfile(t *testing.T) {
8585
if !mod.IsClass("_yap.gox") {
8686
t.Fatal("mod.IsClass _yap.gox: not ok?")
8787
}
88+
89+
modVer = module.Version{Path: "github.com/unknown-repo/x", Version: "v0.5.0"}
90+
if _, err = LoadMod(modVer); !IsNotFound(err) {
91+
log.Fatal("LoadMod github.com/unknown-repo/x:", err)
92+
}
8893
}
8994

9095
func TestClassfile2(t *testing.T) {

gopmod/module.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222
"path/filepath"
2323
"runtime"
2424
"strings"
25-
"syscall"
2625

2726
"github.com/goplus/mod/modcache"
2827
"github.com/goplus/mod/modfetch"
@@ -173,7 +172,7 @@ func LoadFrom(gomod, gopmod string) (*Module, error) {
173172
// If we only want to load a Go modfile, pass env parameter as nil.
174173
func LoadMod(mod module.Version) (p *Module, err error) {
175174
p, err = loadModFrom(mod)
176-
if errors.Err(err) != syscall.ENOENT {
175+
if !IsNotFound(err) {
177176
return
178177
}
179178
mod, err = modfetch.Get(mod.String())

mod.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ import (
2323
"syscall"
2424
)
2525

26+
var (
27+
ErrNotFound = syscall.ENOENT
28+
)
29+
2630
// -----------------------------------------------------------------------------
2731

2832
func FindGoMod(dirFrom string) (dir, file string, err error) {
@@ -41,7 +45,7 @@ func FindGoMod(dirFrom string) (dir, file string, err error) {
4145
break
4246
}
4347
}
44-
err = syscall.ENOENT
48+
err = ErrNotFound
4549
return
4650
}
4751

modfetch/fetch.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ import (
2727
"os/exec"
2828
"path/filepath"
2929
"strings"
30-
"syscall"
3130

31+
xmod "github.com/goplus/mod"
3232
"github.com/goplus/mod/modcache"
3333
"golang.org/x/mod/module"
3434
"golang.org/x/mod/semver"
@@ -172,7 +172,7 @@ func Get(modPath string, noCache ...bool) (mod module.Version, err error) {
172172
}
173173
if noCache == nil || !noCache[0] {
174174
mod, err = getFromCache(modPath)
175-
if err != syscall.ENOENT {
175+
if err != xmod.ErrNotFound {
176176
return
177177
}
178178
}
@@ -190,7 +190,7 @@ func Get(modPath string, noCache ...bool) (mod module.Version, err error) {
190190
cmd.Run()
191191
if stderr.Len() > 0 {
192192
mod, err = getResult(stderr.String())
193-
if err != syscall.ENOENT {
193+
if err != xmod.ErrNotFound {
194194
if debugVerbose {
195195
log.Println("modfetch.Get ret:", err)
196196
}
@@ -212,7 +212,7 @@ func getResult(data string) (mod module.Version, err error) {
212212
}
213213
return getMod(data[len(downloading):], nil)
214214
}
215-
err = syscall.ENOENT
215+
err = xmod.ErrNotFound
216216
return
217217
}
218218

@@ -227,7 +227,7 @@ func getMod(data string, next *string) (mod module.Version, err error) {
227227
return
228228
}
229229
}
230-
err = syscall.ENOENT
230+
err = xmod.ErrNotFound
231231
return
232232
}
233233

@@ -252,7 +252,7 @@ func lookupFromCache(modPath string) (modRoot string, mod module.Version, err er
252252
if pos > 0 { // has version
253253
fi, e := os.Stat(modRoot)
254254
if e != nil || !fi.IsDir() {
255-
err = syscall.ENOENT
255+
err = xmod.ErrNotFound
256256
}
257257
return
258258
}
@@ -262,7 +262,7 @@ func lookupFromCache(modPath string) (modRoot string, mod module.Version, err er
262262
err = errors.Unwrap(err)
263263
return
264264
}
265-
err = syscall.ENOENT
265+
err = xmod.ErrNotFound
266266
for _, fi := range fis {
267267
if fi.IsDir() {
268268
if name := fi.Name(); strings.HasPrefix(name, fname) {

0 commit comments

Comments
 (0)