Merge branch 'am/update-pathspec-f-f-tests'
Test updates. * am/update-pathspec-f-f-tests: t: directly test parse_pathspec_file() t: fix quotes tests for --pathspec-from-file
This commit is contained in:
commit
6909474491
1
Makefile
1
Makefile
@ -721,6 +721,7 @@ TEST_BUILTINS_OBJS += test-mktemp.o
|
||||
TEST_BUILTINS_OBJS += test-oidmap.o
|
||||
TEST_BUILTINS_OBJS += test-online-cpus.o
|
||||
TEST_BUILTINS_OBJS += test-parse-options.o
|
||||
TEST_BUILTINS_OBJS += test-parse-pathspec-file.o
|
||||
TEST_BUILTINS_OBJS += test-path-utils.o
|
||||
TEST_BUILTINS_OBJS += test-pkt-line.o
|
||||
TEST_BUILTINS_OBJS += test-prio-queue.o
|
||||
|
33
t/helper/test-parse-pathspec-file.c
Normal file
33
t/helper/test-parse-pathspec-file.c
Normal file
@ -0,0 +1,33 @@
|
||||
#include "test-tool.h"
|
||||
#include "parse-options.h"
|
||||
#include "pathspec.h"
|
||||
#include "gettext.h"
|
||||
|
||||
int cmd__parse_pathspec_file(int argc, const char **argv)
|
||||
{
|
||||
struct pathspec pathspec;
|
||||
const char *pathspec_from_file = 0;
|
||||
int pathspec_file_nul = 0, i;
|
||||
|
||||
static const char *const usage[] = {
|
||||
"test-tool parse-pathspec-file --pathspec-from-file [--pathspec-file-nul]",
|
||||
NULL
|
||||
};
|
||||
|
||||
struct option options[] = {
|
||||
OPT_PATHSPEC_FROM_FILE(&pathspec_from_file),
|
||||
OPT_PATHSPEC_FILE_NUL(&pathspec_file_nul),
|
||||
OPT_END()
|
||||
};
|
||||
|
||||
parse_options(argc, argv, 0, options, usage, 0);
|
||||
|
||||
parse_pathspec_file(&pathspec, 0, 0, 0, pathspec_from_file,
|
||||
pathspec_file_nul);
|
||||
|
||||
for (i = 0; i < pathspec.nr; i++)
|
||||
printf("%s\n", pathspec.items[i].original);
|
||||
|
||||
clear_pathspec(&pathspec);
|
||||
return 0;
|
||||
}
|
@ -39,6 +39,7 @@ static struct test_cmd cmds[] = {
|
||||
{ "oidmap", cmd__oidmap },
|
||||
{ "online-cpus", cmd__online_cpus },
|
||||
{ "parse-options", cmd__parse_options },
|
||||
{ "parse-pathspec-file", cmd__parse_pathspec_file },
|
||||
{ "path-utils", cmd__path_utils },
|
||||
{ "pkt-line", cmd__pkt_line },
|
||||
{ "prio-queue", cmd__prio_queue },
|
||||
|
@ -29,6 +29,7 @@ int cmd__mktemp(int argc, const char **argv);
|
||||
int cmd__oidmap(int argc, const char **argv);
|
||||
int cmd__online_cpus(int argc, const char **argv);
|
||||
int cmd__parse_options(int argc, const char **argv);
|
||||
int cmd__parse_pathspec_file(int argc, const char** argv);
|
||||
int cmd__path_utils(int argc, const char **argv);
|
||||
int cmd__pkt_line(int argc, const char **argv);
|
||||
int cmd__prio_queue(int argc, const char **argv);
|
||||
|
108
t/t0067-parse_pathspec_file.sh
Executable file
108
t/t0067-parse_pathspec_file.sh
Executable file
@ -0,0 +1,108 @@
|
||||
#!/bin/sh
|
||||
|
||||
test_description='Test parse_pathspec_file()'
|
||||
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success 'one item from stdin' '
|
||||
cat >expect <<-\EOF &&
|
||||
fileA.t
|
||||
EOF
|
||||
|
||||
echo fileA.t |
|
||||
test-tool parse-pathspec-file --pathspec-from-file=- >actual &&
|
||||
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'one item from file' '
|
||||
cat >expect <<-\EOF &&
|
||||
fileA.t
|
||||
EOF
|
||||
|
||||
echo fileA.t >list &&
|
||||
test-tool parse-pathspec-file --pathspec-from-file=list >actual &&
|
||||
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'NUL delimiters' '
|
||||
cat >expect <<-\EOF &&
|
||||
fileA.t
|
||||
fileB.t
|
||||
EOF
|
||||
|
||||
printf "fileA.t\0fileB.t\0" |
|
||||
test-tool parse-pathspec-file --pathspec-from-file=- --pathspec-file-nul >actual &&
|
||||
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'LF delimiters' '
|
||||
cat >expect <<-\EOF &&
|
||||
fileA.t
|
||||
fileB.t
|
||||
EOF
|
||||
|
||||
printf "fileA.t\nfileB.t\n" |
|
||||
test-tool parse-pathspec-file --pathspec-from-file=- >actual &&
|
||||
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'no trailing delimiter' '
|
||||
cat >expect <<-\EOF &&
|
||||
fileA.t
|
||||
fileB.t
|
||||
EOF
|
||||
|
||||
printf "fileA.t\nfileB.t" |
|
||||
test-tool parse-pathspec-file --pathspec-from-file=- >actual &&
|
||||
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'CRLF delimiters' '
|
||||
cat >expect <<-\EOF &&
|
||||
fileA.t
|
||||
fileB.t
|
||||
EOF
|
||||
|
||||
printf "fileA.t\r\nfileB.t\r\n" |
|
||||
test-tool parse-pathspec-file --pathspec-from-file=- >actual &&
|
||||
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'quotes' '
|
||||
cat >expect <<-\EOF &&
|
||||
fileA.t
|
||||
EOF
|
||||
|
||||
cat >list <<-\EOF &&
|
||||
"file\101.t"
|
||||
EOF
|
||||
|
||||
test-tool parse-pathspec-file --pathspec-from-file=list >actual &&
|
||||
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success '--pathspec-file-nul takes quotes literally' '
|
||||
# Note: there is an extra newline because --pathspec-file-nul takes
|
||||
# input \n literally, too
|
||||
cat >expect <<-\EOF &&
|
||||
"file\101.t"
|
||||
|
||||
EOF
|
||||
|
||||
cat >list <<-\EOF &&
|
||||
"file\101.t"
|
||||
EOF
|
||||
|
||||
test-tool parse-pathspec-file --pathspec-from-file=list --pathspec-file-nul >actual &&
|
||||
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_done
|
@ -109,7 +109,11 @@ test_expect_success 'CRLF delimiters' '
|
||||
test_expect_success 'quotes' '
|
||||
restore_checkpoint &&
|
||||
|
||||
printf "\"file\\101.t\"" | git checkout --pathspec-from-file=- HEAD^1 &&
|
||||
cat >list <<-\EOF &&
|
||||
"file\101.t"
|
||||
EOF
|
||||
|
||||
git checkout --pathspec-from-file=list HEAD^1 &&
|
||||
|
||||
cat >expect <<-\EOF &&
|
||||
M fileA.t
|
||||
@ -120,7 +124,10 @@ test_expect_success 'quotes' '
|
||||
test_expect_success 'quotes not compatible with --pathspec-file-nul' '
|
||||
restore_checkpoint &&
|
||||
|
||||
printf "\"file\\101.t\"" >list &&
|
||||
cat >list <<-\EOF &&
|
||||
"file\101.t"
|
||||
EOF
|
||||
|
||||
test_must_fail git checkout --pathspec-from-file=list --pathspec-file-nul HEAD^1
|
||||
'
|
||||
|
||||
|
@ -109,7 +109,11 @@ test_expect_success 'CRLF delimiters' '
|
||||
test_expect_success 'quotes' '
|
||||
restore_checkpoint &&
|
||||
|
||||
printf "\"file\\101.t\"" | git restore --pathspec-from-file=- --source=HEAD^1 &&
|
||||
cat >list <<-\EOF &&
|
||||
"file\101.t"
|
||||
EOF
|
||||
|
||||
git restore --pathspec-from-file=list --source=HEAD^1 &&
|
||||
|
||||
cat >expect <<-\EOF &&
|
||||
M fileA.t
|
||||
@ -120,7 +124,10 @@ test_expect_success 'quotes' '
|
||||
test_expect_success 'quotes not compatible with --pathspec-file-nul' '
|
||||
restore_checkpoint &&
|
||||
|
||||
printf "\"file\\101.t\"" >list &&
|
||||
cat >list <<-\EOF &&
|
||||
"file\101.t"
|
||||
EOF
|
||||
|
||||
test_must_fail git restore --pathspec-from-file=list --pathspec-file-nul --source=HEAD^1
|
||||
'
|
||||
|
||||
|
@ -97,7 +97,11 @@ test_expect_success 'CRLF delimiters' '
|
||||
test_expect_success 'quotes' '
|
||||
restore_checkpoint &&
|
||||
|
||||
printf "\"file\\101.t\"" | git add --pathspec-from-file=- &&
|
||||
cat >list <<-\EOF &&
|
||||
"file\101.t"
|
||||
EOF
|
||||
|
||||
git add --pathspec-from-file=list &&
|
||||
|
||||
cat >expect <<-\EOF &&
|
||||
A fileA.t
|
||||
@ -108,7 +112,10 @@ test_expect_success 'quotes' '
|
||||
test_expect_success 'quotes not compatible with --pathspec-file-nul' '
|
||||
restore_checkpoint &&
|
||||
|
||||
printf "\"file\\101.t\"" >list &&
|
||||
cat >list <<-\EOF &&
|
||||
"file\101.t"
|
||||
EOF
|
||||
|
||||
test_must_fail git add --pathspec-from-file=list --pathspec-file-nul
|
||||
'
|
||||
|
||||
|
@ -105,8 +105,12 @@ test_expect_success 'CRLF delimiters' '
|
||||
test_expect_success 'quotes' '
|
||||
restore_checkpoint &&
|
||||
|
||||
cat >list <<-\EOF &&
|
||||
"file\101.t"
|
||||
EOF
|
||||
|
||||
git rm fileA.t &&
|
||||
printf "\"file\\101.t\"" | git reset --pathspec-from-file=- &&
|
||||
git reset --pathspec-from-file=list &&
|
||||
|
||||
cat >expect <<-\EOF &&
|
||||
D fileA.t
|
||||
@ -117,8 +121,10 @@ test_expect_success 'quotes' '
|
||||
test_expect_success 'quotes not compatible with --pathspec-file-nul' '
|
||||
restore_checkpoint &&
|
||||
|
||||
git rm fileA.t &&
|
||||
printf "\"file\\101.t\"" >list &&
|
||||
cat >list <<-\EOF &&
|
||||
"file\101.t"
|
||||
EOF
|
||||
|
||||
# Note: "git reset" has not yet learned to fail on wrong pathspecs
|
||||
git reset --pathspec-from-file=list --pathspec-file-nul &&
|
||||
|
||||
|
@ -100,7 +100,11 @@ test_expect_success 'CRLF delimiters' '
|
||||
test_expect_success 'quotes' '
|
||||
restore_checkpoint &&
|
||||
|
||||
printf "\"file\\101.t\"" | git commit --pathspec-from-file=- -m "Commit" &&
|
||||
cat >list <<-\EOF &&
|
||||
"file\101.t"
|
||||
EOF
|
||||
|
||||
git commit --pathspec-from-file=list -m "Commit" &&
|
||||
|
||||
cat >expect <<-\EOF &&
|
||||
A fileA.t
|
||||
@ -111,7 +115,10 @@ test_expect_success 'quotes' '
|
||||
test_expect_success 'quotes not compatible with --pathspec-file-nul' '
|
||||
restore_checkpoint &&
|
||||
|
||||
printf "\"file\\101.t\"" >list &&
|
||||
cat >list <<-\EOF &&
|
||||
"file\101.t"
|
||||
EOF
|
||||
|
||||
test_must_fail git commit --pathspec-from-file=list --pathspec-file-nul -m "Commit"
|
||||
'
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user