diff options
| author | Jakob Unterwurzacher | 2018-04-02 18:43:50 +0200 | 
|---|---|---|
| committer | Jakob Unterwurzacher | 2018-04-02 18:43:50 +0200 | 
| commit | a0fd3eca98218aa7d165080ab20cf234330e5e09 (patch) | |
| tree | 08ea2eae6946f26316576af043fba428f37da14c | |
| parent | b6c8960b01f9e5366814b0dada57a0b1e6a031d9 (diff) | |
fsck: test against example_filesystems
| -rw-r--r-- | internal/configfile/config_file.go | 2 | ||||
| -rw-r--r-- | internal/exitcodes/exitcodes.go | 2 | ||||
| -rw-r--r-- | tests/fsck/fsck_test.go | 40 | 
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) +		} +	} +} | 
