Files
go-semantic-release/internal/hooks/hooks_test.go

104 lines
2.1 KiB
Go
Raw Normal View History

package hooks_test
import (
"os"
"testing"
"github.com/Masterminds/semver"
"github.com/Nightapes/go-semantic-release/internal/hooks"
"github.com/Nightapes/go-semantic-release/internal/shared"
"github.com/Nightapes/go-semantic-release/pkg/config"
"github.com/stretchr/testify/assert"
)
func TestPreReleaseHooks(t *testing.T) {
os.Setenv("GO_WANT_HELPER_PROCESS", "1")
hooks := hooks.New(&config.ReleaseConfig{
Hooks: config.Hooks{
PreRelease: []string{
"go test -test.run=TestHelperProcess -- " + "$RELEASE_VERSION",
},
},
},
&shared.ReleaseVersion{
Next: shared.ReleaseVersionEntry{
Version: createVersion("1.0.0"),
},
})
err := hooks.PreRelease()
assert.NoError(t, err)
os.Unsetenv("GO_WANT_HELPER_PROCESS")
}
func TestPreReleaseHooksError(t *testing.T) {
hooks := hooks.New(&config.ReleaseConfig{
Hooks: config.Hooks{
PreRelease: []string{
"exit 1",
},
},
},
&shared.ReleaseVersion{
Next: shared.ReleaseVersionEntry{
Version: createVersion("1.0.0"),
},
})
err := hooks.PreRelease()
assert.Error(t, err)
}
func TestPostReleaseHooks(t *testing.T) {
os.Setenv("GO_WANT_HELPER_PROCESS", "1")
hooks := hooks.New(&config.ReleaseConfig{
Hooks: config.Hooks{
PostRelease: []string{
"go test -test.run=TestHelperProcess -- " + "$RELEASE_VERSION",
},
},
},
&shared.ReleaseVersion{
Next: shared.ReleaseVersionEntry{
Version: createVersion("1.0.0"),
},
})
err := hooks.PostRelease()
assert.NoError(t, err)
os.Unsetenv("GO_WANT_HELPER_PROCESS")
}
func TestPostReleaseHooksError(t *testing.T) {
hooks := hooks.New(&config.ReleaseConfig{
Hooks: config.Hooks{
PostRelease: []string{
"exit 1",
},
},
},
&shared.ReleaseVersion{
Next: shared.ReleaseVersionEntry{
Version: createVersion("1.0.0"),
},
})
err := hooks.PostRelease()
assert.Error(t, err)
}
func TestHelperProcess(t *testing.T) {
if os.Getenv("GO_WANT_HELPER_PROCESS") != "1" {
return
}
assert.Equal(t, "1.0.0", os.Args[3])
}
func createVersion(version string) *semver.Version {
ver, _ := semver.NewVersion(version)
return ver
}