80 lines
1.7 KiB
Go
80 lines
1.7 KiB
Go
|
package gitinfo
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"runtime/debug"
|
||
|
"testing"
|
||
|
"time"
|
||
|
|
||
|
"github.com/matryer/is"
|
||
|
)
|
||
|
|
||
|
func TestReadGitInfo(t *testing.T) {
|
||
|
assert := is.New(t)
|
||
|
|
||
|
readBuildInfo = func() (*debug.BuildInfo, bool) {
|
||
|
return &debug.BuildInfo{
|
||
|
Settings: []debug.BuildSetting{
|
||
|
{Key: "vcs", Value: "git"},
|
||
|
{Key: "vcs.revision", Value: "ad1aef070cf1fd5f2f16701f84703ff1e1dd6738"},
|
||
|
{Key: "vcs.time", Value: "2022-03-22T19:56:47Z"},
|
||
|
{Key: "vcs.modified", Value: "true"},
|
||
|
},
|
||
|
}, true
|
||
|
}
|
||
|
|
||
|
expected := &GitInfo{
|
||
|
Revision: "ad1aef070cf1fd5f2f16701f84703ff1e1dd6738",
|
||
|
Time: time.Date(2022, 3, 22, 19, 56, 47, 0, time.UTC),
|
||
|
Modified: true,
|
||
|
}
|
||
|
|
||
|
info, err := ReadGitInfo()
|
||
|
assert.NoErr(err) // Should read build info
|
||
|
assert.Equal(info, expected) // GitInfo should match expected
|
||
|
}
|
||
|
|
||
|
func TestNoBuildInfo(t *testing.T) {
|
||
|
assert := is.New(t)
|
||
|
|
||
|
readBuildInfo = func() (*debug.BuildInfo, bool) {
|
||
|
return nil, false
|
||
|
}
|
||
|
|
||
|
_, err := ReadGitInfo()
|
||
|
assert.True(errors.Is(err, ErrNoBuildInfo)) // Should not read build info
|
||
|
}
|
||
|
|
||
|
func TestNoGit(t *testing.T) {
|
||
|
assert := is.New(t)
|
||
|
|
||
|
readBuildInfo = func() (*debug.BuildInfo, bool) {
|
||
|
return &debug.BuildInfo{
|
||
|
Settings: []debug.BuildSetting{
|
||
|
{Key: "vcs", Value: "svn"},
|
||
|
},
|
||
|
}, true
|
||
|
}
|
||
|
|
||
|
_, err := ReadGitInfo()
|
||
|
assert.True(errors.Is(err, ErrNoGit)) // Should not have git info
|
||
|
|
||
|
readBuildInfo = func() (*debug.BuildInfo, bool) {
|
||
|
return &debug.BuildInfo{}, true
|
||
|
}
|
||
|
|
||
|
_, err = ReadGitInfo()
|
||
|
assert.True(errors.Is(err, ErrNoGit)) // Should not have git info
|
||
|
}
|
||
|
|
||
|
func TestMustReadGitInfo(t *testing.T) {
|
||
|
assert := is.New(t)
|
||
|
|
||
|
readBuildInfo = func() (*debug.BuildInfo, bool) {
|
||
|
return nil, false
|
||
|
}
|
||
|
|
||
|
info := MustReadGitInfo()
|
||
|
assert.Equal(info.Revision, "develop") // revision should be "develop"
|
||
|
}
|