1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
#!/bin/sh
# Copyright (c) 2007 Karl Hasselström
test_description='Test the push and pop commands'
. ./test-lib.sh
test_expect_success \
'Test behavior on uninitialized repo' '
command_error stg prev 2>&1 | grep -e "branch not initialized" &&
command_error stg next 2>&1 | grep -e "branch not initialized" &&
command_error stg top 2>&1 | grep -e "branch not initialized" &&
command_error stg pop 2>&1 | grep -e "branch not initialized" &&
command_error stg push 2>&1 | grep -e "branch not initialized"
'
test_expect_success \
'Initialize the StGIT repository' \
'stg init'
test_expect_success \
'Test behavior on empty repo' '
command_error stg prev 2>&1 | grep -e "Not enough applied patches" &&
command_error stg next 2>&1 | grep -e "No unapplied patches" &&
command_error stg top 2>&1 | grep -e "No patches applied" &&
command_error stg pop 2>&1 | grep -e "No patches applied" &&
command_error stg push 2>&1 | grep -e "No patches to push"
'
test_expect_success \
'Create ten patches' '
for i in 0 1 2 3 4 5 6 7 8 9; do
stg new p$i -m p$i;
done &&
[ "$(echo $(stg series --applied --noprefix))" = "p0 p1 p2 p3 p4 p5 p6 p7 p8 p9" ] &&
[ "$(echo $(stg series --unapplied --noprefix))" = "" ]
'
test_expect_success \
'Check prev, next, and top with all applied' '
command_error stg next 2>&1 | grep -e "No unapplied patches" &&
[ "$(echo $(stg prev))" = "p8" ] &&
[ "$(echo $(stg top))" = "p9" ]
'
test_expect_success \
'Pop three patches' '
stg pop -n 3 &&
[ "$(echo $(stg series --applied --noprefix))" = "p0 p1 p2 p3 p4 p5 p6" ] &&
[ "$(echo $(stg series --unapplied --noprefix))" = "p7 p8 p9" ]
'
test_expect_success \
'Check prev, next, and top with some applied' '
[ "$(echo $(stg next))" = "p7" ] &&
[ "$(echo $(stg prev))" = "p5" ]
'
test_expect_success \
'Check prev, next, and top with invalid arguments' '
command_error stg prev bogus_arg 2>&1 | grep -e "incorrect number of arguments" &&
command_error stg next bogus_arg 2>&1 | grep -e "incorrect number of arguments" &&
command_error stg top bogus_arg 2>&1 | grep -e "incorrect number of arguments"
'
test_expect_success \
'Pop the remaining patches' '
stg pop -a &&
[ "$(echo $(stg series --applied --noprefix))" = "" ] &&
[ "$(echo $(stg series --unapplied --noprefix))" = "p0 p1 p2 p3 p4 p5 p6 p7 p8 p9" ] &&
command_error stg pop 2>&1 | grep -e "No patches applied"
'
test_expect_success \
'Check prev, next, and top with none applied' '
command_error stg prev &&
[ "$(echo $(stg next))" = "p0" ] &&
command_error stg top
'
test_expect_success \
'Push them back' '
stg push -a &&
[ "$(echo $(stg series --applied --noprefix))" = "p0 p1 p2 p3 p4 p5 p6 p7 p8 p9" ] &&
[ "$(echo $(stg series --unapplied --noprefix))" = "" ] &&
command_error stg push 2>&1 | grep -e "No patches to push"
'
test_expect_success \
'Pop all but seven patches' '
stg pop -n -7 &&
[ "$(echo $(stg series --applied --noprefix))" = "p0 p1 p2 p3 p4 p5 p6" ] &&
[ "$(echo $(stg series --unapplied --noprefix))" = "p7 p8 p9" ]
'
test_expect_success \
'Pop no patches (quietly)' '
[ -z "$(stg pop -n 0 2>&1)" ] &&
[ "$(echo $(stg series --applied --noprefix))" = "p0 p1 p2 p3 p4 p5 p6" ] &&
[ "$(echo $(stg series --unapplied --noprefix))" = "p7 p8 p9" ]
'
test_expect_success \
'Pop remaining seven patches' '
stg pop -n 7 &&
[ "$(echo $(stg series --applied --noprefix))" = "" ] &&
[ "$(echo $(stg series --unapplied --noprefix))" = "p0 p1 p2 p3 p4 p5 p6 p7 p8 p9" ]
'
test_expect_success \
'Push two patches' '
stg push -n 2 &&
[ "$(echo $(stg series --applied --noprefix))" = "p0 p1" ] &&
[ "$(echo $(stg series --unapplied --noprefix))" = "p2 p3 p4 p5 p6 p7 p8 p9" ]
'
test_expect_success \
'Push no patches (quietly)' '
[ -z "$(stg push -n 0 2>&1)" ] &&
[ "$(echo $(stg series --applied --noprefix))" = "p0 p1" ] &&
[ "$(echo $(stg series --unapplied --noprefix))" = "p2 p3 p4 p5 p6 p7 p8 p9" ]
'
test_expect_success \
'Push all but three patches' '
stg push -n -3 &&
[ "$(echo $(stg series --applied --noprefix))" = "p0 p1 p2 p3 p4 p5 p6" ] &&
[ "$(echo $(stg series --unapplied --noprefix))" = "p7 p8 p9" ]
'
test_expect_success \
'Push two patches in reverse' '
stg push -n 2 --reverse
[ "$(echo $(stg series --applied --noprefix))" = "p0 p1 p2 p3 p4 p5 p6 p8 p7" ] &&
[ "$(echo $(stg series --unapplied --noprefix))" = "p9" ]
'
test_expect_success \
'Attempt to push already applied patches' '
command_error stg push p0..p2 2>&1 | grep -e "Patches already applied" &&
command_error stg push p99999 2>&1 | grep -e "Unknown patch name: p99999"
'
test_done
|