16b25da396
ci / vet, staticcheck, test, build (push) Successful in 3m35s
Tags are now bare version numbers by default (e.g. 1.2.3). Set tag_prefix: "v" in .releaser.yml or pass --tag-prefix v to opt in to the v-prefixed convention. Updated all affected tests, the .releaser.yml template comment, and the README configuration reference. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
145 lines
3.6 KiB
Go
145 lines
3.6 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestLoadDefaults(t *testing.T) {
|
|
cfg, err := Load(t.TempDir())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if cfg.Git.TagPrefix != "" {
|
|
t.Errorf("TagPrefix = %q, want %q", cfg.Git.TagPrefix, "")
|
|
}
|
|
if cfg.Maven.PomPath != "pom.xml" {
|
|
t.Errorf("PomPath = %q, want %q", cfg.Maven.PomPath, "pom.xml")
|
|
}
|
|
}
|
|
|
|
func TestLoadOverride(t *testing.T) {
|
|
dir := t.TempDir()
|
|
content := `
|
|
git:
|
|
tag_prefix: ""
|
|
commit_message: "release: {version}"
|
|
maven:
|
|
pom_path: "services/api/pom.xml"
|
|
`
|
|
if err := os.WriteFile(filepath.Join(dir, filename), []byte(content), 0644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
cfg, err := Load(dir)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if cfg.Git.TagPrefix != "" {
|
|
t.Errorf("TagPrefix = %q, want %q", cfg.Git.TagPrefix, "")
|
|
}
|
|
if cfg.Git.CommitMessage != "release: {version}" {
|
|
t.Errorf("CommitMessage = %q", cfg.Git.CommitMessage)
|
|
}
|
|
if cfg.Maven.PomPath != "services/api/pom.xml" {
|
|
t.Errorf("PomPath = %q", cfg.Maven.PomPath)
|
|
}
|
|
}
|
|
|
|
func TestLoadReadError(t *testing.T) {
|
|
dir := t.TempDir()
|
|
// Create a directory named .releaser.yml so os.ReadFile fails (is a directory)
|
|
if err := os.Mkdir(filepath.Join(dir, filename), 0755); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
_, err := Load(dir)
|
|
if err == nil {
|
|
t.Error("expected error when .releaser.yml is a directory")
|
|
}
|
|
}
|
|
|
|
func TestLoadInvalidYAML(t *testing.T) {
|
|
dir := t.TempDir()
|
|
if err := os.WriteFile(filepath.Join(dir, filename), []byte("{[invalid yaml"), 0644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
_, err := Load(dir)
|
|
if err == nil {
|
|
t.Error("expected error for invalid YAML")
|
|
}
|
|
}
|
|
|
|
func TestApplyEnv(t *testing.T) {
|
|
t.Setenv("GITLAB_TOKEN", "mytoken")
|
|
t.Setenv("CI_SERVER_URL", "https://gitlab.example.com")
|
|
t.Setenv("CI_PROJECT_ID", "42")
|
|
|
|
cfg := defaults()
|
|
cfg.ApplyEnv()
|
|
|
|
if cfg.GitLab.Token != "mytoken" {
|
|
t.Errorf("Token = %q, want mytoken", cfg.GitLab.Token)
|
|
}
|
|
if cfg.GitLab.URL != "https://gitlab.example.com" {
|
|
t.Errorf("URL = %q", cfg.GitLab.URL)
|
|
}
|
|
if cfg.GitLab.Project != "42" {
|
|
t.Errorf("Project = %q, want 42", cfg.GitLab.Project)
|
|
}
|
|
}
|
|
|
|
func TestApplyEnvDoesNotOverwrite(t *testing.T) {
|
|
t.Setenv("GITLAB_TOKEN", "env-token")
|
|
t.Setenv("CI_SERVER_URL", "https://env.example.com")
|
|
t.Setenv("CI_PROJECT_ID", "99")
|
|
|
|
cfg := defaults()
|
|
cfg.GitLab.Token = "config-token"
|
|
cfg.GitLab.URL = "https://config.example.com"
|
|
cfg.GitLab.Project = "config-project"
|
|
cfg.ApplyEnv()
|
|
|
|
if cfg.GitLab.Token != "config-token" {
|
|
t.Errorf("Token overwritten: got %q", cfg.GitLab.Token)
|
|
}
|
|
if cfg.GitLab.URL != "https://config.example.com" {
|
|
t.Errorf("URL overwritten: got %q", cfg.GitLab.URL)
|
|
}
|
|
if cfg.GitLab.Project != "config-project" {
|
|
t.Errorf("Project overwritten: got %q", cfg.GitLab.Project)
|
|
}
|
|
}
|
|
|
|
func TestApplyEnvProjectPathFallback(t *testing.T) {
|
|
t.Setenv("CI_PROJECT_ID", "")
|
|
t.Setenv("CI_PROJECT_PATH", "mygroup/myapp")
|
|
|
|
cfg := defaults()
|
|
cfg.ApplyEnv()
|
|
|
|
if cfg.GitLab.Project != "mygroup/myapp" {
|
|
t.Errorf("Project = %q, want mygroup/myapp (from CI_PROJECT_PATH)", cfg.GitLab.Project)
|
|
}
|
|
}
|
|
|
|
func TestLoadPartialOverride(t *testing.T) {
|
|
dir := t.TempDir()
|
|
// Only override tag_prefix — commit_message should keep its default
|
|
content := "git:\n tag_prefix: \"\"\n"
|
|
if err := os.WriteFile(filepath.Join(dir, filename), []byte(content), 0644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
cfg, err := Load(dir)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if cfg.Git.TagPrefix != "" {
|
|
t.Errorf("TagPrefix = %q, want %q", cfg.Git.TagPrefix, "")
|
|
}
|
|
if cfg.Git.CommitMessage != defaults().Git.CommitMessage {
|
|
t.Errorf("CommitMessage = %q, want default", cfg.Git.CommitMessage)
|
|
}
|
|
}
|