From b2ed32b1181ede9324cc47474364d1eeb43da2b9 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Fri, 12 Dec 2014 21:39:03 +0100 Subject: [PATCH] Command -generate should work on non-existent dir --- cmd/syncthing/main.go | 11 +++++++---- test/cli_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/cmd/syncthing/main.go b/cmd/syncthing/main.go index d10d2b80..5bd48b7e 100644 --- a/cmd/syncthing/main.go +++ b/cmd/syncthing/main.go @@ -261,12 +261,15 @@ func main() { } info, err := os.Stat(dir) - if err != nil { - l.Fatalln("generate:", err) - } - if !info.IsDir() { + if err == nil && !info.IsDir() { l.Fatalln(dir, "is not a directory") } + if err!=nil&&os.IsNotExist(err){ + err=os.MkdirAll(dir, 0700) + if err != nil { + l.Fatalln("generate:",err) + } + } cert, err := loadCert(dir, "") if err == nil { diff --git a/test/cli_test.go b/test/cli_test.go index 8442230a..6cefdaed 100644 --- a/test/cli_test.go +++ b/test/cli_test.go @@ -54,3 +54,29 @@ func TestCLIReset(t *testing.T) { } } } + +func TestCLIGenerate(t *testing.T) { + err := os.RemoveAll("home.out") + if err != nil { + t.Fatal(err) + } + + // -generate should create a bunch of stuff + + cmd := exec.Command("../bin/syncthing", "-generate", "home.out") + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stdout + err = cmd.Run() + if err != nil { + t.Fatal(err) + } + + // Verify that the files that should have been created have been + + for _, f := range []string{"home.out/config.xml", "home.out/cert.pem", "home.out/key.pem"} { + _, err := os.Stat(f) + if err != nil { + t.Errorf("%s is not correctly generated", f) + } + } +}