1
0
Fork 0
forked from forgejo/forgejo

[CLI] implement forgejo-cli

(cherry picked from commit 2555e315f7)
(cherry picked from commit 987df92935)
This commit is contained in:
Earl Warren 2023-07-09 14:52:21 +02:00
parent 2e7fe1ec95
commit 78e7eee59a
No known key found for this signature in database
GPG key ID: 0579CB2928A78A00
3 changed files with 200 additions and 1 deletions

View 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
}