github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/storage/looputil/util_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package looputil_test
     5  
     6  import gc "gopkg.in/check.v1"
     7  
     8  type mockRunCommand struct {
     9  	c        *gc.C
    10  	commands []*mockCommand
    11  }
    12  
    13  type mockCommand struct {
    14  	cmd    string
    15  	args   []string
    16  	result string
    17  	err    error
    18  }
    19  
    20  func (m *mockCommand) respond(result string, err error) {
    21  	m.result = result
    22  	m.err = err
    23  }
    24  
    25  func (m *mockRunCommand) expect(cmd string, args ...string) *mockCommand {
    26  	command := &mockCommand{cmd: cmd, args: args}
    27  	m.commands = append(m.commands, command)
    28  	return command
    29  }
    30  
    31  func (m *mockRunCommand) assertDrained() {
    32  	m.c.Assert(m.commands, gc.HasLen, 0)
    33  }
    34  
    35  func (m *mockRunCommand) run(cmd string, args ...string) (stdout string, err error) {
    36  	m.c.Assert(m.commands, gc.Not(gc.HasLen), 0)
    37  	expect := m.commands[0]
    38  	m.commands = m.commands[1:]
    39  	m.c.Assert(cmd, gc.Equals, expect.cmd)
    40  	m.c.Assert(args, gc.DeepEquals, expect.args)
    41  	return expect.result, expect.err
    42  }