Merge branch 'js/maint-reflog-beyond-horizon'

* js/maint-reflog-beyond-horizon:
  t1503: fix broken test_must_fail calls
  rev-parse: tests git rev-parse --verify master@{n}, for various n
  sha1_name.c: use warning in preference to fprintf(stderr
  rev-parse: exit with non-zero status if ref@{n} is not valid.
This commit is contained in:
Junio C Hamano 2010-09-03 22:24:29 -07:00
commit 306d7e5556
3 changed files with 29 additions and 9 deletions

View File

@ -342,7 +342,7 @@ static int get_sha1_1(const char *name, int len, unsigned char *sha1);
static int get_sha1_basic(const char *str, int len, unsigned char *sha1)
{
static const char *warning = "warning: refname '%.*s' is ambiguous.\n";
static const char *warn_msg = "refname '%.*s' is ambiguous.";
char *real_ref = NULL;
int refs_found = 0;
int at, reflog_len;
@ -390,7 +390,7 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1)
return -1;
if (warn_ambiguous_refs && refs_found > 1)
fprintf(stderr, warning, len, str);
warning(warn_msg, len, str);
if (reflog_len) {
int nth, i;
@ -426,14 +426,14 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1)
if (read_ref_at(real_ref, at_time, nth, sha1, NULL,
&co_time, &co_tz, &co_cnt)) {
if (at_time)
fprintf(stderr,
"warning: Log for '%.*s' only goes "
"back to %s.\n", len, str,
warning("Log for '%.*s' only goes "
"back to %s.", len, str,
show_date(co_time, co_tz, DATE_RFC2822));
else
fprintf(stderr,
"warning: Log for '%.*s' only has "
"%d entries.\n", len, str, co_cnt);
else {
free(real_ref);
die("Log for '%.*s' only has %d entries.",
len, str, co_cnt);
}
}
}

View File

@ -104,4 +104,15 @@ test_expect_success 'use --default' '
test_must_fail git rev-parse --verify --default bar
'
test_expect_success 'master@{n} for various n' '
N=$(git reflog | wc -l) &&
Nm1=$((N-1)) &&
Np1=$((N+1)) &&
git rev-parse --verify master@{0} &&
git rev-parse --verify master@{1} &&
git rev-parse --verify master@{$Nm1} &&
test_must_fail git rev-parse --verify master@{$N} &&
test_must_fail git rev-parse --verify master@{$Np1}
'
test_done

View File

@ -66,4 +66,13 @@ test_expect_success 'incorrect file in :path and :N:path' '
grep "fatal: Path '"'"'disk-only.txt'"'"' exists on disk, but not in the index." error
'
test_expect_success 'invalid @{n} reference' '
test_must_fail git rev-parse master@{99999} >output 2>error &&
test -z "$(cat output)" &&
grep "fatal: Log for [^ ]* only has [0-9][0-9]* entries." error &&
test_must_fail git rev-parse --verify master@{99999} >output 2>error &&
test -z "$(cat output)" &&
grep "fatal: Log for [^ ]* only has [0-9][0-9]* entries." error
'
test_done