|
From: | Jacob Bachmeyer |
Subject: | Re: PATCH: use Expect subprocess for internal unit tests |
Date: | Sat, 15 Dec 2018 03:03:10 -0600 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.22) Gecko/20090807 MultiZilla/1.8.3.4e SeaMonkey/1.1.17 Mnenhy/0.7.6.0 |
Ben Elliston wrote:
On Fri, Dec 14, 2018 at 11:05:27PM -0600, Jacob Bachmeyer wrote:Similarly, slave interpreters do not have the "Expect" commands, so new stubs for "send_error" and "send_user" were added alongside "send_log" in default_procs.tcl. A "TODO" note is added to clone_output.test, suggesting future work to produce useful mocks for those procedures that can verify what clone_output actually outputs.Can the slave interpreters run 'package require Expect' to avoid that?
I do not know what Expect does with multiple instances in the same process, so I would rather not take that approach; it just feels like asking for trouble, in the future if not now. (Threads are likely to be a similar can of worms, unfortunately.) The "Expect" commands (or some abstraction layer that collects it all into an asynchronous event loop in the master) could be aliased into the slave interpreters if needed.
But for this case, adding the stubs is almost certainly the right thing to do: they avoid producing output that otherwise clutters the log and "pave the way" for future more-specific mocks that will enable clone_output to be thoroughly tested. Currently, there is no actual check for when clone_output produces output and when it does not: the testsuite will pass either way. Since procedures can be overridden by simply invoking "proc" again for the same name, clone_output.test could have its specific implementations that work with a similarly specific "test predicate" (like the various "lib_*_test" procedures in default_procs.tcl) specifically to verify the output produced by clone_output. (This is what the "TODO" note from this patch envisions.)
-- Jacob
[Prev in Thread] | Current Thread | [Next in Thread] |