From 60838613054f43d63086b0f4a7596baaee9e20c5 Mon Sep 17 00:00:00 2001 From: Jiang Xin Date: Wed, 24 Jul 2013 10:22:04 +0800 Subject: git-clean: implement partial matching for selection Document for interactive git-clean says: "You also could say `c` or `clean` above as long as the choice is unique". But it's not true, because only hotkey `c` and full match (`clean`) could work. Implement partial matching via find_unique function to make the document right. Signed-off-by: Jiang Xin Signed-off-by: Junio C Hamano --- t/t7301-clean-interactive.sh | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) (limited to 't') diff --git a/t/t7301-clean-interactive.sh b/t/t7301-clean-interactive.sh index 4e6055d06a..3ae394e934 100755 --- a/t/t7301-clean-interactive.sh +++ b/t/t7301-clean-interactive.sh @@ -17,7 +17,7 @@ test_expect_success 'setup' ' ' -test_expect_success 'git clean -i (clean)' ' +test_expect_success 'git clean -i (c: clean hotkey)' ' mkdir -p build docs && touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ @@ -38,12 +38,33 @@ test_expect_success 'git clean -i (clean)' ' ' +test_expect_success 'git clean -i (cl: clean prefix)' ' + + mkdir -p build docs && + touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ + docs/manual.txt obj.o build/lib.so && + echo cl | git clean -i && + test -f Makefile && + test -f README && + test -f src/part1.c && + test -f src/part2.c && + test ! -f a.out && + test -f docs/manual.txt && + test ! -f src/part3.c && + test ! -f src/part3.h && + test ! -f src/part4.c && + test ! -f src/part4.h && + test -f obj.o && + test -f build/lib.so + +' + test_expect_success 'git clean -i (quit)' ' mkdir -p build docs && touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ docs/manual.txt obj.o build/lib.so && - echo q | git clean -i && + echo quit | git clean -i && test -f Makefile && test -f README && test -f src/part1.c && @@ -256,6 +277,21 @@ test_expect_success 'git clean -id (select - number 3)' ' ' +test_expect_success 'git clean -id (select - filenames)' ' + + mkdir -p build docs && + touch a.out foo.txt bar.txt baz.txt && + (echo s; echo a.out fo ba bar; echo; echo c) | \ + git clean -id && + test -f Makefile && + test ! -f a.out && + test ! -f foo.txt && + test ! -f bar.txt && + test -f baz.txt && + rm baz.txt + +' + test_expect_success 'git clean -id (select - range)' ' mkdir -p build docs && -- cgit v1.2.3