Changes since v1:
- Added regression tests in first patch.
- Left the `topath[]` cleanup outside the if block on patch 2, to make
it easier to read.
Matheus Tavares (2):
write_entry(): fix misuses of `path` in error messages
checkout-index: omit entries with no tempname from --temp output
builtin/checkout-index.c | 35 ++++++++++++++++++++++-----------
entry.c | 8 ++++----
t/t2006-checkout-index-basic.sh | 23 ++++++++++++++++++++++
3 files changed, 51 insertions(+), 15 deletions(-)
Range-diff against v1:
1: d52bcad326 ! 1: bdda5f99d0 write_entry(): fix misuses of `path` in error messages
@@ Commit message
writing to a tempfile. (In fact, `path` will be either empty or dirty
when writing to a tempfile.) Therefore, these variables cannot be used
interchangeably. In this sense, fix wrong uses of `path` in error
- messages where it should really be `ce->name`. (There doesn't seem to be
- any misuse in the other way around.)
+ messages where it should really be `ce->name`, and add some regression
+ tests. (Note: there doesn't seem to be any misuse in the other way
+ around.)
Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br>
@@ entry.c: static int write_entry(struct cache_entry *ce,
}
finish:
+
+ ## t/t2006-checkout-index-basic.sh ##
+@@ t/t2006-checkout-index-basic.sh: test_expect_success 'checkout-index reports errors (stdin)' '
+ test_i18ngrep not.in.the.cache stderr
+ '
+
++test_expect_success 'checkout-index --temp correctly reports error on missing blobs' '
++ test_when_finished git reset --hard &&
++ missing_blob=$(git hash-object --stdin </dev/null) &&
++ cat >objs <<-EOF &&
++ 100644 $missing_blob file
++ 120000 $missing_blob symlink
++ EOF
++ git update-index --index-info <objs &&
++
++ test_must_fail git checkout-index --temp symlink file 2>stderr &&
++ test_i18ngrep "unable to read sha1 file of file ($missing_blob)" stderr &&
++ test_i18ngrep "unable to read sha1 file of symlink ($missing_blob)" stderr
++'
++
++test_expect_success 'checkout-index --temp correctly reports error for submodules' '
++ git init sub &&
++ test_commit -C sub file &&
++ git submodule add ./sub &&
++ git commit -m sub &&
++ test_must_fail git checkout-index --temp sub 2>stderr &&
++ test_i18ngrep "cannot create temporary submodule sub" stderr
++'
++
+ test_done
2: 1275701345 ! 2: 6ece1947c1 checkout-index: omit entries with no tempname from --temp output
@@ builtin/checkout-index.c: static struct checkout state = CHECKOUT_INIT;
+ putchar('\t');
+ write_name_quoted_relative(name, prefix, stdout,
+ nul_term_line ? '\0' : '\n');
++ }
-- for (i = 0; i < 4; i++) {
-- topath[i][0] = 0;
-+ for (i = 0; i < 4; i++) {
-+ topath[i][0] = 0;
-+ }
- }
- }
-
+ for (i = 0; i < 4; i++) {
+ topath[i][0] = 0;