Date: Sun, 27 Jul 2014 17:00:41 -0700 From: Julio Merino <jmmv@freebsd.org> To: Fabian Keil <freebsd-listen@fabiankeil.de> Cc: "freebsd-testing@freebsd.org" <freebsd-testing@freebsd.org> Subject: Re: atf_check() equivalent to test individual shell functions? Message-ID: <CAFY7cWDunqCZGVQdBbi0YZP-wxBa201zeFjgofsBw04WZmAdDw@mail.gmail.com> In-Reply-To: <41d8a2fb.75b47028@fabiankeil.de> References: <41d8a2fb.75b47028@fabiankeil.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Jul 26, 2014 at 4:30 AM, Fabian Keil <freebsd-listen@fabiankeil.de> wrote: > Here's another zogftw-related problem. What's zogftw? > Putting something like this in a test case works as expected: > > | atf_check -s exit:0 -o empty -e empty $ZOGFTW cmd zogftw_string_ends_with "abc" "c" What is "$ZOGFTW cmd ..." supposed to be doing? > It would be preferably to source zogftw once at the beginning > and call the shell function zogftw_string_ends_with() directly > afterwards to reduce the overhead, though. > > The following sort of does this, but the stdout and stderr > output isn't verified, it's tedious to write and if nothing > fails, the "kyua debug" output isn't particular useful: > > | . $ZOGFTW source || atf_fail "Failed to source zogftw" > | > | if ! zogftw_string_ends_with "abc" "c"; then > | atf_fail "Failed to find 'c' at the end of 'abc'" > | fi > > The following also sort of works, but in case of errors the output > isn't helpful (because atf_check_equal() doesn't see the actual > function) and the stderr output isn't verified either: > > | . $ZOGFTW source || atf_fail "Failed to source zogftw" > | > | atf_check_equal $(zogftw_string_ends_with "abc" "c"; echo $?) "0" Or just: zogftw_string_ends_with "abc" "c" || atf_fail "abc doesn't end with c" There is no reason to compare the exit code literally with atf_check_equal. > What I'm looking for is something like this: > > | atf_check_shell_function -s return:0 -o empty -e empty zogftw_string_ends_with "abc" "c" That could be interesting. However, note that atf_check currently is just a thin wrapper over the atf-check binary and that's the reason why you cannot feed shell functions into it. Implementing an atf_check_shell_function would involve rewriting atf-check's functionality in libatf-sh.subr. > atf-sh-api(3) doesn't seem to mention anything like it, > so I'm wondering how other people are testing individual > shell functions? Take a look at the test programs in here for other ideas: https://github.com/jmmv/shtk The background is that atf-sh has been mostly used for integration testing until now so the support for unit-testing shell functions hasn't been necessary. I agree that building some would be good.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAFY7cWDunqCZGVQdBbi0YZP-wxBa201zeFjgofsBw04WZmAdDw>