tests: add some functional tests for releases
This commit is contained in:
parent
462d3c0c2c
commit
be3121ffd3
1 changed files with 84 additions and 0 deletions
|
|
@ -1,3 +1,4 @@
|
||||||
|
//go:build functional
|
||||||
// +build functional
|
// +build functional
|
||||||
|
|
||||||
package functional
|
package functional
|
||||||
|
|
@ -7,6 +8,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
"code.gitea.io/sdk/gitea"
|
"code.gitea.io/sdk/gitea"
|
||||||
)
|
)
|
||||||
|
|
@ -620,3 +622,85 @@ func TestCLIRepoClone(t *testing.T) {
|
||||||
|
|
||||||
t.Logf("Successfully cloned repository to %s via CLI", clonePath)
|
t.Logf("Successfully cloned repository to %s via CLI", clonePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestCLIReleaseCreateUploadDelete verifies release create/upload/delete via CLI.
|
||||||
|
func TestCLIReleaseCreateUploadDelete(t *testing.T) {
|
||||||
|
env := NewTestEnv(t)
|
||||||
|
|
||||||
|
tag := fmt.Sprintf("fgj-test-%d", time.Now().UnixNano())
|
||||||
|
title := "FGJ CLI Release Test"
|
||||||
|
notes := "Release created by functional tests"
|
||||||
|
|
||||||
|
tmpDir := t.TempDir()
|
||||||
|
assetPath := fmt.Sprintf("%s/asset.txt", tmpDir)
|
||||||
|
if err := os.WriteFile(assetPath, []byte("fgj release asset"), 0600); err != nil {
|
||||||
|
t.Fatalf("failed to create asset file: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
result := env.RunCLI(
|
||||||
|
"--hostname", env.Hostname,
|
||||||
|
"release", "create", tag,
|
||||||
|
"-t", title,
|
||||||
|
"-n", notes,
|
||||||
|
assetPath,
|
||||||
|
)
|
||||||
|
if result.ExitCode != 0 {
|
||||||
|
t.Fatalf("release create failed with exit code %d: %s", result.ExitCode, result.Stderr)
|
||||||
|
}
|
||||||
|
|
||||||
|
release, _, err := env.Client.GetReleaseByTag(env.Owner, env.RepoName, tag)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to fetch created release: %v", err)
|
||||||
|
}
|
||||||
|
if release.Title != title {
|
||||||
|
t.Fatalf("expected release title %q, got %q", title, release.Title)
|
||||||
|
}
|
||||||
|
|
||||||
|
attachments, _, err := env.Client.ListReleaseAttachments(env.Owner, env.RepoName, release.ID, gitea.ListReleaseAttachmentsOptions{})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to list release assets: %v", err)
|
||||||
|
}
|
||||||
|
found := false
|
||||||
|
for _, attachment := range attachments {
|
||||||
|
if attachment.Name == "asset.txt" {
|
||||||
|
found = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !found {
|
||||||
|
t.Fatalf("uploaded asset not found in release")
|
||||||
|
}
|
||||||
|
|
||||||
|
deleteResult := env.RunCLI(
|
||||||
|
"--hostname", env.Hostname,
|
||||||
|
"release", "delete", tag,
|
||||||
|
)
|
||||||
|
if deleteResult.ExitCode != 0 {
|
||||||
|
t.Fatalf("release delete failed with exit code %d: %s", deleteResult.ExitCode, deleteResult.Stderr)
|
||||||
|
}
|
||||||
|
|
||||||
|
_, _, err = env.Client.GetReleaseByTag(env.Owner, env.RepoName, tag)
|
||||||
|
if err == nil {
|
||||||
|
t.Fatalf("expected release %s to be deleted, but it still exists", tag)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TestCLIReleaseList verifies the `fgj release list` command works.
|
||||||
|
func TestCLIReleaseList(t *testing.T) {
|
||||||
|
env := NewTestEnv(t)
|
||||||
|
|
||||||
|
result := env.RunCLI(
|
||||||
|
"--hostname", env.Hostname,
|
||||||
|
"release", "list",
|
||||||
|
)
|
||||||
|
|
||||||
|
if result.ExitCode != 0 {
|
||||||
|
t.Fatalf("release list failed with exit code %d: %s", result.ExitCode, result.Stderr)
|
||||||
|
}
|
||||||
|
|
||||||
|
if result.Stdout == "" && result.Stderr == "" {
|
||||||
|
t.Logf("Note: release list produced no output")
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Logf("Successfully listed releases via CLI")
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue