blob: 5e9b8fb871e92161d9b8b8b09637b890c64fa59d [file] [log] [blame]
#!/bin/sh
#
# Copyright (c) 2006 Catalin Marinas
#
test_description='Test the uncommit command.
'
. ./test-lib.sh
test_expect_success \
'Initialize the StGIT repository' \
'stg init
'
test_expect_success \
'Create the first patch' \
'
stg new foo -m "Foo Patch" &&
echo foo > test &&
stg add test &&
stg refresh
'
test_expect_success \
'Create the second patch' \
'
stg new bar -m "Bar Patch" &&
echo bar > test &&
stg add test &&
stg refresh
'
test_expect_success \
'Commit the patches' \
'
stg commit --all
'
test_expect_success \
'Uncommit the patches using names' \
'
stg uncommit bar foo &&
[ "$(stg id foo)" = "$(stg id bar^)" ] &&
stg commit --all
'
test_expect_success \
'Uncommit the patches using prefix' \
'
stg uncommit --number=2 foobar &&
[ "$(stg id foobar1)" = "$(stg id foobar2^)" ] &&
stg commit --all
'
test_expect_success \
'Uncommit the patches using auto names' \
'
stg uncommit --number=2 &&
[ "$(stg id foo-patch)" = "$(stg id bar-patch^)" ] &&
stg commit --all
'
test_expect_success \
'Uncommit the patches one by one' \
'
stg uncommit &&
stg uncommit &&
[ "$(stg id foo-patch)" = "$(stg id bar-patch^)" ] &&
stg commit --all
'
test_expect_success \
'Uncommit the patches with --to' '
stg uncommit --to HEAD^ &&
[ "$(stg id foo-patch)" = "$(stg id bar-patch^)" ] &&
stg commit --all
'
test_expect_success 'Uncommit a commit with not precisely one parent' '
command_error stg uncommit -n 5 &&
[ "$(echo $(stg series))" = "" ]
'
# stg uncommit should work even when top != head, and should not touch
# the head.
test_expect_success 'Uncommit when top != head' '
stg new -m foo &&
git reset --hard HEAD^ &&
h=$(git rev-parse HEAD)
stg uncommit bar &&
test $(git rev-parse HEAD) = $h &&
test "$(echo $(stg series))" = "+ bar > foo"
'
test_done