git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] tests: git push mirror mode tests V2

From
Andy Whitcroft <apw@shadowen.org>
Date
Nov 9, 2007, 09:12 UTC
Message-ID
<1194603673.0@pinky>
In-Reply-To
<1194541305.0@pinky>
Add some basic tests for git push --mirror mode.
Signed-off-by: Andy Whitcroft <apw@shadowen.org>
---
	Following the discussion on how tests which change directory
	should use subshells to prevent loss of CWD and of how
	! is not something we can rely on, here is an updates to
	the tests.
---
 t/t5517-push-mirror.sh |  125 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 125 insertions(+), 0 deletions(-)
diff --git a/t/t5517-push-mirror.sh b/t/t5517-push-mirror.sh
new file mode 100755
index 0000000..a65d2f5
--- /dev/null
+++ b/t/t5517-push-mirror.sh
@@ -0,0 +1,125 @@
+#!/bin/sh
+
+test_description='pushing to a mirror repository'
+
+. ./test-lib.sh
+
+D=`pwd`
+
+invert () {
+	if "$@"; then
+		return 1
+	else
+		return 0
+	fi
+}
+
+mk_repo_pair () {
+	rm -rf master mirror &&
+	mkdir mirror &&
+	(
+		cd mirror &&
+		git init
+	) &&
+	mkdir master &&
+	(
+		cd master &&
+		git init &&
+		git config remote.up.url ../mirror
+	)
+}
+
+
+test_expect_success 'push mirror does not create new branches' '
+
+	mk_repo_pair &&
+	(
+		cd master &&
+		echo one >foo && git add foo && git commit -m one &&
+		git push --mirror up
+	) &&
+	master_master=$(cd master && git show-ref -s --verify refs/heads/master) &&
+	mirror_master=$(cd mirror && git show-ref -s --verify refs/heads/master) &&
+	test "$master_master" = "$mirror_master"
+
+'
+
+test_expect_success 'push mirror does not update existing branches' '
+
+	mk_repo_pair &&
+	(
+		cd master &&
+		echo one >foo && git add foo && git commit -m one &&
+		git push --mirror up &&
+		echo two >foo && git add foo && git commit -m two &&
+		git push --mirror up
+	) &&
+	master_master=$(cd master && git show-ref -s --verify refs/heads/master) &&
+	mirror_master=$(cd mirror && git show-ref -s --verify refs/heads/master) &&
+	test "$master_master" = "$mirror_master"
+
+'
+
+test_expect_success 'push mirror does not force update existing branches' '
+
+	mk_repo_pair &&
+	(
+		cd master &&
+		echo one >foo && git add foo && git commit -m one &&
+		git push --mirror up &&
+		echo two >foo && git add foo && git commit -m two &&
+		git push --mirror up &&
+		git reset --hard HEAD^
+		git push --mirror up
+	) &&
+	master_master=$(cd master && git show-ref -s --verify refs/heads/master) &&
+	mirror_master=$(cd mirror && git show-ref -s --verify refs/heads/master) &&
+	test "$master_master" = "$mirror_master"
+
+'
+
+test_expect_success 'push mirror does not remove branches' '
+
+	mk_repo_pair &&
+	(
+		cd master &&
+		echo one >foo && git add foo && git commit -m one &&
+		git branch remove master &&
+		git push --mirror up &&
+		git branch -D remove
+		git push --mirror up 
+	) &&
+	(
+		cd mirror &&
+		invert git show-ref -s --verify refs/heads/remove
+	)
+
+'
+
+test_expect_success 'push mirror does not add, update and remove together' '
+
+	mk_repo_pair &&
+	(
+		cd master &&
+		echo one >foo && git add foo && git commit -m one &&
+		git branch remove master &&
+		git push --mirror up &&
+		git branch -D remove &&
+		git branch add master &&
+		echo two >foo && git add foo && git commit -m two &&
+		git push --mirror up
+	) &&
+	master_master=$(cd master && git show-ref -s --verify refs/heads/master) &&
+	master_add=$(cd master && git show-ref -s --verify refs/heads/add) &&
+	mirror_master=$(cd mirror && git show-ref -s --verify refs/heads/master) &&
+	mirror_add=$(cd mirror && git show-ref -s --verify refs/heads/add) &&
+	test "$master_master" = "$mirror_master" &&
+	test "$master_add" = "$mirror_add" &&
+	(
+		cd mirror &&
+		invert git show-ref -s --verify refs/heads/remove
+	)
+
+'
+
+test_done
Previous: Andy WhitcroftNext: Andy Whitcroft
Message 16 of 23 in “git push mirror mode”
  1. Andy WhitcroftNov 8, 2007
  2. 1/2 mirror pushingAndy Whitcroft, Nov 8, 2007
  3. 2/2 git-push: plumb in --mirror modeAndy Whitcroft, Nov 8, 2007
  4. Johannes SchindelinNov 8, 2007
  5. Andy WhitcroftNov 8, 2007
  6. Andreas EricssonNov 8, 2007
  7. Andy WhitcroftNov 8, 2007
  8. Andreas EricssonNov 8, 2007
  9. Andy WhitcroftNov 8, 2007
  10. Junio C HamanoNov 8, 2007
  11. 1/2 mirror pushingAndy Whitcroft, Nov 8, 2007
  12. Johannes SchindelinNov 8, 2007
  13. 2/2 git-push: plumb in --mirror modeAndy Whitcroft, Nov 8, 2007
  14. git push mirror mode V3Andy Whitcroft, Nov 8, 2007
  15. 4/4 tests: git push mirror mode testsAndy Whitcroft, Nov 8, 2007
  16. tests: git push mirror mode tests V2Andy Whitcroft, Nov 9, 2007
  17. tests: git push mirror mode tests V2 -- add tag testsAndy Whitcroft, Nov 9, 2007
  18. git-push: add documentation for the newly add --mirror modeAndy Whitcroft, Nov 9, 2007
  19. Junio C HamanoNov 9, 2007
  20. Andy WhitcroftNov 12, 2007
  21. 2/4 mirror pushing -- clean up match_refs flagsAndy Whitcroft, Nov 8, 2007
  22. 3/4 git-push: plumb in --mirror modeAndy Whitcroft, Nov 8, 2007
  23. 1/4 mirror pushingAndy Whitcroft, Nov 8, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.