From 7b93801e88907cc56472198711ebca34d51b15f6 Mon Sep 17 00:00:00 2001 From: Felix Wiedmann Date: Sat, 8 May 2021 22:13:33 +0200 Subject: [PATCH] test(semantic-release): add tests for WriteChangelog --- pkg/semanticrelease/semantic-release_test.go | 83 ++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 pkg/semanticrelease/semantic-release_test.go diff --git a/pkg/semanticrelease/semantic-release_test.go b/pkg/semanticrelease/semantic-release_test.go new file mode 100644 index 0000000..6b97b38 --- /dev/null +++ b/pkg/semanticrelease/semantic-release_test.go @@ -0,0 +1,83 @@ +package semanticrelease + +import ( + "os" + "path/filepath" + "strings" + "testing" + + "github.com/Nightapes/go-semantic-release/pkg/config" +) + +func TestSemanticRelease_WriteChangeLog(t *testing.T) { + + type args struct { + changelogContent string + file string + overwrite bool + maxChangelogFileSize int64 + } + tests := []struct { + config *config.ReleaseConfig + name string + args args + wantErr bool + }{ + { + name: "MoveExisting", + args: args{ + changelogContent: "go-semantic-release-rocks!", + file: "test1.changelog.md", + overwrite: false, + maxChangelogFileSize: 0, + }, + wantErr: false, + }, + { + name: "ValidWithOverwrite", + args: args{ + changelogContent: "go-semantic-release-rocks!", + file: "test2.changelog.md", + overwrite: true, + maxChangelogFileSize: 0, + }, + wantErr: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + _, err := os.Create(tt.args.file) + if err != nil { + t.Error(err) + } + + releaser := &SemanticRelease{} + if err := releaser.WriteChangeLog(tt.args.changelogContent, tt.args.file, tt.args.overwrite, tt.args.maxChangelogFileSize); (err != nil) != tt.wantErr { + t.Errorf("WriteChangeLog() error = %v, wantErr %v", err, tt.wantErr) + } + + name := strings.Join(strings.Split(tt.args.file, ".")[:len(strings.Split(tt.args.file, "."))-1], ".") + + files, err := filepath.Glob("./" + name + "*") + if err != nil { + t.Error(err) + } + + if !tt.wantErr && !tt.args.overwrite && tt.args.maxChangelogFileSize == 0 && len(files) <= 1 { + t.Errorf("WriteChangelog() = should create a copy of the existing changelog file") + } + + if !tt.wantErr && tt.args.overwrite && len(files) > 1 { + t.Errorf("WriteChangelog() = should not create a copy of the changelog file") + } + + for _, i := range files { + err := os.Remove(i) + if err != nil { + t.Error(err) + } + } + }) + } +}