Merge branch 'main' into lunny/add_reply_code_review

This commit is contained in:
Lunny Xiao
2026-05-25 21:58:27 -07:00
230 changed files with 2346 additions and 1495 deletions
+10 -10
View File
@@ -4,31 +4,31 @@
package integration
import (
"context"
"fmt"
"os"
"path/filepath"
"testing"
"time"
"code.gitea.io/sdk/gitea"
teacmd "code.gitea.io/tea/cmd"
gitea "gitea.dev/sdk"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
teacmd "gitea.dev/tea/cmd"
)
func runAdminCommand(t *testing.T, args []string) error {
t.Helper()
adminCmd := teacmd.CmdAdmin
return adminCmd.Run(context.Background(), args)
return adminCmd.Run(t.Context(), args)
}
func createAdminTestUser(t *testing.T, client *gitea.Client, username, password string) {
t.Helper()
mustChangePassword := false
user, _, err := client.AdminCreateUser(gitea.CreateUserOption{
user, _, err := client.Admin.CreateUser(t.Context(), gitea.CreateUserOption{
LoginName: username,
Username: username,
Email: username + "@example.com",
@@ -39,7 +39,7 @@ func createAdminTestUser(t *testing.T, client *gitea.Client, username, password
require.Equal(t, username, user.UserName)
t.Cleanup(func() {
if _, err := client.AdminDeleteUser(username); err != nil {
if _, err := client.Admin.DeleteUser(t.Context(), username); err != nil {
t.Logf("failed to delete integration test user %q: %v", username, err)
}
})
@@ -75,7 +75,7 @@ func TestAdminUsersCreateAndDelete(t *testing.T) {
})
require.NoError(t, err)
createdUser, _, err := client.GetUserInfo(username)
createdUser, _, err := client.Users.GetUserInfo(t.Context(), username)
require.NoError(t, err)
assert.Equal(t, username, createdUser.UserName)
assert.Equal(t, username+"@example.com", createdUser.Email)
@@ -90,7 +90,7 @@ func TestAdminUsersCreateAndDelete(t *testing.T) {
})
require.NoError(t, err)
_, _, err = client.GetUserInfo(username)
_, _, err = client.Users.GetUserInfo(t.Context(), username)
require.Error(t, err)
}
@@ -117,7 +117,7 @@ func TestAdminUsersEdit(t *testing.T) {
})
require.NoError(t, err)
updatedUser, _, err := client.GetUserInfo(username)
updatedUser, _, err := client.Users.GetUserInfo(t.Context(), username)
require.NoError(t, err)
assert.Equal(t, username+"+new@example.com", updatedUser.Email)
assert.Equal(t, "Tea Integration", updatedUser.FullName)
@@ -133,7 +133,7 @@ func TestAdminUsersEdit(t *testing.T) {
)
require.NoError(t, err)
me, _, err := passwordClient.GetMyUserInfo()
me, _, err := passwordClient.Users.GetMyUserInfo(t.Context())
require.NoError(t, err)
assert.Equal(t, username, me.UserName)
}
+1 -1
View File
@@ -13,7 +13,7 @@ import (
"testing"
"time"
"code.gitea.io/tea/modules/config"
"gitea.dev/tea/modules/config"
)
func TestConfigLock_CrossProcess(t *testing.T) {
+24 -4
View File
@@ -8,13 +8,14 @@ import (
"os/exec"
"testing"
"code.gitea.io/tea/modules/config"
teacontext "code.gitea.io/tea/modules/context"
"github.com/stretchr/testify/require"
"github.com/urfave/cli/v3"
"gitea.dev/tea/modules/config"
teacontext "gitea.dev/tea/modules/context"
)
func TestInitCommand_WithRepoSlugSkipsLocalRepoDetection(t *testing.T) {
func TestInitCommand_WithRepoSlugKeepsLocalRepoDetection(t *testing.T) {
tmpDir := t.TempDir()
config.SetConfigForTesting(config.LocalConfig{
Logins: []config.Login{{
@@ -53,7 +54,26 @@ func TestInitCommand_WithRepoSlugSkipsLocalRepoDetection(t *testing.T) {
require.Equal(t, "owner", ctx.Owner)
require.Equal(t, "repo", ctx.Repo)
require.Equal(t, "owner/repo", ctx.RepoSlug)
require.Nil(t, ctx.LocalRepo)
require.NotNil(t, ctx.LocalRepo)
require.NotNil(t, ctx.Login)
require.Equal(t, "test-login", ctx.Login.Name)
cliCmd = cli.Command{
Name: "pr",
Flags: []cli.Flag{
&cli.StringFlag{Name: "repo"},
&cli.StringFlag{Name: "base"},
},
}
require.NoError(t, cliCmd.Set("repo", "owner/repo"))
require.NoError(t, cliCmd.Set("base", "main"))
ctx, err = teacontext.InitCommand(&cliCmd)
require.NoError(t, err)
require.Equal(t, "repo", ctx.Repo)
require.Equal(t, "owner/repo", ctx.RepoSlug)
require.Equal(t, "main", ctx.String("base"))
require.NotNil(t, ctx.LocalRepo)
require.NotNil(t, ctx.Login)
require.Equal(t, "test-login", ctx.Login.Name)
}
+2 -1
View File
@@ -9,8 +9,9 @@ import (
"path/filepath"
"testing"
teagit "code.gitea.io/tea/modules/git"
"github.com/stretchr/testify/assert"
teagit "gitea.dev/tea/modules/git"
)
func TestRepoFromPath_Worktree(t *testing.T) {
+8 -6
View File
@@ -4,16 +4,18 @@
package integration
import (
stdctx "context"
"fmt"
"os"
"path/filepath"
"testing"
"time"
"code.gitea.io/sdk/gitea"
"code.gitea.io/tea/modules/config"
"code.gitea.io/tea/modules/task"
gitea "gitea.dev/sdk"
"github.com/stretchr/testify/require"
"gitea.dev/tea/modules/config"
"gitea.dev/tea/modules/task"
)
var (
@@ -43,7 +45,7 @@ func TestMain(m *testing.M) {
if integrationSetupErr == nil {
tokenName := fmt.Sprintf("tea-integration-%d", time.Now().UnixNano())
var token *gitea.AccessToken
token, _, integrationSetupErr = integrationClient.CreateAccessToken(gitea.CreateAccessTokenOption{
token, _, integrationSetupErr = integrationClient.Users.CreateAccessToken(stdctx.Background(), gitea.CreateAccessTokenOption{
Name: tokenName,
Scopes: []gitea.AccessTokenScope{gitea.AccessTokenScopeAll},
})
@@ -58,7 +60,7 @@ func TestMain(m *testing.M) {
exitCode := m.Run()
if integrationClient != nil && integrationTokenID != 0 {
if _, err := integrationClient.DeleteAccessToken(integrationTokenID); err != nil {
if _, err := integrationClient.Users.DeleteAccessToken(stdctx.Background(), integrationTokenID); err != nil {
fmt.Fprintf(os.Stderr, "failed to delete integration token %d: %v\n", integrationTokenID, err)
if exitCode == 0 {
exitCode = 1
@@ -94,7 +96,7 @@ func createIntegrationLogin(t *testing.T) *config.Login {
require.NotEmpty(t, integrationToken, "integration token setup failed")
require.NoError(t, task.CreateLogin("integration", integrationToken, "", "", "", "", "", integrationGiteaURL, "", "", true, false, false, false))
require.NoError(t, task.CreateLogin(t.Context(), "integration", integrationToken, "", "", "", "", "", integrationGiteaURL, "", "", true, false, false, false))
login, err := config.GetLoginByName("integration")
require.NoError(t, err)
+5 -5
View File
@@ -4,16 +4,16 @@
package integration
import (
"context"
"fmt"
"testing"
"time"
"code.gitea.io/sdk/gitea"
"code.gitea.io/tea/cmd/repos"
gitea "gitea.dev/sdk"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/urfave/cli/v3"
"gitea.dev/tea/cmd/repos"
)
func TestCreateRepoObjectFormat(t *testing.T) {
@@ -64,7 +64,7 @@ func TestCreateRepoObjectFormat(t *testing.T) {
args := append([]string{"repos", "create"}, tt.args...)
args = append(args, "--login", login.Name)
err := reposCmd.Run(context.Background(), args)
err := reposCmd.Run(t.Context(), args)
if tt.wantErr {
assert.Error(t, err)
if tt.errContains != "" {
@@ -75,7 +75,7 @@ func TestCreateRepoObjectFormat(t *testing.T) {
require.NoError(t, err)
t.Cleanup(func() {
if _, delErr := client.DeleteRepo(login.User, tt.wantOpts.Name); delErr != nil {
if _, delErr := client.Repositories.DeleteRepo(t.Context(), login.User, tt.wantOpts.Name); delErr != nil {
t.Logf("failed to delete integration test repo %q: %v", tt.wantOpts.Name, delErr)
}
})
+9 -9
View File
@@ -4,7 +4,6 @@
package integration
import (
"context"
"crypto/ed25519"
"crypto/rand"
"encoding/base64"
@@ -14,8 +13,9 @@ import (
"testing"
"time"
"code.gitea.io/sdk/gitea"
sshkeyscmd "code.gitea.io/tea/cmd/sshkeys"
gitea "gitea.dev/sdk"
sshkeyscmd "gitea.dev/tea/cmd/sshkeys"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -64,14 +64,14 @@ func TestSSHKeyAddAndDelete(t *testing.T) {
cmd := sshKeysCmd()
client := login.Client()
err := cmd.Run(context.Background(), []string{
err := cmd.Run(t.Context(), []string{
"ssh-keys", "add", pubKeyFile,
"--title", keyTitle,
"--login", login.Name,
})
require.NoError(t, err)
keys, _, err := client.ListMyPublicKeys(gitea.ListPublicKeysOptions{
keys, _, err := client.Users.ListMyPublicKeys(t.Context(), gitea.ListPublicKeysOptions{
ListOptions: gitea.ListOptions{Page: -1},
})
require.NoError(t, err)
@@ -86,17 +86,17 @@ func TestSSHKeyAddAndDelete(t *testing.T) {
require.NotNil(t, addedKey, "added key not found in key list")
t.Cleanup(func() {
client.DeletePublicKey(addedKey.ID) //nolint:errcheck
client.Users.DeletePublicKey(t.Context(), addedKey.ID) //nolint:errcheck
})
err = cmd.Run(context.Background(), []string{
err = cmd.Run(t.Context(), []string{
"ssh-keys", "delete", strconv.FormatInt(addedKey.ID, 10),
"--confirm",
"--login", login.Name,
})
assert.NoError(t, err)
_, resp, err := client.GetPublicKey(addedKey.ID)
_, resp, err := client.Users.GetPublicKey(t.Context(), addedKey.ID)
assert.Error(t, err)
if assert.NotNil(t, resp) {
assert.Equal(t, 404, resp.StatusCode)
@@ -107,7 +107,7 @@ func TestSSHKeyList(t *testing.T) {
login := createIntegrationLogin(t)
cmd := sshKeysCmd()
err := cmd.Run(context.Background(), []string{
err := cmd.Run(t.Context(), []string{
"ssh-keys", "list",
"--login", login.Name,
})