]> git.ipfire.org Git - thirdparty/git.git/commit - t/test-lib-functions.sh
test-lib: allow negation of prerequisites
authorJeff King <peff@peff.net>
Thu, 15 Nov 2012 00:33:25 +0000 (16:33 -0800)
committerJunio C Hamano <gitster@pobox.com>
Fri, 16 Nov 2012 01:47:24 +0000 (17:47 -0800)
commitbdccd3c1fb261dc6d4aaf9fae446eea7136b76e2
tree2f4f9debf5f5a2f90d6671bd09c84bb34c3ccf40
parentb0b00a3ee43b4813eb85728a482500f6422499fd
test-lib: allow negation of prerequisites

You can set and test a prerequisite like this:

  test_set_prereq FOO
  test_have_prereq FOO && echo yes

You can negate the test in the shell like this:

  ! test_have_prereq && echo no

However, when you are using the automatic prerequisite
checking in test_expect_*, there is no opportunity to use
the shell negation.  This patch introduces the syntax "!FOO"
to indicate that the test should only run if a prerequisite
is not meant.

One alternative is to set an explicit negative prerequisite,
like:

  if system_has_foo; then
  test_set_prereq FOO
  else
  test_set_prereq NO_FOO
  fi

However, this doesn't work for lazy prerequisites, which
associate a single test with a single name. We could teach
the lazy prereq evaluator to set both forms, but the code
change ends up quite similar to this one (because we still
need to convert NO_FOO into FOO to find the correct lazy
script).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t0000-basic.sh
t/test-lib-functions.sh