summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2012-03-13 10:09:16 +0000
committerRichard Maw <richard.maw@codethink.co.uk>2012-03-13 10:09:16 +0000
commit8d3e147ce89ad191d91441fbb30a242033c865e1 (patch)
treee6b65aab36c3e4fa134bc7f995f66ff00cceba0a /tests
parent654c752823ee54853cc47de24f15da7c6aef2453 (diff)
downloadlorry-8d3e147ce89ad191d91441fbb30a242033c865e1.tar.gz
tests: add check for no pushspec behaviour
If no push refspecs are given then every ref should be pushed
Diffstat (limited to 'tests')
-rwxr-xr-xtests/no-pushspec-pushall.script47
-rwxr-xr-xtests/no-pushspec-pushall.setup50
2 files changed, 97 insertions, 0 deletions
diff --git a/tests/no-pushspec-pushall.script b/tests/no-pushspec-pushall.script
new file mode 100755
index 0000000..cc56d8a
--- /dev/null
+++ b/tests/no-pushspec-pushall.script
@@ -0,0 +1,47 @@
+#!/bin/sh
+#
+# Tests that all refs are pushed if no push-refspecs are given
+#
+# Copyright (C) 2012 Codethink Limited
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+git_upstream="$DATADIR"/git-upstream
+logfile="$DATADIR"/no-pushspec-pushall.log
+workdir="$DATADIR"/work-dir
+
+lorryfile="$DATADIR"/no-pushspec.lorry
+cat >"$lorryfile" <<EOF
+{
+ "no-pushspec": {
+ "type": "git",
+ "url": "file://$git_upstream"
+ }
+}
+EOF
+
+mirror_path="$DATADIR"/git-mirror
+mkdir -p "$mirror_path"
+git init --quiet --bare "$mirror_path"/no-pushspec.git
+
+./lorry --log="$logfile" --working-area="$workdir" \
+ --mirror-base-url-push=file://"$mirror_path" \
+ --mirror-base-url-fetch=file://"$mirror_path" \
+ "$lorryfile"
+
+# verify that the git repository has all the refs that upstream does
+test "$(cd "$mirror_path"/no-pushspec.git && git for-each-ref | sort)" = \
+ "$(cd "$git_upstream" && git for-each-ref | sort)"
diff --git a/tests/no-pushspec-pushall.setup b/tests/no-pushspec-pushall.setup
new file mode 100755
index 0000000..afaaaf0
--- /dev/null
+++ b/tests/no-pushspec-pushall.setup
@@ -0,0 +1,50 @@
+#!/bin/sh
+#
+# Create an upstream git repository with multiple branches and tags
+#
+# Copyright (C) 2012 Codethink Limited
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+# create a test repo with multiple branches and tags
+git_upstream="$DATADIR"/git-upstream
+
+# make the initial commit and tag it
+git init --quiet "$git_upstream"
+cd "$git_upstream"
+echo line 1 >file.txt
+git add file.txt
+git commit --quiet -m 'initial commit'
+git tag initial-commit
+
+# make multiple branches with different changes then tag when merging
+git branch topic/morelines
+git checkout -b topic/newfile
+echo newfile >newfile.txt
+git add newfile.txt
+git commit --quiet -m 'add newfile.txt'
+git checkout master
+git merge topic/newfile
+git tag rc1
+git checkout topic/morelines
+for i in `seq 2 10`; do
+ echo line $i >>file.txt
+done
+git commit --quiet -m 'add more lines' file.txt
+git checkout master
+git merge topic/morelines
+git tag rc2
+