summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/configfile/config_file.go2
-rw-r--r--internal/exitcodes/exitcodes.go2
-rw-r--r--tests/fsck/fsck_test.go40
3 files changed, 43 insertions, 1 deletions
diff --git a/internal/configfile/config_file.go b/internal/configfile/config_file.go
index 3fd16c7..753dd72 100644
--- a/internal/configfile/config_file.go
+++ b/internal/configfile/config_file.go
@@ -169,7 +169,7 @@ func LoadConfFile(filename string, password []byte) ([]byte, *ConfFile, error) {
`+"\033[0m")
- return nil, nil, fmt.Errorf("Deprecated filesystem")
+ return nil, nil, exitcodes.NewErr("Deprecated filesystem", exitcodes.DeprecatedFS)
}
if len(password) == 0 {
// We have validated the config file, but without a password we cannot
diff --git a/internal/exitcodes/exitcodes.go b/internal/exitcodes/exitcodes.go
index 36f2aae..fc65166 100644
--- a/internal/exitcodes/exitcodes.go
+++ b/internal/exitcodes/exitcodes.go
@@ -63,6 +63,8 @@ const (
Profiler = 25
// FsckErrors - the filesystem check found errors
FsckErrors = 26
+ // DeprecatedFS - this filesystem is deprecated
+ DeprecatedFS = 27
)
// Err wraps an error with an associated numeric exit code
diff --git a/tests/fsck/fsck_test.go b/tests/fsck/fsck_test.go
index b5bbf84..77f94c3 100644
--- a/tests/fsck/fsck_test.go
+++ b/tests/fsck/fsck_test.go
@@ -1,7 +1,9 @@
package fsck
import (
+ "os"
"os/exec"
+ "strings"
"testing"
"github.com/rfjakob/gocryptfs/internal/exitcodes"
@@ -18,3 +20,41 @@ func TestBrokenFsV14(t *testing.T) {
t.Errorf("wrong exit code, have=%d want=%d", code, exitcodes.FsckErrors)
}
}
+
+func TestExampleFses(t *testing.T) {
+ dirfd, err := os.Open("../example_filesystems")
+ if err != nil {
+ t.Fatal(err)
+ }
+ var fsNames []string
+ entries, err := dirfd.Readdir(0)
+ if err != nil {
+ t.Fatal(err)
+ }
+ for _, e := range entries {
+ if !e.IsDir() {
+ continue
+ }
+ if strings.Contains(e.Name(), "reverse") {
+ continue
+ }
+ if e.Name() == "content" {
+ continue
+ }
+ fsNames = append(fsNames, e.Name())
+ }
+ for _, n := range fsNames {
+ path := "../example_filesystems/" + n
+ cmd := exec.Command(test_helpers.GocryptfsBinary, "-fsck", "-extpass", "echo test", path)
+ outBin, err := cmd.CombinedOutput()
+ out := string(outBin)
+ code := test_helpers.ExtractCmdExitCode(err)
+ if code == exitcodes.DeprecatedFS {
+ continue
+ }
+ if code != 0 {
+ t.Log(out)
+ t.Errorf("fsck returned code %d but fs should be clean", code)
+ }
+ }
+}