summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2015-07-04 21:36:17 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2015-07-04 21:40:47 +0100
commitc963c8da4cb34cc4ddddaf2b936dbfef10f74e58 (patch)
tree0f7d68e56c49a6fb7b1b1e243681d412e7a4824b /tests
parent2522d3ba9ca4b00bffc107342f471fabac0a04b9 (diff)
Test suite: Check that master is not updated non-ff
Diffstat (limited to 'tests')
-rwxr-xr-xtests/tests/drs-push-masterupdate50
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/tests/drs-push-masterupdate b/tests/tests/drs-push-masterupdate
new file mode 100755
index 0000000..cc77b77
--- /dev/null
+++ b/tests/tests/drs-push-masterupdate
@@ -0,0 +1,50 @@
+#!/bin/bash
+set -e
+. tests/lib
+
+t-drs
+t-tstunt-parsechangelog
+
+t-prep-newpackage example 1.0
+
+cd $p
+
+git tag common-ancestor
+
+revision=1
+t-dgit build
+t-dgit push --new
+
+push_and_check () {
+ git push $tmp/git/$p.git $1
+
+ oldmaster=`cd $tmp/git/$p.git && t-git-get-ref refs/heads/master`
+
+ t-refs-same-start
+ git checkout dgit/sid
+ t-commit 'Empty update'
+ t-dgit build
+ t-dgit push --new
+
+ t-pushed-good dgit/sid
+}
+
+t-check-master-undisturbed () {
+ local master=`t-git-get-ref refs/heads/master`
+ if [ x$master != x$oldmaster ]; then fail "bad update to master"; fi
+}
+
+t_check_pushed_master=t-check-master-undisturbed
+
+git checkout -b divergent common-ancestor
+git commit --allow-empty -m 'Has common ancestor'
+git push $tmp/git/$p.git HEAD:master
+
+push_and_check HEAD:master
+
+git checkout --orphan newroot
+git commit --allow-empty -m 'Has no common ancestor'
+
+push_and_check +HEAD:master
+
+echo done.