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
|
||||
|
||||
package functional
|
||||
|
|
@ -7,6 +8,7 @@ import (
|
|||
"fmt"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"code.gitea.io/sdk/gitea"
|
||||
)
|
||||
|
|
@ -620,3 +622,85 @@ func TestCLIRepoClone(t *testing.T) {
|
|||
|
||||
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