lib/fs: Fix and update error about inotify watch limit (fixes #4833) (#4835)

This commit is contained in:
Simon Frei
2018-03-23 12:56:38 +01:00
committed by Jakob Borg
parent e7dc2f9190
commit da3b38ccce
4 changed files with 39 additions and 26 deletions

View File

@@ -10,11 +10,13 @@ package fs
import (
"context"
"errors"
"fmt"
"os"
"path/filepath"
"runtime"
"strconv"
"syscall"
"testing"
"time"
@@ -178,6 +180,34 @@ func TestWatchOverflow(t *testing.T) {
testScenario(t, name, testCase, expectedEvents, allowedEvents, "")
}
func TestWatchErrorLinuxInterpretation(t *testing.T) {
if runtime.GOOS != "linux" {
t.Skip("testing of linux specific error codes")
}
var errTooManyFiles = &os.PathError{
Op: "error while traversing",
Path: "foo",
Err: syscall.Errno(24),
}
var errNoSpace = &os.PathError{
Op: "error while traversing",
Path: "bar",
Err: syscall.Errno(28),
}
if !reachedMaxUserWatches(errTooManyFiles) {
t.Error("Underlying error syscall.Errno(24) should be recognised to be about inotify limits.")
}
if !reachedMaxUserWatches(errNoSpace) {
t.Error("Underlying error syscall.Errno(28) should be recognised to be about inotify limits.")
}
err := errors.New("Another error")
if reachedMaxUserWatches(err) {
t.Errorf("This error does not concern inotify limits: %#v", err)
}
}
// path relative to folder root, also creates parent dirs if necessary
func createTestFile(name string, file string) string {
joined := filepath.Join(name, file)