2026-04-01 06:49:34 +00:00
|
|
|
package setup
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"os"
|
|
|
|
|
"path/filepath"
|
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestRunRepoSetup_CreatesCoreConfigs(t *testing.T) {
|
|
|
|
|
dir := t.TempDir()
|
|
|
|
|
require.NoError(t, os.WriteFile(filepath.Join(dir, "go.mod"), []byte("module example.com/test\n"), 0o644))
|
|
|
|
|
|
|
|
|
|
require.NoError(t, runRepoSetup(dir, false))
|
|
|
|
|
|
|
|
|
|
for _, name := range []string{"build.yaml", "release.yaml", "test.yaml"} {
|
|
|
|
|
path := filepath.Join(dir, ".core", name)
|
|
|
|
|
_, err := os.Stat(path)
|
|
|
|
|
require.NoErrorf(t, err, "expected %s to exist", path)
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-04-01 06:54:39 +00:00
|
|
|
|
|
|
|
|
func TestDetectProjectType_PrefersPackageOverComposer(t *testing.T) {
|
|
|
|
|
dir := t.TempDir()
|
|
|
|
|
require.NoError(t, os.WriteFile(filepath.Join(dir, "package.json"), []byte("{}\n"), 0o644))
|
|
|
|
|
require.NoError(t, os.WriteFile(filepath.Join(dir, "composer.json"), []byte("{}\n"), 0o644))
|
|
|
|
|
|
|
|
|
|
require.Equal(t, "node", detectProjectType(dir))
|
|
|
|
|
}
|
2026-04-01 07:25:34 +00:00
|
|
|
|
|
|
|
|
func TestParseGitHubRepoURL_Good(t *testing.T) {
|
|
|
|
|
cases := map[string]string{
|
|
|
|
|
"git@github.com:owner/repo.git": "owner/repo",
|
|
|
|
|
"ssh://git@github.com/owner/repo.git": "owner/repo",
|
|
|
|
|
"https://github.com/owner/repo.git": "owner/repo",
|
|
|
|
|
"git://github.com/owner/repo.git": "owner/repo",
|
|
|
|
|
"https://www.github.com/owner/repo": "owner/repo",
|
|
|
|
|
"git@github.com:owner/nested/repo.git": "owner/nested/repo",
|
|
|
|
|
"ssh://git@github.com/owner/nested/repo/": "owner/nested/repo",
|
|
|
|
|
"ssh://git@github.com:443/owner/repo.git": "owner/repo",
|
|
|
|
|
"https://example.com/owner/repo.git": "",
|
|
|
|
|
"git@bitbucket.org:owner/repo.git": "",
|
|
|
|
|
" ssh://git@github.com/owner/repo.git ": "owner/repo",
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for remote, expected := range cases {
|
|
|
|
|
t.Run(remote, func(t *testing.T) {
|
|
|
|
|
require.Equal(t, expected, parseGitHubRepoURL(remote))
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|