Merge remote-tracking branch 'origin/master' into stderr-tests
This commit is contained in:
commit
4ad89829c5
8 changed files with 83 additions and 22 deletions
|
|
@ -6,7 +6,7 @@ before:
|
|||
builds:
|
||||
- binary: bin/gh
|
||||
ldflags:
|
||||
- -s -w -X github.com/github/gh-cli/command.Version={{.Version}} -X github.com/github/gh-cli/command.BuildDate={{.Date}}
|
||||
- -s -w -X github.com/github/gh-cli/command.Version={{.Version}} -X github.com/github/gh-cli/command.BuildDate={{time "2006-01-02"}}
|
||||
- -X github.com/github/gh-cli/context.oauthClientID={{.Env.GH_OAUTH_CLIENT_ID}}
|
||||
- -X github.com/github/gh-cli/context.oauthClientSecret={{.Env.GH_OAUTH_CLIENT_SECRET}}
|
||||
- -X main.updaterEnabled=github/homebrew-gh
|
||||
|
|
|
|||
|
|
@ -169,10 +169,10 @@ func issueStatus(cmd *cobra.Command, args []string) error {
|
|||
out := colorableOut(cmd)
|
||||
|
||||
printHeader(out, "Issues assigned to you")
|
||||
if issuePayload.Assigned != nil {
|
||||
if len(issuePayload.Assigned) > 0 {
|
||||
printIssues(out, " ", issuePayload.Assigned...)
|
||||
} else {
|
||||
message := fmt.Sprintf(" There are no issues assgined to you")
|
||||
message := fmt.Sprintf(" There are no issues assigned to you")
|
||||
printMessage(out, message)
|
||||
}
|
||||
fmt.Fprintln(out)
|
||||
|
|
@ -248,6 +248,7 @@ func issueCreate(cmd *cobra.Command, args []string) error {
|
|||
if stat, err := os.Stat(".github/ISSUE_TEMPLATE"); err == nil && stat.IsDir() {
|
||||
openURL += "/choose"
|
||||
}
|
||||
cmd.Printf("Opening %s in your browser.\n", openURL)
|
||||
return utils.OpenInBrowser(openURL)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -40,6 +40,38 @@ func TestIssueStatus(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestIssueStatus_blankSlate(t *testing.T) {
|
||||
initBlankContext("OWNER/REPO", "master")
|
||||
http := initFakeHTTP()
|
||||
|
||||
http.StubResponse(200, bytes.NewBufferString(`
|
||||
{ "data": {
|
||||
"assigned": { "issues": { "nodes": [] } },
|
||||
"mentioned": { "issues": { "nodes": [] } },
|
||||
"authored": { "issues": { "nodes": [] } }
|
||||
} }
|
||||
`))
|
||||
|
||||
output, err := RunCommand(issueStatusCmd, "issue status")
|
||||
if err != nil {
|
||||
t.Errorf("error running command `issue status`: %v", err)
|
||||
}
|
||||
|
||||
expectedOutput := `Issues assigned to you
|
||||
There are no issues assigned to you
|
||||
|
||||
Issues mentioning you
|
||||
There are no issues mentioning you
|
||||
|
||||
Issues opened by you
|
||||
There are no issues opened by you
|
||||
|
||||
`
|
||||
if output.String() != expectedOutput {
|
||||
t.Errorf("expected %q, got %q", expectedOutput, output)
|
||||
}
|
||||
}
|
||||
|
||||
func TestIssueList(t *testing.T) {
|
||||
initBlankContext("OWNER/REPO", "master")
|
||||
http := initFakeHTTP()
|
||||
|
|
@ -225,3 +257,27 @@ func TestIssueCreate(t *testing.T) {
|
|||
|
||||
eq(t, output.String(), "https://github.com/OWNER/REPO/issues/12\n")
|
||||
}
|
||||
|
||||
func TestIssueCreate_web(t *testing.T) {
|
||||
initBlankContext("OWNER/REPO", "master")
|
||||
initFakeHTTP()
|
||||
|
||||
var seenCmd *exec.Cmd
|
||||
restoreCmd := utils.SetPrepareCmd(func(cmd *exec.Cmd) utils.Runnable {
|
||||
seenCmd = cmd
|
||||
return &outputStub{}
|
||||
})
|
||||
defer restoreCmd()
|
||||
|
||||
output, err := RunCommand(issueCreateCmd, `issue create --web`)
|
||||
if err != nil {
|
||||
t.Errorf("error running command `issue create`: %v", err)
|
||||
}
|
||||
|
||||
if seenCmd == nil {
|
||||
t.Fatal("expected a command to run")
|
||||
}
|
||||
url := seenCmd.Args[len(seenCmd.Args)-1]
|
||||
eq(t, url, "https://github.com/OWNER/REPO/issues/new")
|
||||
eq(t, output.String(), "Opening https://github.com/OWNER/REPO/issues/new in your browser.\n")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,7 +43,10 @@ type FlagError struct {
|
|||
var RootCmd = &cobra.Command{
|
||||
Use: "gh",
|
||||
Short: "GitHub CLI",
|
||||
Long: `Work seamlessly with GitHub from the command line. GitHub CLI is in early stages of development, and we'd love to hear your feedback at https://forms.gle/pBt3kujJi7nXZmcM6`,
|
||||
Long: `Work seamlessly with GitHub from the command line.
|
||||
|
||||
GitHub CLI is in early stages of development, and we'd love to hear your
|
||||
feedback at <https://forms.gle/pBt3kujJi7nXZmcM6>`,
|
||||
|
||||
SilenceErrors: true,
|
||||
SilenceUsage: true,
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import (
|
|||
"os"
|
||||
"path"
|
||||
|
||||
"github.com/mitchellh/go-homedir"
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
|
|
@ -36,11 +35,9 @@ func parseConfigFile(fn string) (*configEntry, error) {
|
|||
return parseConfig(f)
|
||||
}
|
||||
|
||||
// ParseDefaultConfig reads the configuration from ~/.config/gh
|
||||
// ParseDefaultConfig reads the configuration file
|
||||
func ParseDefaultConfig() (*configEntry, error) {
|
||||
// FIXME: this duplicates fsContext.configFile
|
||||
fn, _ := homedir.Expand("~/.config/gh")
|
||||
return parseConfigFile(fn)
|
||||
return parseConfigFile(configFile())
|
||||
}
|
||||
|
||||
func parseConfig(r io.Reader) (*configEntry, error) {
|
||||
|
|
@ -72,10 +69,10 @@ func parseConfig(r io.Reader) (*configEntry, error) {
|
|||
// This is a temporary function that will migrate the config file. It can be removed
|
||||
// in January.
|
||||
//
|
||||
// If ~/.config/gh is a file, convert it to a directory and place the file
|
||||
// into ~/.config/gh/config.yml
|
||||
// If the config dir is a file, convert it to a directory and place the file
|
||||
// into a file named config.yml
|
||||
func migrateConfigFile() {
|
||||
p, _ := homedir.Expand("~/.config/gh")
|
||||
p := ConfigDir()
|
||||
fi, err := os.Stat(p)
|
||||
if err != nil { // This means the file doesn't exist, and that is fine.
|
||||
return
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package context
|
||||
|
||||
import (
|
||||
"path"
|
||||
"strings"
|
||||
|
||||
"github.com/github/gh-cli/git"
|
||||
|
|
@ -39,14 +40,18 @@ type fsContext struct {
|
|||
authToken string
|
||||
}
|
||||
|
||||
func (c *fsContext) configFile() string {
|
||||
dir, _ := homedir.Expand("~/.config/gh/config.yml")
|
||||
func ConfigDir() string {
|
||||
dir, _ := homedir.Expand("~/.config/gh")
|
||||
return dir
|
||||
}
|
||||
|
||||
func configFile() string {
|
||||
return path.Join(ConfigDir(), "config.yml")
|
||||
}
|
||||
|
||||
func (c *fsContext) getConfig() (*configEntry, error) {
|
||||
if c.config == nil {
|
||||
entry, err := parseOrSetupConfigFile(c.configFile())
|
||||
entry, err := parseOrSetupConfigFile(configFile())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package git
|
|||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
"regexp"
|
||||
"testing"
|
||||
|
||||
"github.com/github/gh-cli/test"
|
||||
|
|
@ -51,7 +51,8 @@ func Test_UncommittedChangeCount(t *testing.T) {
|
|||
|
||||
GitCommand = test.StubExecCommand("TestGitStatusHelperProcess", "boom")
|
||||
_, err := UncommittedChangeCount()
|
||||
if !strings.HasSuffix(err.Error(), "git.test: exit status 1") {
|
||||
errorRE := regexp.MustCompile(`git\.test(\.exe)?: exit status 1$`)
|
||||
if !errorRE.MatchString(err.Error()) {
|
||||
t.Errorf("got unexpected error message: %s", err)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
8
main.go
8
main.go
|
|
@ -3,14 +3,15 @@ package main
|
|||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path"
|
||||
"strings"
|
||||
|
||||
"github.com/github/gh-cli/command"
|
||||
"github.com/github/gh-cli/context"
|
||||
"github.com/github/gh-cli/update"
|
||||
"github.com/github/gh-cli/utils"
|
||||
"github.com/mattn/go-isatty"
|
||||
"github.com/mgutz/ansi"
|
||||
"github.com/mitchellh/go-homedir"
|
||||
)
|
||||
|
||||
var updaterEnabled = ""
|
||||
|
|
@ -61,9 +62,6 @@ func checkForUpdate(currentVersion string) (*update.ReleaseInfo, error) {
|
|||
}
|
||||
|
||||
repo := updaterEnabled
|
||||
stateFilePath, err := homedir.Expand("~/.config/gh/state.yml")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
stateFilePath := path.Join(context.ConfigDir(), "state.yml")
|
||||
return update.CheckForUpdate(client, stateFilePath, repo, currentVersion)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue