forked from forgejo/forgejo
[CLI] implement forgejo-cli
(cherry picked from commit2555e315f7
) (cherry picked from commit987df92935
)
This commit is contained in:
parent
2e7fe1ec95
commit
78e7eee59a
3 changed files with 200 additions and 1 deletions
39
tests/integration/cmd_forgejo_test.go
Normal file
39
tests/integration/cmd_forgejo_test.go
Normal file
|
@ -0,0 +1,39 @@
|
|||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package integration
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"flag"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"code.gitea.io/gitea/cmd/forgejo"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/urfave/cli"
|
||||
)
|
||||
|
||||
func cmdForgejoCaptureOutput(t *testing.T, args []string) (string, error) {
|
||||
r, w, err := os.Pipe()
|
||||
assert.NoError(t, err)
|
||||
set := flag.NewFlagSet("forgejo-cli", 0)
|
||||
assert.NoError(t, set.Parse(args))
|
||||
cliContext := cli.NewContext(&cli.App{Writer: w, ErrWriter: w}, set, nil)
|
||||
ctx := context.Background()
|
||||
ctx = forgejo.ContextSetNoInstallSignals(ctx, true)
|
||||
ctx = forgejo.ContextSetNoExit(ctx, true)
|
||||
ctx = forgejo.ContextSetStdout(ctx, w)
|
||||
ctx = forgejo.ContextSetStderr(ctx, w)
|
||||
if len(stdin) > 0 {
|
||||
ctx = forgejo.ContextSetStdin(ctx, strings.NewReader(strings.Join(stdin, "")))
|
||||
}
|
||||
err = forgejo.CmdForgejo(ctx).Run(cliContext)
|
||||
w.Close()
|
||||
var buf bytes.Buffer
|
||||
io.Copy(&buf, r)
|
||||
return buf.String(), err
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue