Skip to content

Commit

Permalink
feat: use stderr and test for it
Browse files Browse the repository at this point in the history
  • Loading branch information
onlyhavecans committed Apr 7, 2024
1 parent c4f93ac commit 9c59d64
Show file tree
Hide file tree
Showing 9 changed files with 26 additions and 22 deletions.
5 changes: 2 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
@@ -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 ./...
Expand Down
8 changes: 4 additions & 4 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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
}

Expand All @@ -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)
Expand Down
27 changes: 16 additions & 11 deletions main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,43 +17,48 @@ 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 {
t.Errorf("Failed opening test file %s: %v", tt.wantStdout, err)
}
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
}
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)
}
})
}
}
1 change: 1 addition & 0 deletions testdata/emptyStderr
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
directory does not exist
1 change: 0 additions & 1 deletion testdata/emptyStdout
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
Passed Directories: []
directory does not exist
1 change: 1 addition & 0 deletions testdata/fakeStderr
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
directory aaaaaaa does not exist
1 change: 0 additions & 1 deletion testdata/fakeStdout
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
Passed Directories: [aaaaaaa]
directory aaaaaaa does not exist
2 changes: 2 additions & 0 deletions testdata/goodStderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Invalid zip file: testdata/incomplete.zip
Invalid zip file: testdata/bad_01.zip
2 changes: 0 additions & 2 deletions testdata/goodStdout
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 9c59d64

Please sign in to comment.