aboutsummaryrefslogtreecommitdiff
path: root/tests/fsck/fsck_test.go
diff options
context:
space:
mode:
authorJakob Unterwurzacher2018-04-02 18:43:50 +0200
committerJakob Unterwurzacher2018-04-02 18:43:50 +0200
commita0fd3eca98218aa7d165080ab20cf234330e5e09 (patch)
tree08ea2eae6946f26316576af043fba428f37da14c /tests/fsck/fsck_test.go
parentb6c8960b01f9e5366814b0dada57a0b1e6a031d9 (diff)
fsck: test against example_filesystems
Diffstat (limited to 'tests/fsck/fsck_test.go')
-rw-r--r--tests/fsck/fsck_test.go40
1 files changed, 40 insertions, 0 deletions
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)
+ }
+ }
+}