Skip to content

Commit e0373c8

Browse files
committed
use expect_without_traceback in test
I have extended my test to use `expect_without_traceback`. This means that I swapped out each `expect` instance with that function, and in doing so, noticed that I needed to watch for `\r` since we are using inquirer and click which seemingly terminate lines with `\r` as opposed to `\n`. I also decided to use a short timeout to give the program a chance to generate a Traceback. If a Traceback is not found within 2 seconds, I then move on to check if we found our expected string and return that information as a bool. I also promoted the bitcoin "slug" string to an instance attribute. I also "demoted" the `sut` from an instance attribute to simply a variable.
1 parent 94a8429 commit e0373c8

File tree

1 file changed

+55
-47
lines changed

1 file changed

+55
-47
lines changed

test/namespace_admin_test.py

Lines changed: 55 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ def __init__(self):
4242
self.blue_users = ["carol-warnettest", "default", "mallory-warnettest"]
4343
self.red_users = ["alice-warnettest", self.bob_user, "default"]
4444

45+
self.bitcoin_version_slug = "Bitcoin Core version v27.0.0"
46+
4547
def run_test(self):
4648
try:
4749
os.chdir(self.tmpdir)
@@ -182,60 +184,66 @@ def bob_runs_scenario_tests(self):
182184
def bob_checks_logs(self):
183185
assert self.this_is_the_current_context(self.bob_context)
184186
self.log.info("Bob will check the logs")
185-
bitcoin_version_slug = "Bitcoin Core version v27.0.0"
186-
self.sut = pexpect.spawn("warnet logs", maxread=4096 * 10)
187-
self.sut.expect("Please choose a pod", timeout=10)
188-
self.sut.sendline("")
189-
self.sut.expect(bitcoin_version_slug, timeout=10)
190-
self.sut.close()
191-
self.sut = pexpect.spawn(f"warnet logs --namespace {self.red_namespace}", maxread=4096 * 10)
192-
self.sut.expect("Please choose a pod", timeout=10)
193-
self.sut.sendline("")
194-
self.sut.expect(bitcoin_version_slug, timeout=10)
195-
self.sut.close()
196-
self.sut = pexpect.spawn("warnet logs tank-0008", maxread=4096 * 10)
197-
self.sut.expect(bitcoin_version_slug, timeout=10)
198-
self.sut.close()
199-
self.sut = pexpect.spawn(
187+
188+
sut = pexpect.spawn("warnet logs", maxread=4096 * 10)
189+
assert expect_without_traceback("Please choose a pod", sut)
190+
sut.sendline("")
191+
assert expect_without_traceback(self.bitcoin_version_slug, sut)
192+
sut.close()
193+
194+
sut = pexpect.spawn(f"warnet logs --namespace {self.red_namespace}", maxread=4096 * 10)
195+
assert expect_without_traceback("Please choose a pod", sut)
196+
sut.sendline("")
197+
assert expect_without_traceback(self.bitcoin_version_slug, sut)
198+
sut.close()
199+
200+
sut = pexpect.spawn("warnet logs tank-0008", maxread=4096 * 10)
201+
assert expect_without_traceback(self.bitcoin_version_slug, sut)
202+
sut.close()
203+
204+
sut = pexpect.spawn(
200205
f"warnet logs tank-0008 --namespace {self.red_namespace}", maxread=4096 * 10
201206
)
202-
self.sut.expect(bitcoin_version_slug, timeout=10)
203-
self.sut.close()
204-
self.sut = pexpect.spawn("warnet logs this_does_not_exist", maxread=4096 * 10)
205-
assert expect_without_traceback(
206-
"Could not find pod in any namespaces", self.sut, timeout=10
207-
)
208-
self.sut.close()
207+
assert expect_without_traceback(self.bitcoin_version_slug, sut)
208+
sut.close()
209+
210+
sut = pexpect.spawn("warnet logs this_does_not_exist", maxread=4096 * 10)
211+
assert expect_without_traceback("Could not find pod in any namespaces", sut)
212+
sut.close()
213+
209214
self.log.info("Bob has checked the logs")
210215
assert self.this_is_the_current_context(self.bob_context)
211216

212217
def admin_checks_logs(self):
213218
assert self.this_is_the_current_context(self.initial_context)
214219
self.log.info("The admin will check the logs")
215-
bitcoin_version_slug = "Bitcoin Core version v27.0.0"
216-
self.sut = pexpect.spawn("warnet logs", maxread=4096 * 10)
217-
self.sut.expect("Please choose a pod", timeout=10)
218-
self.sut.sendline("")
219-
self.sut.expect(bitcoin_version_slug, timeout=10)
220-
self.sut.close()
221-
self.sut = pexpect.spawn(f"warnet logs --namespace {self.red_namespace}", maxread=4096 * 10)
222-
self.sut.expect("Please choose a pod", timeout=10)
223-
self.sut.sendline("")
224-
self.sut.expect(bitcoin_version_slug, timeout=10)
225-
self.sut.close()
226-
self.sut = pexpect.spawn("warnet logs tank-0008", maxread=4096 * 10)
227-
self.sut.expect("The pod 'tank-0008' is found in these namespaces", timeout=10)
228-
self.sut.close()
229-
self.sut = pexpect.spawn(
220+
221+
sut = pexpect.spawn("warnet logs", maxread=4096 * 10)
222+
assert expect_without_traceback("Please choose a pod", sut)
223+
sut.sendline("")
224+
assert expect_without_traceback(self.bitcoin_version_slug, sut)
225+
sut.close()
226+
227+
sut = pexpect.spawn(f"warnet logs --namespace {self.red_namespace}", maxread=4096 * 10)
228+
assert expect_without_traceback("Please choose a pod", sut)
229+
sut.sendline("")
230+
assert expect_without_traceback(self.bitcoin_version_slug, sut)
231+
sut.close()
232+
233+
sut = pexpect.spawn("warnet logs tank-0008", maxread=4096 * 10)
234+
assert expect_without_traceback("The pod 'tank-0008' is found in these namespaces", sut)
235+
sut.close()
236+
237+
sut = pexpect.spawn(
230238
f"warnet logs tank-0008 --namespace {self.red_namespace}", maxread=4096 * 10
231239
)
232-
self.sut.expect(bitcoin_version_slug, timeout=10)
233-
self.sut.close()
234-
self.sut = pexpect.spawn("warnet logs this_does_not_exist", maxread=4096 * 10)
235-
assert expect_without_traceback(
236-
"Could not find pod in any namespaces", self.sut, timeout=10
237-
)
238-
self.sut.close()
240+
assert expect_without_traceback(self.bitcoin_version_slug, sut)
241+
sut.close()
242+
243+
sut = pexpect.spawn("warnet logs this_does_not_exist", maxread=4096 * 10)
244+
assert expect_without_traceback("Could not find pod in any namespaces", sut)
245+
sut.close()
246+
239247
self.log.info("The admin has checked the logs")
240248
assert self.this_is_the_current_context(self.initial_context)
241249

@@ -260,17 +268,17 @@ class StackTraceFoundException(Exception):
260268
pass
261269

262270

263-
def expect_without_traceback(expectation: str, sut: pexpect.spawn, timeout: int = 10) -> bool:
271+
def expect_without_traceback(expectation: str, sut: pexpect.spawn, timeout: int = 2) -> bool:
264272
expectation_found = False
265273
while True:
266274
try:
267-
sut.expect("\n", timeout=timeout)
275+
sut.expect(["\r", "\n"], timeout=timeout) # inquirer uses \r
268276
line = sut.before.decode("utf-8")
269277
if "Traceback (" in line:
270278
raise StackTraceFoundException
271279
if expectation in line:
272280
expectation_found = True
273-
except pexpect.exceptions.EOF:
281+
except (pexpect.exceptions.EOF, pexpect.exceptions.TIMEOUT):
274282
break
275283
return expectation_found
276284

0 commit comments

Comments
 (0)