Re: [PATCH v2 7/9] test/count: fix numeric comparision tests on FreeBSD

Subject: Re: [PATCH v2 7/9] test/count: fix numeric comparision tests on FreeBSD

Date: Thu, 31 May 2012 00:00:50 +0300

To: Jameson Graef Rollins, Mike Kelly,


From: Tomi Ollila

On Wed, May 30 2012, Jameson Graef Rollins <> wrote:

> On Wed, May 30 2012, Mike Kelly <> wrote:
>> FreeBSD's `wc -l` includes some white space in front of the number.
>> Instead, we add a test_expect_equal_num() to, which ensures
>> we do a proper numeric comparision, and in a portable way.
> Is there a way we can avoid adding another new test function here?  This
> new function is almost completely identical with the old one, except
> that it uses "test .. -eq" instead of "[ .. =".  If the problem is just
> that the arguments occasionally contain superfluous spaces, I would
> rather see the existing function just strip the spaces.  Of maybe add an
> option to the test to ask for arithmetic rather than string comparison.
> That would be preferable to introducing an new function that is
> confusingly similar to an existing one.

I liked Mike's suggestion as I also thought the options; stripping in
test_expect_equal cannot be done as there might be whitespace differences
which mean failure arguments to test_expect_equal cannot be given without
quotes as variable might be split into multiple args. if test_expect_equal
were changed to take comparison argument (like '-eq' or '=')  then all
calls would need to be changes (and function name could be changed to
something more generic...) None of these sounded as good options...

But, there is at least one option more:

test_expect_equal \
-    "`notmuch search --output=messages ${SEARCH} | wc -l`" \
+    "$((`notmuch search --output=messages ${SEARCH} | wc -l`))" \
    "`notmuch count --output=messages ${SEARCH}`"

this makes arithmetic evaluation -- no operation to be done but
the spaces around the value are dropped.

> jamie.