Files
go-semantic-release/internal/cache/cache_test.go

109 lines
2.5 KiB
Go
Raw Normal View History

2019-07-21 15:07:13 +02:00
package cache_test
import (
"testing"
"io/ioutil"
"os"
"path"
2019-07-22 20:47:10 +02:00
"github.com/Masterminds/semver"
2019-07-21 15:07:13 +02:00
"github.com/Nightapes/go-semantic-release/internal/cache"
2019-07-22 20:47:10 +02:00
"github.com/Nightapes/go-semantic-release/internal/shared"
2019-07-21 15:07:13 +02:00
"github.com/stretchr/testify/assert"
)
func TestReadCacheNotFound(t *testing.T) {
resp, err := cache.Read("notfound/dir")
assert.NoErrorf(t, err, "Read non exsiting file")
assert.NotNil(t, resp)
2019-07-21 15:07:13 +02:00
}
func TestReadCacheInvalidContent(t *testing.T) {
dir, err := ioutil.TempDir("", "prefix")
assert.NoError(t, err)
defer os.RemoveAll(dir)
completePath := path.Join(path.Dir(dir), ".version")
brokenContent := []byte("hello broken\ngo: lang\n")
2019-07-21 15:15:01 +02:00
err = ioutil.WriteFile(completePath, brokenContent, 0644)
assert.NoError(t, err)
2019-07-21 15:07:13 +02:00
_, readError := cache.Read(dir)
assert.Errorf(t, readError, "Should give error, when broken content")
}
func TestWriteAndReadCache(t *testing.T) {
dir, err := ioutil.TempDir("", "prefix")
assert.NoError(t, err)
2019-07-22 20:47:10 +02:00
content := shared.ReleaseVersion{
Last: shared.ReleaseVersionEntry{
Commit: "12345",
Version: createVersion("1.0.0"),
VersionString: "1.0.0",
2019-07-21 15:07:13 +02:00
},
2019-07-22 20:47:10 +02:00
Next: shared.ReleaseVersionEntry{
Commit: "12346",
Version: createVersion("1.1.0"),
VersionString: "1.1.0",
2019-07-21 15:07:13 +02:00
},
Branch: "master",
Commits: map[shared.Release][]shared.AnalyzedCommit{
"major": []shared.AnalyzedCommit{
shared.AnalyzedCommit{
Commit: shared.Commit{
Message: "Message",
Author: "Author",
Hash: "Hash",
},
ParsedMessage: "add gitlab as relase option",
Scope: "releaser",
ParsedBreakingChangeMessage: "",
Tag: "feat",
TagString: "Features",
Print: true,
},
},
},
2019-07-21 15:07:13 +02:00
}
defer os.RemoveAll(dir)
writeError := cache.Write(dir, content)
assert.NoErrorf(t, writeError, "Should write file")
result, readError := cache.Read(dir)
assert.NoErrorf(t, readError, "Should read file")
2019-07-22 20:47:10 +02:00
assert.EqualValues(t, &content, result)
2019-07-21 15:07:13 +02:00
}
func TestWriteNotFound(t *testing.T) {
2019-07-22 20:47:10 +02:00
err := cache.Write("notfound/dir", shared.ReleaseVersion{
Last: shared.ReleaseVersionEntry{
Commit: "12345",
Version: createVersion("1.0.0"),
},
Next: shared.ReleaseVersionEntry{
Commit: "12346",
Version: createVersion("1.1.0"),
},
Branch: "master",
})
2019-07-21 15:07:13 +02:00
assert.Errorf(t, err, "Write non exsiting file")
}
2019-07-22 20:47:10 +02:00
func createVersion(version string) *semver.Version {
ver, _ := semver.NewVersion(version)
return ver
}