1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-03-19 20:57:53 +02:00
goreleaser/internal/pipe/dist/dist_test.go
Carlos Alexandro Becker b6f9c8b9ca
feat: when --clean, remove dist before checking git state (#5057)
closes #5023
closes #5046

---------

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
2024-08-08 10:14:29 -03:00

72 lines
1.9 KiB
Go

package dist
import (
"os"
"path/filepath"
"testing"
"github.com/goreleaser/goreleaser/v2/internal/testctx"
"github.com/goreleaser/goreleaser/v2/pkg/config"
"github.com/goreleaser/goreleaser/v2/pkg/context"
"github.com/stretchr/testify/require"
)
func TestDefault(t *testing.T) {
ctx := testctx.New()
require.NoError(t, Pipe{}.Default(ctx))
require.Equal(t, "dist", ctx.Config.Dist)
}
func TestDistDoesNotExist(t *testing.T) {
folder := t.TempDir()
dist := filepath.Join(folder, "dist")
require.NoError(t, Pipe{}.Run(testctx.NewWithCfg(config.Project{Dist: dist})))
}
func TestPopulatedDistExists(t *testing.T) {
folder := t.TempDir()
dist := filepath.Join(folder, "dist")
require.NoError(t, os.Mkdir(dist, 0o755))
f, err := os.Create(filepath.Join(dist, "mybin"))
require.NoError(t, err)
require.NoError(t, f.Close())
ctx := testctx.NewWithCfg(config.Project{Dist: dist})
require.Error(t, Pipe{}.Run(ctx))
require.NoError(t, CleanPipe{}.Run(ctx))
require.NoError(t, Pipe{}.Run(ctx))
_, err = os.Stat(dist)
require.False(t, os.IsExist(err))
}
func TestEmptyDistExists(t *testing.T) {
folder := t.TempDir()
dist := filepath.Join(folder, "dist")
require.NoError(t, os.Mkdir(dist, 0o755))
ctx := testctx.NewWithCfg(config.Project{Dist: dist})
require.NoError(t, Pipe{}.Run(ctx))
_, err := os.Stat(dist)
require.False(t, os.IsNotExist(err))
}
func TestString(t *testing.T) {
require.NotEmpty(t, Pipe{}.String())
require.NotEmpty(t, CleanPipe{}.String())
}
func TestCleanSkip(t *testing.T) {
t.Run("skip", func(t *testing.T) {
require.True(t, CleanPipe{}.Skip(testctx.New()))
})
t.Run("don't skip", func(t *testing.T) {
require.False(t, CleanPipe{}.Skip(testctx.New(func(ctx *context.Context) {
ctx.Clean = true
})))
})
}
func TestCleanSetDist(t *testing.T) {
ctx := testctx.New()
require.NoError(t, CleanPipe{}.Run(ctx))
require.Equal(t, "dist", ctx.Config.Dist)
}