tests/test-remove
author Brodie Rao <brodie@bitheap.org>
Mon, 30 Aug 2010 20:27:25 -0400
branchstable
changeset 12129 07ac2a560fce
parent 9572 1f665246dab3
permissions -rwxr-xr-x
remove: properly set return code when warnings are issued This removes the warn() function in favor of issuing warnings directly for each kind of file that Mercurial won't remove. This also uses three separate translatable strings instead of using string formatting to build the message. This should make it easier to localize.

#!/bin/sh

remove() {
    hg rm $@
    echo "exit code: $?"
    hg st
    # do not use ls -R, which recurses in .hg subdirs on Mac OS X 10.5
    find . -name .hg -prune -o -type f -print | sort
    hg up -C
}

hg init a
cd a
echo a > foo

echo % file not managed
remove foo

hg add foo
hg commit -m1

# the table cases

echo % 00 state added, options none
echo b > bar
hg add bar
remove bar

echo % 01 state clean, options none
remove foo

echo % 02 state modified, options none
echo b >> foo
remove foo

echo % 03 state missing, options none
rm foo
remove foo

echo % 10 state added, options -f
echo b > bar
hg add bar
remove -f bar
rm bar

echo % 11 state clean, options -f
remove -f foo

echo % 12 state modified, options -f
echo b >> foo
remove -f foo

echo % 13 state missing, options -f
rm foo
remove -f foo

echo % 20 state added, options -A
echo b > bar
hg add bar
remove -A bar

echo % 21 state clean, options -A
remove -A foo

echo % 22 state modified, options -A
echo b >> foo
remove -A foo

echo % 23 state missing, options -A
rm foo
remove -A foo

echo % 30 state added, options -Af
echo b > bar
hg add bar
remove -Af bar
rm bar

echo % 31 state clean, options -Af
remove -Af foo

echo % 32 state modified, options -Af
echo b >> foo
remove -Af foo

echo % 33 state missing, options -Af
rm foo
remove -Af foo

# test some directory stuff

mkdir test
echo a > test/foo
echo b > test/bar
hg ci -Am2

echo % dir, options none
rm test/bar
remove test

echo % dir, options -f
rm test/bar
remove -f test

echo % dir, options -A
rm test/bar
remove -A test

echo % dir, options -Af
rm test/bar
remove -Af test

echo 'test remove dropping empty trees (issue1861)'
mkdir -p issue1861/b/c
echo x > issue1861/x
echo y > issue1861/b/c/y
hg ci -Am add
hg rm issue1861/b
hg ci -m remove
ls issue1861