| #!/bin/sh |
| |
| test_description='Undo external modifications of the stack' |
| |
| . ./test-lib.sh |
| |
| # Ignore our own output files. |
| cat > .git/info/exclude <<EOF |
| /expected.txt |
| /head?.txt |
| EOF |
| |
| test_expect_success 'Initialize StGit stack' ' |
| stg init && |
| echo 000 >> a && |
| stg add a && |
| git commit -m p0 && |
| echo 111 >> a && |
| stg add a && |
| git commit -m p1 && |
| stg uncommit -n 1 |
| ' |
| |
| cat > expected.txt <<EOF |
| 000 |
| 111 |
| 222 |
| EOF |
| test_expect_success 'Make a git commit and turn it into a patch' ' |
| git rev-parse HEAD > head0.txt && |
| echo 222 >> a && |
| stg add a && |
| git commit -m p2 && |
| git rev-parse HEAD > head1.txt && |
| stg repair && |
| test "$(echo $(stg series))" = "+ p1 > p2" && |
| test_cmp expected.txt a |
| ' |
| |
| cat > expected.txt <<EOF |
| 000 |
| 111 |
| 222 |
| EOF |
| test_expect_success 'Undo the patchification' ' |
| stg undo && |
| git rev-parse HEAD > head2.txt && |
| test_cmp head1.txt head2.txt && |
| test "$(echo $(stg series))" = "> p1" && |
| test_cmp expected.txt a |
| ' |
| |
| cat > expected.txt <<EOF |
| 000 |
| 111 |
| EOF |
| test_expect_success 'Undo the commit' ' |
| stg undo && |
| git rev-parse HEAD > head3.txt && |
| test_cmp head0.txt head3.txt && |
| test "$(echo $(stg series))" = "> p1" && |
| test_cmp expected.txt a |
| ' |
| |
| test_done |