Fix flaky TestWithSeparateStderr.
This commit is contained in:
@ -830,31 +830,32 @@ func (s *ExecuteCommandTestSuite) TestWithSeparateStderr() {
|
|||||||
|
|
||||||
var stdout, stderr bytes.Buffer
|
var stdout, stderr bytes.Buffer
|
||||||
var calledStdoutCommand, calledStderrCommand string
|
var calledStdoutCommand, calledStderrCommand string
|
||||||
|
runFn := func(args mock.Arguments) {
|
||||||
// mock regular call
|
|
||||||
call := s.mockExecute(mock.AnythingOfType("string"), 0, nil, func(_ mock.Arguments) {})
|
|
||||||
call.Run(func(args mock.Arguments) {
|
|
||||||
var ok bool
|
var ok bool
|
||||||
calledCommand, ok := args.Get(2).(string)
|
calledCommand, ok := args.Get(2).(string)
|
||||||
s.Require().True(ok)
|
s.Require().True(ok)
|
||||||
writer, ok := args.Get(5).(io.Writer)
|
var out string
|
||||||
s.Require().True(ok)
|
|
||||||
|
|
||||||
if isStderrCommand := strings.Contains(calledCommand, "mkfifo"); isStderrCommand {
|
if isStderrCommand := strings.Contains(calledCommand, "mkfifo"); isStderrCommand {
|
||||||
calledStderrCommand = calledCommand
|
calledStderrCommand = calledCommand
|
||||||
_, err := writer.Write([]byte(s.expectedStderr))
|
out = s.expectedStderr
|
||||||
s.Require().NoError(err)
|
|
||||||
call.ReturnArguments = mock.Arguments{stderrExitCode, nil}
|
|
||||||
} else {
|
} else {
|
||||||
calledStdoutCommand = calledCommand
|
calledStdoutCommand = calledCommand
|
||||||
_, err := writer.Write([]byte(s.expectedStdout))
|
out = s.expectedStdout
|
||||||
s.Require().NoError(err)
|
|
||||||
call.ReturnArguments = mock.Arguments{commandExitCode, nil}
|
|
||||||
}
|
}
|
||||||
})
|
|
||||||
|
writer, ok := args.Get(5).(io.Writer)
|
||||||
|
s.Require().True(ok)
|
||||||
|
_, err := writer.Write([]byte(out))
|
||||||
|
s.Require().NoError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
s.apiMock.On("Execute", s.allocationID, mock.Anything, mock.Anything, withTTY,
|
||||||
|
mock.AnythingOfType("nullio.Reader"), mock.Anything, mock.Anything).Run(runFn).Return(stderrExitCode, nil)
|
||||||
|
s.apiMock.On("Execute", s.allocationID, mock.Anything, mock.Anything, withTTY,
|
||||||
|
mock.AnythingOfType("*bytes.Buffer"), mock.Anything, mock.Anything).Run(runFn).Return(commandExitCode, nil)
|
||||||
|
|
||||||
exitCode, err := s.nomadAPIClient.ExecuteCommand(s.allocationID, s.ctx, s.testCommand, withTTY,
|
exitCode, err := s.nomadAPIClient.ExecuteCommand(s.allocationID, s.ctx, s.testCommand, withTTY,
|
||||||
UnprivilegedExecution, nullio.Reader{}, &stdout, &stderr)
|
UnprivilegedExecution, &bytes.Buffer{}, &stdout, &stderr)
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
|
|
||||||
s.apiMock.AssertNumberOfCalls(s.T(), "Execute", 2)
|
s.apiMock.AssertNumberOfCalls(s.T(), "Execute", 2)
|
||||||
|
Reference in New Issue
Block a user