[PATCH 3 of 3] add tests for new pre-push logic

Sune Foldager cryo at cyanite.org
Thu May 21 02:41:52 CDT 2009


# HG changeset patch
# User Sune Foldager <cryo at cyanite.org>
# Date 1242889824 -7200
# Node ID 349eec6ba41a4ca45ffe024ebee4d200b42c9b72
# Parent  eb08c59fab17c704a91bf1e6d0cecbc77132da4c
add tests for new pre-push logic

diff --git a/tests/test-push-logic b/tests/test-push-logic
new file mode 100644
--- /dev/null
+++ b/tests/test-push-logic
@@ -0,0 +1,118 @@
+#!/bin/sh
+
+echo push on existing branch and new branch
+hg init a
+hg --cwd a branch a
+echo 0 >> a/foo
+hg --cwd a add foo
+hg --cwd a ci -m "0"
+
+hg clone a b
+echo 1 >> b/foo
+hg --cwd b ci -m "1"
+hg --cwd b up -r 0 -C
+hg --cwd b branch b
+echo 2 >> b/foo
+hg --cwd b ci -m "2"
+hg --cwd b push | sed 's/pushing to.*/pushing/'
+echo
+
+rm -rf a b
+
+echo push on existing branch and existing branch with multiple heads
+hg init a
+hg --cwd a branch a
+echo 0 >> a/foo
+hg --cwd a add foo
+hg --cwd a ci -m "0"
+hg --cwd a branch b
+echo 1 >> a/foo
+hg --cwd a ci -m "1"
+
+hg clone a b
+hg --cwd b up -r 0 -C
+echo 2 >> b/foo
+hg --cwd b ci -m "2"
+hg --cwd b up -r 1 -C
+echo 3 >> b/foo
+hg --cwd b ci -m "3"
+hg --cwd b up -r 1 -C
+echo 4 >> b/foo
+hg --cwd b ci -m "4"
+hg --cwd b push | sed 's/pushing to.*/pushing/'
+hg --cwd b push -r 2 -r 3 | sed 's/pushing to.*/pushing/'
+echo
+
+rm -rf a b
+
+echo fail on multiple head push
+
+hg init a
+echo 0 >> a/foo
+hg --cwd a branch a
+hg --cwd a add foo
+hg --cwd a ci -m "0"
+
+hg clone a b
+echo 1 >> b/foo
+hg --cwd b ci -m "1"
+hg --cwd b up -r 0 -C
+echo 2 >> b/foo
+hg --cwd b ci -m "2"
+hg --cwd b push | sed 's/pushing to.*/pushing/'
+
+echo
+
+rm -rf a b
+
+echo merge of branch a to other branch b followed by unrelated push on branch a
+hg init a
+echo 0 > a/foo
+hg --cwd a branch a
+hg --cwd a add foo
+hg --cwd a ci -m "0"
+echo 1 > a/foo
+hg --cwd a branch b
+hg --cwd a ci -m "1"
+hg --cwd a up -r 0 -C
+echo 2 > a/foo
+hg --cwd a ci -m "2"
+
+hg clone a b
+hg clone a c
+
+HGMERGE=internal:merge hg --cwd b merge -r 1 # merge b down to a
+hg --cwd b resolve -m foo
+hg --cwd b ci -m "3 on b"
+hg --cwd b push | sed 's/pushing to.*/pushing/'
+
+hg --cwd c up -r 1
+echo 3 > c/foo
+hg --cwd c ci -m "3 on c"
+hg --cwd c push | sed 's/pushing to.*/pushing/'
+echo
+
+rm -rf a b c
+
+echo cheating the count algorithm
+hg init a
+echo 0 > a/foo
+hg --cwd a add foo
+hg --cwd a ci -m "0"
+echo 1 > a/foo
+hg --cwd a ci -m "1"
+hg --cwd a up -r 0 -C
+echo 2 > a/foo
+hg --cwd a ci -m "2"
+
+hg clone a b
+HGMERGE=internal:merge hg --cwd b merge -r 1
+hg --cwd b resolve -m foo
+hg --cwd b ci -m "3"
+hg --cwd b up -r 0
+echo 4 > b/foo
+hg --cwd b ci -m "4"
+hg --cwd b push | sed 's/pushing to.*/pushing/'
+echo
+
+exit 0
diff --git a/tests/test-push-logic.out b/tests/test-push-logic.out
new file mode 100644
--- /dev/null
+++ b/tests/test-push-logic.out
@@ -0,0 +1,92 @@
+push on existing branch and new branch
+marked working directory as branch a
+updating working directory
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+marked working directory as branch b
+created new head
+abort: push creates new remote branch 'b'!
+pushing
+searching for changes
+(did you forget to merge? use push -f to force)
+
+push on existing branch and existing branch with multiple heads
+marked working directory as branch a
+marked working directory as branch b
+updating working directory
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+created new head
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+created new head
+abort: push creates new remote heads!
+pushing
+searching for changes
+(did you forget to merge? use push -f to force)
+pushing
+searching for changes
+adding changesets
+adding manifests
+adding file changes
+added 2 changesets with 2 changes to 1 files (+1 heads)
+
+fail on multiple head push
+marked working directory as branch a
+updating working directory
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+created new head
+abort: push creates new remote heads!
+pushing
+searching for changes
+(did you forget to merge? use push -f to force)
+
+merge of branch a to other branch b followed by unrelated push on branch a
+marked working directory as branch a
+marked working directory as branch b
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+created new head
+updating working directory
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+updating working directory
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+merging foo
+warning: conflicts during merge.
+merging foo failed!
+0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to abandon
+pushing
+searching for changes
+adding changesets
+adding manifests
+adding file changes
+added 1 changesets with 1 changes to 1 files (-1 heads)
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+note: unsynced remote changes!
+pushing
+searching for changes
+adding changesets
+adding manifests
+adding file changes
+added 1 changesets with 1 changes to 1 files (+1 heads)
+
+cheating the count algorithm
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+created new head
+updating working directory
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+merging foo
+warning: conflicts during merge.
+merging foo failed!
+0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to abandon
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+created new head
+pushing
+searching for changes
+adding changesets
+adding manifests
+adding file changes
+added 2 changesets with 2 changes to 1 files
+


More information about the Mercurial-devel mailing list