forgejo/tests/integration/cmd_forgejo_test.go
Earl Warren af9e7d8e9e
[CLI] implement forgejo-cli
(cherry picked from commit 2555e315f7)
(cherry picked from commit 51b9c9092e)

[CLI] implement forgejo-cli (squash) support initDB

(cherry picked from commit 5c31ae602a)
(cherry picked from commit bbf76489a7)

Conflicts:
	because of d0dbe52e76
	upgrade to https://pkg.go.dev/github.com/urfave/cli/v2
(cherry picked from commit b6c1bcc008)
2023-08-01 08:24:56 +02:00

39 lines
951 B
Go

// 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/v2"
)
func cmdForgejoCaptureOutput(t *testing.T, args []string, stdin ...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.ContextSetNoInit(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
}