diff options
-rw-r--r-- | init_dir.go | 2 | ||||
-rw-r--r-- | tests/cli/cli_test.go | 20 |
2 files changed, 21 insertions, 1 deletions
diff --git a/init_dir.go b/init_dir.go index 5939598..19fabcf 100644 --- a/init_dir.go +++ b/init_dir.go @@ -63,7 +63,7 @@ func initDir(args *argContainer) { err = isEmptyDir(args.cipherdir) if err != nil { tlog.Fatal.Printf("Invalid cipherdir: %v", err) - os.Exit(exitcodes.Init) + os.Exit(exitcodes.CipherDir) } } // Choose password for config file diff --git a/tests/cli/cli_test.go b/tests/cli/cli_test.go index bb1558c..6aa2feb 100644 --- a/tests/cli/cli_test.go +++ b/tests/cli/cli_test.go @@ -800,3 +800,23 @@ func TestPassfileX2(t *testing.T) { test_helpers.MountOrFatal(t, dir, mnt, "-passfile="+passfile1, "-passfile="+passfile2) defer test_helpers.UnmountPanic(mnt) } + +// TestInitNotEmpty checks that `gocryptfs -init` returns the right error code +// if CIPHERDIR is not empty. See https://github.com/rfjakob/gocryptfs/pull/503 +func TestInitNotEmpty(t *testing.T) { + dir := test_helpers.TmpDir + "/" + t.Name() + if err := os.Mkdir(dir, 0700); err != nil { + t.Fatal(err) + } + if err := ioutil.WriteFile(dir+"/foo", nil, 0700); err != nil { + t.Fatal(err) + } + cmd := exec.Command(test_helpers.GocryptfsBinary, "-init", "-extpass", "echo test", dir) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + err := cmd.Run() + exitCode := test_helpers.ExtractCmdExitCode(err) + if exitCode != exitcodes.CipherDir { + t.Fatalf("wrong exit code: have=%d, want=%d", exitCode, exitcodes.CipherDir) + } +} |