2026-04-01 06:26:16 +00:00
|
|
|
package setup
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"bytes"
|
|
|
|
|
"io"
|
|
|
|
|
"os"
|
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func captureStdout(t *testing.T, fn func() error) (string, error) {
|
|
|
|
|
t.Helper()
|
|
|
|
|
|
|
|
|
|
oldStdout := os.Stdout
|
|
|
|
|
r, w, err := os.Pipe()
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
defer func() {
|
|
|
|
|
_ = r.Close()
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
os.Stdout = w
|
|
|
|
|
defer func() {
|
|
|
|
|
os.Stdout = oldStdout
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
outC := make(chan string, 1)
|
|
|
|
|
errC := make(chan error, 1)
|
|
|
|
|
|
|
|
|
|
go func() {
|
|
|
|
|
var buf bytes.Buffer
|
|
|
|
|
_, copyErr := io.Copy(&buf, r)
|
|
|
|
|
errC <- copyErr
|
|
|
|
|
outC <- buf.String()
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
runErr := fn()
|
|
|
|
|
|
|
|
|
|
require.NoError(t, w.Close())
|
|
|
|
|
require.NoError(t, <-errC)
|
|
|
|
|
out := <-outC
|
|
|
|
|
|
|
|
|
|
return out, runErr
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestDefaultCIConfig_Good(t *testing.T) {
|
|
|
|
|
cfg := DefaultCIConfig()
|
|
|
|
|
|
|
|
|
|
require.Equal(t, "host-uk/tap", cfg.Tap)
|
|
|
|
|
require.Equal(t, "core", cfg.Formula)
|
|
|
|
|
require.Equal(t, "https://forge.lthn.ai/core/scoop-bucket.git", cfg.ScoopBucket)
|
|
|
|
|
require.Equal(t, "core-cli", cfg.ChocolateyPkg)
|
|
|
|
|
require.Equal(t, "host-uk/core", cfg.Repository)
|
|
|
|
|
require.Equal(t, "dev", cfg.DefaultVersion)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestOutputPowershellInstall_Good(t *testing.T) {
|
|
|
|
|
out, err := captureStdout(t, func() error {
|
|
|
|
|
return outputPowershellInstall(DefaultCIConfig(), "dev")
|
|
|
|
|
})
|
|
|
|
|
require.NoError(t, err)
|
2026-04-01 09:02:04 +00:00
|
|
|
require.Contains(t, out, `scoop bucket add host-uk $ScoopBucket`)
|
2026-04-01 06:26:16 +00:00
|
|
|
require.NotContains(t, out, `https://https://forge.lthn.ai/core/scoop-bucket.git`)
|
|
|
|
|
}
|