Skip to content

Commit

Permalink
Merge branch 'js/maint-reflog-beyond-horizon'
Browse files Browse the repository at this point in the history
* 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.
  • Loading branch information
Junio C Hamano committed Sep 4, 2010
2 parents c208e05 + ba9eab7 commit 306d7e5
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 9 deletions.
18 changes: 9 additions & 9 deletions sha1_name.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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);
}
}
}

Expand Down
11 changes: 11 additions & 0 deletions t/t1503-rev-parse-verify.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
9 changes: 9 additions & 0 deletions t/t1506-rev-parse-diagnosis.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 306d7e5

Please sign in to comment.