diff options
author | Patrick Bajao <ebajao@gitlab.com> | 2022-11-28 11:46:25 +0800 |
---|---|---|
committer | Patrick Bajao <ebajao@gitlab.com> | 2022-11-28 11:53:26 +0800 |
commit | b42774409ff6780f4d5d335f732a60b807d61efa (patch) | |
tree | 0090a036ba3a72f033d66fd3fe2afc9f2c6bbb7a | |
parent | 75f184619640e1cd2fc820091064644df9b05279 (diff) | |
download | gitlab-shell-b42774409ff6780f4d5d335f732a60b807d61efa.tar.gz |
Use blocking reader to fix race in test
The `TestCanceledContext` test in `twofactorverify_test.go` tests
the scenario wherein the request context gets canceled in the
middle of the request.
A race can occur though when the input gets read before the context
is canceled which can result to a different error: instead of
having the context canceled, the OTP will be blank.
To fix it, we use a blocking reader as input to simulate "waiting
for input" scenario. This way, reading the input will never be
finished and the context cancelation can be done appropriately.
-rw-r--r-- | internal/command/twofactorverify/twofactorverify_test.go | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/internal/command/twofactorverify/twofactorverify_test.go b/internal/command/twofactorverify/twofactorverify_test.go index fcc095f..640d3ed 100644 --- a/internal/command/twofactorverify/twofactorverify_test.go +++ b/internal/command/twofactorverify/twofactorverify_test.go @@ -177,7 +177,7 @@ func TestCanceledContext(t *testing.T) { cmd := &Command{ Config: &config.Config{GitlabUrl: url}, Args: &commandargs.Shell{GitlabKeyId: "wait_infinitely"}, - ReadWriter: &readwriter.ReadWriter{Out: output, In: &bytes.Buffer{}}, + ReadWriter: &readwriter.ReadWriter{Out: output, In: &blockingReader{}}, } ctx, cancel := context.WithCancel(context.Background()) |