use manager io in Upgrade
This commit is contained in:
parent
425bc64859
commit
db5bbf799f
6 changed files with 39 additions and 55 deletions
|
|
@ -132,7 +132,7 @@ func NewCmdExtension(f *cmdutil.Factory) *cobra.Command {
|
|||
if len(args) > 0 {
|
||||
name = normalizeExtensionSelector(args[0])
|
||||
}
|
||||
return m.Upgrade(name, flagForce, io.Out, io.ErrOut)
|
||||
return m.Upgrade(name, flagForce)
|
||||
},
|
||||
}
|
||||
cmd.Flags().BoolVar(&flagAll, "all", false, "Upgrade all extensions")
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package extension
|
||||
|
||||
import (
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"os"
|
||||
|
|
@ -94,7 +93,7 @@ func TestNewCmdExtension(t *testing.T) {
|
|||
name: "upgrade an extension",
|
||||
args: []string{"upgrade", "hello"},
|
||||
managerStubs: func(em *extensions.ExtensionManagerMock) func(*testing.T) {
|
||||
em.UpgradeFunc = func(name string, force bool, out, errOut io.Writer) error {
|
||||
em.UpgradeFunc = func(name string, force bool) error {
|
||||
return nil
|
||||
}
|
||||
return func(t *testing.T) {
|
||||
|
|
@ -108,7 +107,7 @@ func TestNewCmdExtension(t *testing.T) {
|
|||
name: "upgrade an extension gh-prefix",
|
||||
args: []string{"upgrade", "gh-hello"},
|
||||
managerStubs: func(em *extensions.ExtensionManagerMock) func(*testing.T) {
|
||||
em.UpgradeFunc = func(name string, force bool, out, errOut io.Writer) error {
|
||||
em.UpgradeFunc = func(name string, force bool) error {
|
||||
return nil
|
||||
}
|
||||
return func(t *testing.T) {
|
||||
|
|
@ -122,7 +121,7 @@ func TestNewCmdExtension(t *testing.T) {
|
|||
name: "upgrade an extension full name",
|
||||
args: []string{"upgrade", "monalisa/gh-hello"},
|
||||
managerStubs: func(em *extensions.ExtensionManagerMock) func(*testing.T) {
|
||||
em.UpgradeFunc = func(name string, force bool, out, errOut io.Writer) error {
|
||||
em.UpgradeFunc = func(name string, force bool) error {
|
||||
return nil
|
||||
}
|
||||
return func(t *testing.T) {
|
||||
|
|
@ -136,7 +135,7 @@ func TestNewCmdExtension(t *testing.T) {
|
|||
name: "upgrade all",
|
||||
args: []string{"upgrade", "--all"},
|
||||
managerStubs: func(em *extensions.ExtensionManagerMock) func(*testing.T) {
|
||||
em.UpgradeFunc = func(name string, force bool, out, errOut io.Writer) error {
|
||||
em.UpgradeFunc = func(name string, force bool) error {
|
||||
return nil
|
||||
}
|
||||
return func(t *testing.T) {
|
||||
|
|
|
|||
|
|
@ -306,7 +306,7 @@ func (m *Manager) installGit(cloneURL string, stdout, stderr io.Writer) error {
|
|||
|
||||
var localExtensionUpgradeError = errors.New("local extensions can not be upgraded")
|
||||
|
||||
func (m *Manager) Upgrade(name string, force bool, stdout, stderr io.Writer) error {
|
||||
func (m *Manager) Upgrade(name string, force bool) error {
|
||||
exe, err := m.lookPath("git")
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
@ -320,14 +320,14 @@ func (m *Manager) Upgrade(name string, force bool, stdout, stderr io.Writer) err
|
|||
someUpgraded := false
|
||||
for _, f := range exts {
|
||||
if name == "" {
|
||||
fmt.Fprintf(stdout, "[%s]: ", f.Name())
|
||||
fmt.Fprintf(m.io.Out, "[%s]: ", f.Name())
|
||||
} else if f.Name() != name {
|
||||
continue
|
||||
}
|
||||
|
||||
if f.IsLocal() {
|
||||
if name == "" {
|
||||
fmt.Fprintf(stdout, "%s\n", localExtensionUpgradeError)
|
||||
fmt.Fprintf(m.io.Out, "%s\n", localExtensionUpgradeError)
|
||||
} else {
|
||||
err = localExtensionUpgradeError
|
||||
}
|
||||
|
|
@ -344,7 +344,7 @@ func (m *Manager) Upgrade(name string, force bool, stdout, stderr io.Writer) err
|
|||
pullCmd := m.newCommand(exe, "-C", dir, "--git-dir="+filepath.Join(dir, ".git"), "pull", "--ff-only")
|
||||
cmds = []*exec.Cmd{pullCmd}
|
||||
}
|
||||
if e := runCmds(cmds, stdout, stderr); e != nil {
|
||||
if e := runCmds(cmds, m.io.Out, m.io.ErrOut); e != nil {
|
||||
err = e
|
||||
}
|
||||
someUpgraded = true
|
||||
|
|
|
|||
|
|
@ -108,11 +108,11 @@ func TestManager_Upgrade_AllExtensions(t *testing.T) {
|
|||
assert.NoError(t, stubExtension(filepath.Join(tempDir, "extensions", "gh-two", "gh-two")))
|
||||
assert.NoError(t, stubLocalExtension(tempDir, filepath.Join(tempDir, "extensions", "gh-local", "gh-local")))
|
||||
|
||||
m := newTestManager(tempDir, nil, nil)
|
||||
io, _, stdout, stderr := iostreams.Test()
|
||||
|
||||
stdout := &bytes.Buffer{}
|
||||
stderr := &bytes.Buffer{}
|
||||
err := m.Upgrade("", false, stdout, stderr)
|
||||
m := newTestManager(tempDir, nil, io)
|
||||
|
||||
err := m.Upgrade("", false)
|
||||
assert.NoError(t, err)
|
||||
|
||||
assert.Equal(t, heredoc.Docf(
|
||||
|
|
@ -133,11 +133,11 @@ func TestManager_Upgrade_RemoteExtension(t *testing.T) {
|
|||
tempDir := t.TempDir()
|
||||
assert.NoError(t, stubExtension(filepath.Join(tempDir, "extensions", "gh-remote", "gh-remote")))
|
||||
|
||||
m := newTestManager(tempDir, nil, nil)
|
||||
io, _, stdout, stderr := iostreams.Test()
|
||||
|
||||
stdout := &bytes.Buffer{}
|
||||
stderr := &bytes.Buffer{}
|
||||
err := m.Upgrade("remote", false, stdout, stderr)
|
||||
m := newTestManager(tempDir, nil, io)
|
||||
|
||||
err := m.Upgrade("remote", false)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, heredoc.Docf(
|
||||
`
|
||||
|
|
@ -153,11 +153,10 @@ func TestManager_Upgrade_LocalExtension(t *testing.T) {
|
|||
tempDir := t.TempDir()
|
||||
assert.NoError(t, stubLocalExtension(tempDir, filepath.Join(tempDir, "extensions", "gh-local", "gh-local")))
|
||||
|
||||
m := newTestManager(tempDir, nil, nil)
|
||||
io, _, stdout, stderr := iostreams.Test()
|
||||
m := newTestManager(tempDir, nil, io)
|
||||
|
||||
stdout := &bytes.Buffer{}
|
||||
stderr := &bytes.Buffer{}
|
||||
err := m.Upgrade("local", false, stdout, stderr)
|
||||
err := m.Upgrade("local", false)
|
||||
assert.EqualError(t, err, "local extensions can not be upgraded")
|
||||
assert.Equal(t, "", stdout.String())
|
||||
assert.Equal(t, "", stderr.String())
|
||||
|
|
@ -170,11 +169,10 @@ func TestManager_Upgrade_Force(t *testing.T) {
|
|||
|
||||
assert.NoError(t, stubExtension(filepath.Join(tempDir, "extensions", "gh-remote", "gh-remote")))
|
||||
|
||||
m := newTestManager(tempDir, nil, nil)
|
||||
io, _, stdout, stderr := iostreams.Test()
|
||||
m := newTestManager(tempDir, nil, io)
|
||||
|
||||
stdout := &bytes.Buffer{}
|
||||
stderr := &bytes.Buffer{}
|
||||
err := m.Upgrade("remote", true, stdout, stderr)
|
||||
err := m.Upgrade("remote", true)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, heredoc.Docf(
|
||||
`
|
||||
|
|
@ -192,11 +190,10 @@ func TestManager_Upgrade_Force(t *testing.T) {
|
|||
func TestManager_Upgrade_NoExtensions(t *testing.T) {
|
||||
tempDir := t.TempDir()
|
||||
|
||||
m := newTestManager(tempDir, nil, nil)
|
||||
io, _, stdout, stderr := iostreams.Test()
|
||||
m := newTestManager(tempDir, nil, io)
|
||||
|
||||
stdout := &bytes.Buffer{}
|
||||
stderr := &bytes.Buffer{}
|
||||
err := m.Upgrade("", false, stdout, stderr)
|
||||
err := m.Upgrade("", false)
|
||||
assert.EqualError(t, err, "no extensions installed")
|
||||
assert.Equal(t, "", stdout.String())
|
||||
assert.Equal(t, "", stderr.String())
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ type ExtensionManager interface {
|
|||
List(includeMetadata bool) []Extension
|
||||
Install(ghrepo.Interface) error
|
||||
InstallLocal(dir string) error
|
||||
Upgrade(name string, force bool, stdout, stderr io.Writer) error
|
||||
Upgrade(name string, force bool) error
|
||||
Remove(name string) error
|
||||
Dispatch(args []string, stdin io.Reader, stdout, stderr io.Writer) (bool, error)
|
||||
Create(name string) error
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ var _ ExtensionManager = &ExtensionManagerMock{}
|
|||
// RemoveFunc: func(name string) error {
|
||||
// panic("mock out the Remove method")
|
||||
// },
|
||||
// UpgradeFunc: func(name string, force bool, stdout io.Writer, stderr io.Writer) error {
|
||||
// UpgradeFunc: func(name string, force bool) error {
|
||||
// panic("mock out the Upgrade method")
|
||||
// },
|
||||
// }
|
||||
|
|
@ -66,7 +66,7 @@ type ExtensionManagerMock struct {
|
|||
RemoveFunc func(name string) error
|
||||
|
||||
// UpgradeFunc mocks the Upgrade method.
|
||||
UpgradeFunc func(name string, force bool, stdout io.Writer, stderr io.Writer) error
|
||||
UpgradeFunc func(name string, force bool) error
|
||||
|
||||
// calls tracks calls to the methods.
|
||||
calls struct {
|
||||
|
|
@ -112,10 +112,6 @@ type ExtensionManagerMock struct {
|
|||
Name string
|
||||
// Force is the force argument value.
|
||||
Force bool
|
||||
// Stdout is the stdout argument value.
|
||||
Stdout io.Writer
|
||||
// Stderr is the stderr argument value.
|
||||
Stderr io.Writer
|
||||
}
|
||||
}
|
||||
lockCreate sync.RWMutex
|
||||
|
|
@ -326,41 +322,33 @@ func (mock *ExtensionManagerMock) RemoveCalls() []struct {
|
|||
}
|
||||
|
||||
// Upgrade calls UpgradeFunc.
|
||||
func (mock *ExtensionManagerMock) Upgrade(name string, force bool, stdout io.Writer, stderr io.Writer) error {
|
||||
func (mock *ExtensionManagerMock) Upgrade(name string, force bool) error {
|
||||
if mock.UpgradeFunc == nil {
|
||||
panic("ExtensionManagerMock.UpgradeFunc: method is nil but ExtensionManager.Upgrade was just called")
|
||||
}
|
||||
callInfo := struct {
|
||||
Name string
|
||||
Force bool
|
||||
Stdout io.Writer
|
||||
Stderr io.Writer
|
||||
Name string
|
||||
Force bool
|
||||
}{
|
||||
Name: name,
|
||||
Force: force,
|
||||
Stdout: stdout,
|
||||
Stderr: stderr,
|
||||
Name: name,
|
||||
Force: force,
|
||||
}
|
||||
mock.lockUpgrade.Lock()
|
||||
mock.calls.Upgrade = append(mock.calls.Upgrade, callInfo)
|
||||
mock.lockUpgrade.Unlock()
|
||||
return mock.UpgradeFunc(name, force, stdout, stderr)
|
||||
return mock.UpgradeFunc(name, force)
|
||||
}
|
||||
|
||||
// UpgradeCalls gets all the calls that were made to Upgrade.
|
||||
// Check the length with:
|
||||
// len(mockedExtensionManager.UpgradeCalls())
|
||||
func (mock *ExtensionManagerMock) UpgradeCalls() []struct {
|
||||
Name string
|
||||
Force bool
|
||||
Stdout io.Writer
|
||||
Stderr io.Writer
|
||||
Name string
|
||||
Force bool
|
||||
} {
|
||||
var calls []struct {
|
||||
Name string
|
||||
Force bool
|
||||
Stdout io.Writer
|
||||
Stderr io.Writer
|
||||
Name string
|
||||
Force bool
|
||||
}
|
||||
mock.lockUpgrade.RLock()
|
||||
calls = mock.calls.Upgrade
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue