From 993b19c19c26eac480d88cc67bfe7455e67faada Mon Sep 17 00:00:00 2001
From: Jakob Unterwurzacher
Date: Sun, 6 Sep 2020 11:35:25 +0200
Subject: gocryptfs -init: fix wrong exit code on non-empty dir

Fixes https://github.com/rfjakob/gocryptfs/pull/503
---
 tests/cli/cli_test.go | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

(limited to 'tests/cli')

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)
+	}
+}
-- 
cgit v1.2.3