summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-07-21 17:28:19 +0800
committerGitHub <noreply@github.com>2023-07-21 17:28:19 +0800
commitd0dbe52e76f3038777c3b50066e3636105387ca3 (patch)
tree4c159ed98a365300b6145bde03a06c29dcd21794 /tests
parent840830b655a65c0763e3fd4bd0ced9256d2081a5 (diff)
downloadgitea-d0dbe52e76f3038777c3b50066e3636105387ca3.tar.gz
gitea-d0dbe52e76f3038777c3b50066e3636105387ca3.zip
Refactor to use urfave/cli/v2 (#25959)
Replace #10912 And there are many new tests to cover the CLI behavior There were some concerns about the "option order in hook scripts" (https://github.com/go-gitea/gitea/pull/10912#issuecomment-1137543314), it's not a problem now. Because the hook script uses `/gitea hook --config=/app.ini pre-receive` format. The "config" is a global option, it can appear anywhere. ---- ## ⚠️ BREAKING ⚠️ This PR does it best to avoid breaking anything. The major changes are: * `gitea` itself won't accept web's options: `--install-port` / `--pid` / `--port` / `--quiet` / `--verbose` .... They are `web` sub-command's options. * Use `./gitea web --pid ....` instead * `./gitea` can still run the `web` sub-command as shorthand, with default options * The sub-command's options must follow the sub-command * Before: `./gitea --sub-opt subcmd` might equal to `./gitea subcmd --sub-opt` (well, might not ...) * After: only `./gitea subcmd --sub-opt` could be used * The global options like `--config` are not affected
Diffstat (limited to 'tests')
-rw-r--r--tests/integration/cmd_keys_test.go36
1 files changed, 13 insertions, 23 deletions
diff --git a/tests/integration/cmd_keys_test.go b/tests/integration/cmd_keys_test.go
index ccde048914..61f11c58b0 100644
--- a/tests/integration/cmd_keys_test.go
+++ b/tests/integration/cmd_keys_test.go
@@ -5,17 +5,15 @@ package integration
import (
"bytes"
- "flag"
- "io"
"net/url"
- "os"
"testing"
"code.gitea.io/gitea/cmd"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/util"
- "github.com/urfave/cli"
+ "github.com/stretchr/testify/assert"
+ "github.com/urfave/cli/v2"
)
func Test_CmdKeys(t *testing.T) {
@@ -38,26 +36,18 @@ func Test_CmdKeys(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
- realStdout := os.Stdout // Backup Stdout
- r, w, _ := os.Pipe()
- os.Stdout = w
-
- set := flag.NewFlagSet("keys", 0)
- _ = set.Parse(tt.args)
- context := cli.NewContext(&cli.App{Writer: os.Stdout}, set, nil)
- err := cmd.CmdKeys.Run(context)
- if (err != nil) != tt.wantErr {
- t.Errorf("CmdKeys.Run() error = %v, wantErr %v", err, tt.wantErr)
- }
- w.Close()
- var buf bytes.Buffer
- io.Copy(&buf, r)
- commandOutput := buf.String()
- if tt.expectedOutput != commandOutput {
- t.Errorf("expectedOutput: %#v, commandOutput: %#v", tt.expectedOutput, commandOutput)
+ out := new(bytes.Buffer)
+ app := cli.NewApp()
+ app.Writer = out
+ app.Commands = []*cli.Command{cmd.CmdKeys}
+ cmd.CmdKeys.HideHelp = true
+ err := app.Run(append([]string{"prog"}, tt.args...))
+ if tt.wantErr {
+ assert.Error(t, err)
+ } else {
+ assert.NoError(t, err)
}
- // Restore stdout
- os.Stdout = realStdout
+ assert.Equal(t, tt.expectedOutput, out.String())
})
}
})