1#!/bin/sh 2# 3# Copyright (c) 2006 Carl D. Worth 4# 5 6test_description='Test of the various options to git-rm.' 7 8. ./test-lib.sh 9 10# Setup some files to be removed, some with funny characters 11test_expect_success \ 12'Initialize test directory' \ 13"touch -- foo bar baz 'space embedded' -q && 14 git-add -- foo bar baz 'space embedded' -q && 15 git-commit -m 'add normal files' && 16 test_tabs=y && 17 if touch -- 'tab embedded' 'newline 18embedded' 19 then 20 git-add -- 'tab embedded' 'newline 21embedded' && 22 git-commit -m 'add files with tabs and newlines' 23 else 24 say 'Your filesystem does not allow tabs in filenames.' 25 test_tabs=n 26 fi" 27 28# Later we will try removing an unremovable path to make sure 29# git-rm barfs, but if the test is run as root that cannot be 30# arranged. 31test_expect_success \ 32'Determine rm behavior' \ 33': >test-file 34 chmod a-w . 35 rm -f test-file 36 test -f test-file && test_failed_remove=y 37 chmod 775 . 38 rm -f test-file' 39 40test_expect_success \ 41'Pre-check that foo exists and is in index before git-rm foo' \ 42'[ -f foo ] && git-ls-files --error-unmatch foo' 43 44test_expect_success \ 45'Test that git-rm foo succeeds' \ 46'git-rm foo' 47 48test_expect_success \ 49'Post-check that foo exists but is not in index after git-rm foo' \ 50'[ -f foo ] && ! git-ls-files --error-unmatch foo' 51 52test_expect_success \ 53'Pre-check that bar exists and is in index before "git-rm -f bar"' \ 54'[ -f bar ] && git-ls-files --error-unmatch bar' 55 56test_expect_success \ 57'Test that "git-rm -f bar" succeeds' \ 58'git-rm -f bar' 59 60test_expect_success \ 61'Post-check that bar does not exist and is not in index after "git-rm -f bar"' \ 62'! [ -f bar ] && ! git-ls-files --error-unmatch bar' 63 64test_expect_success \ 65'Test that "git-rm -- -q" succeeds (remove a file that looks like an option)' \ 66'git-rm -- -q' 67 68test"$test_tabs"= y && test_expect_success \ 69"Test that\"git-rm -f\"succeeds with embedded space, tab, or newline characters." \ 70"git-rm -f 'space embedded' 'tab embedded' 'newline 71embedded'" 72 73iftest"$test_failed_remove"= y;then 74chmod a-w . 75test_expect_failure \ 76'Test that "git-rm -f" fails if its rm fails' \ 77'git-rm -f baz' 78chmod775 . 79else 80 test_expect_success 'skipping removal failure (perhaps running as root?)': 81fi 82 83test_expect_success \ 84'When the rm in "git-rm -f" fails, it should not remove the file from the index' \ 85'git-ls-files --error-unmatch baz' 86 87test_done