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
|
#!/usr/bin/env bash
set -e
source test/setup
use Test::More
export round=0
test_round() {
clone-foo-and-bar
round=$(( round + 1 ))
normalize_dir=$1
normalize_dir=${normalize_dir#./}
normalize_dir=${normalize_dir%/}
while [[ $normalize_dir =~ (//+) ]]; do normalize_dir=${normalize_dir//${BASH_REMATCH[1]}/\/}; done
clone_output=$(
cd "$OWNER/foo"
git subrepo clone "$UPSTREAM/bar" -- "$normalize_dir"
)
# Check output is correct:
is "$clone_output" \
"Subrepo '$UPSTREAM/bar' (master) cloned into '$normalize_dir'." \
'subrepo clone command output is correct'
test-exists "$OWNER/foo/$normalize_dir/"
(
cd "$OWNER/bar"
git pull
add-new-files Bar2-$round
git push
) &> /dev/null || die
# Do the pull and check output:
{
is "$(
cd "$OWNER/foo"
git subrepo pull -- "$normalize_dir"
)" \
"Subrepo '$normalize_dir' pulled from '$UPSTREAM/bar' (master)." \
'subrepo pull command output is correct'
}
test-exists "$OWNER/foo/$normalize_dir/"
(
cd "$OWNER/foo/$normalize_dir"
git pull
add-new-files new-$round
git push
) &> /dev/null || die
# Do the push and check output:
{
is "$(
cd "$OWNER/foo"
git subrepo push -- "$normalize_dir"
)" \
"Subrepo '$normalize_dir' pushed to '$UPSTREAM/bar' (master)." \
'subrepo push command output is correct'
}
}
test_round normal
test_round .dot
test_round ......dots
test_round 'spa ce'
test_round 'per%cent'
test_round 'back-sl\as/h'
test_round 'end-with.lock'
# test_round '@' # TODO Fix. This broke on recent git version...
test_round '@{'
test_round '['
test_round '-begin-with-minus'
test_round 'tailing-slash/'
test_round 'tailing-dots...'
test_round 'special-char:^[?*'
test_round 'many////slashes'
test_round '_under_scores_'
test_round '.str%a\nge...'
test_round ~'////......s:a^t?r a*n[g@{e.lock'
done_testing
teardown
|