diff --git a/Makefile b/Makefile index 7bae6f4..aa9a517 100644 --- a/Makefile +++ b/Makefile @@ -1,16 +1,15 @@ -all: update lint fmt test +all: lint fmt test update: go get -u ./... go mod tidy lint: + go vet ./... golangci-lint run fmt: - go install mvdan.cc/gofumpt@latest go fmt ./... - gofumpt -w . test: go test -v ./... diff --git a/main.go b/main.go index 2d1e643..2cb56bb 100644 --- a/main.go +++ b/main.go @@ -17,13 +17,13 @@ const ( ) func main() { - if err := run(os.Args, os.Stdin, os.Stdout); err != nil { + if err := run(os.Args, os.Stdout, os.Stderr); err != nil { _, _ = fmt.Fprintf(os.Stderr, "%v\n", err) os.Exit(exitFail) } } -func run(args []string, _ io.Reader, stdout io.Writer) error { +func run(args []string, stdout io.Writer, stderr io.Writer) error { // get all directories passed as arguments and put them in a slice directories := getDirectoriesFromArgs(args) log(stdout, "Passed Directories:", directories) @@ -32,7 +32,7 @@ func run(args []string, _ io.Reader, stdout io.Writer) error { for _, directory := range directories { allFiles, err := getFilesRecursive(directory, fileExtension) if err != nil { - log(stdout, err) + log(stderr, err) continue } @@ -49,7 +49,7 @@ func run(args []string, _ io.Reader, stdout io.Writer) error { if ziptools.IsValidZip(file) { log(stdout, ".") } else { - log(stdout, "Invalid zip file:", file) + log(stderr, "Invalid zip file:", file) } <-semaphore }(file) diff --git a/main_test.go b/main_test.go index 826d5c7..d5f8020 100644 --- a/main_test.go +++ b/main_test.go @@ -17,28 +17,24 @@ func testfile(name string) string { func TestRun(t *testing.T) { type args struct { - stdin string - args []string + args []string } tests := []struct { name string args args wantStdout string + wantStderr string wantErr bool }{ - {"no args no stdin", args{"empty", []string{"zipcheck", ""}}, "emptyStdout", false}, - {"fake directory", args{"empty", []string{"zipcheck", "aaaaaaa"}}, "fakeStdout", false}, - {"good directory", args{"empty", []string{"zipcheck", "testdata"}}, "goodStdout", false}, + {"no args no stdin", args{[]string{"zipcheck", ""}}, "emptyStdout", "emptyStderr", false}, + {"fake directory", args{[]string{"zipcheck", "aaaaaaa"}}, "fakeStdout", "fakeStderr", false}, + {"good directory", args{[]string{"zipcheck", "testdata"}}, "goodStdout", "goodStderr", false}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { stdout := &bytes.Buffer{} - stdinB, err := os.ReadFile(testfile(tt.args.stdin)) - if err != nil { - t.Errorf("Failed reading test file %s: %v", tt.args.stdin, err) - } - stdin := bytes.NewReader(stdinB) + stderr := &bytes.Buffer{} wantStdoutB, err := os.ReadFile(testfile(tt.wantStdout)) if err != nil { @@ -46,7 +42,13 @@ func TestRun(t *testing.T) { } wantStdout := string(wantStdoutB) - err = run(tt.args.args, stdin, stdout) + wantStderrB, err := os.ReadFile(testfile(tt.wantStderr)) + if err != nil { + t.Errorf("Failed reading test file %s: %v", tt.wantStderr, err) + } + wantStderr := string(wantStderrB) + + err = run(tt.args.args, stdout, stderr) if (err != nil) != tt.wantErr { t.Errorf("run() error = %v, wantErr %v", err, tt.wantErr) return @@ -54,6 +56,9 @@ func TestRun(t *testing.T) { if gotStdout := stdout.String(); gotStdout != wantStdout { t.Errorf("run() gotStdout = %v, want %v", gotStdout, wantStdout) } + if gotStderr := stderr.String(); gotStderr != wantStderr { + t.Errorf("run() gotStderr = %v, want %v", gotStderr, wantStderr) + } }) } } diff --git a/testdata/emptyStderr b/testdata/emptyStderr new file mode 100644 index 0000000..97d7d95 --- /dev/null +++ b/testdata/emptyStderr @@ -0,0 +1 @@ +directory does not exist diff --git a/testdata/emptyStdout b/testdata/emptyStdout index 7b6e7d1..c0cf2ab 100644 --- a/testdata/emptyStdout +++ b/testdata/emptyStdout @@ -1,2 +1 @@ Passed Directories: [] -directory does not exist diff --git a/testdata/fakeStderr b/testdata/fakeStderr new file mode 100644 index 0000000..0616309 --- /dev/null +++ b/testdata/fakeStderr @@ -0,0 +1 @@ +directory aaaaaaa does not exist diff --git a/testdata/fakeStdout b/testdata/fakeStdout index 505e3b5..1b8c3e1 100644 --- a/testdata/fakeStdout +++ b/testdata/fakeStdout @@ -1,2 +1 @@ Passed Directories: [aaaaaaa] -directory aaaaaaa does not exist diff --git a/testdata/goodStderr b/testdata/goodStderr new file mode 100644 index 0000000..e5d1a33 --- /dev/null +++ b/testdata/goodStderr @@ -0,0 +1,2 @@ +Invalid zip file: testdata/incomplete.zip +Invalid zip file: testdata/bad_01.zip diff --git a/testdata/goodStdout b/testdata/goodStdout index e80c7cd..abb6445 100644 --- a/testdata/goodStdout +++ b/testdata/goodStdout @@ -1,5 +1,3 @@ Passed Directories: [testdata] Found 3 zip files in: testdata -Invalid zip file: testdata/incomplete.zip . -Invalid zip file: testdata/bad_01.zip