t: add test harness for external credential helpers

We already have tests for the internal helpers, but it's nice to give authors of external tools an easy way to sanity-check their helpers. If you have written the "git-credential-foo" helper, you can do so with: GIT_TEST_CREDENTIAL_HELPER=foo \ make t0303-credential-external.sh This assumes that your helper is capable of both storing and retrieving credentials (some helpers may be read-only, and they will fail these tests). If your helper supports time-based expiration with a configurable timeout, you can test that feature like this: GIT_TEST_CREDENTIAL_HELPER_TIMEOUT="foo --timeout=1" \ make t0303-credential-external.sh Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Dec 10, 2011 at 05:35 UTC 861444f6d702b15713d0875ce9dc5aff64885fba
1 file changed +39
t/t0303-credential-external.sh new
+39
@@ -0,0 +1,39 @@
1 +#!/bin/sh
2 +
3 +test_description='external credential helper tests'
4 +. ./test-lib.sh
5 +. "$TEST_DIRECTORY"/lib-credential.sh
6 +
7 +pre_test() {
8 + test -z "$GIT_TEST_CREDENTIAL_HELPER_SETUP" ||
9 + eval "$GIT_TEST_CREDENTIAL_HELPER_SETUP"
10 +
11 + # clean before the test in case there is cruft left
12 + # over from a previous run that would impact results
13 + helper_test_clean "$GIT_TEST_CREDENTIAL_HELPER"
14 +}
15 +
16 +post_test() {
17 + # clean afterwards so that we are good citizens
18 + # and don't leave cruft in the helper's storage, which
19 + # might be long-term system storage
20 + helper_test_clean "$GIT_TEST_CREDENTIAL_HELPER"
21 +}
22 +
23 +if test -z "$GIT_TEST_CREDENTIAL_HELPER"; then
24 + say "# skipping external helper tests (set GIT_TEST_CREDENTIAL_HELPER)"
25 +else
26 + pre_test
27 + helper_test "$GIT_TEST_CREDENTIAL_HELPER"
28 + post_test
29 +fi
30 +
31 +if test -z "$GIT_TEST_CREDENTIAL_HELPER_TIMEOUT"; then
32 + say "# skipping external helper timeout tests"
33 +else
34 + pre_test
35 + helper_test_timeout "$GIT_TEST_CREDENTIAL_HELPER_TIMEOUT"
36 + post_test
37 +fi
38 +
39 +test_done