{"thread":{"id":"1147","subject":"[PATCH 1/2] Add t/t6003 with some --topo-order tests","startedAt":"2005-07-07T00:50:04Z","lastAt":"2005-07-07T01:01:22Z","messageCount":2,"participants":["Jon Seymour","Linus Torvalds"],"isPatch":true,"patchVersion":1,"patchTotal":2},"messages":[{"id":"5740","messageId":"20050707005004.9205.qmail@blackcubes.dyndns.org","threadId":"1147","inReplyTo":null,"subject":"[PATCH 1/2] Add t/t6003 with some --topo-order tests","fromName":"Jon Seymour","fromEmail":"jon.seymour@gmail.com","sentAt":"2005-07-07T00:50:04Z","receivedAt":"2005-07-07T00:50:04Z","isPatch":true,"sender":{"key":"jon.seymour@gmail.com","avatar":"https://avatars.githubusercontent.com/u/207131?v=4"},"body":"\nSigned-off-by: Jon Seymour <jon.seymour@gmail.com>\n---\nLinus: the last test fails with --topo-order at the moment. I haven't\nseen your most recent changes, so it may still fail for trivial \nreasons even then. If so, I'll post an update.\n\n t/t6003-rev-list-topo-order.sh |  417 ++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 417 insertions(+), 0 deletions(-)\n create mode 100755 t/t6003-rev-list-topo-order.sh\n\n4adac54d3b1503168c54c8eb03e78ab09762c7f7\ndiff --git a/t/t6003-rev-list-topo-order.sh b/t/t6003-rev-list-topo-order.sh\nnew file mode 100755\n--- /dev/null\n+++ b/t/t6003-rev-list-topo-order.sh\n@@ -0,0 +1,417 @@\n+#!/bin/sh\n+#\n+# Copyright (c) 2005 Jon Seymour\n+#\n+\n+test_description='Tests git-rev-list --topo-order functionality'\n+\n+. ./test-lib.sh\n+. ../t6000-lib.sh # t6xxx specific functions\n+\n+list_duplicates()\n+{\n+    \"$@\" | sort | uniq -d\n+}\n+\n+date >path0\n+git-update-cache --add path0\n+save_tag tree git-write-tree\n+on_committer_date \"1971-08-16 00:00:00\" hide_error save_tag root unique_commit root tree\n+on_committer_date \"1971-08-16 00:00:01\" save_tag l0 unique_commit l0 tree -p root\n+on_committer_date \"1971-08-16 00:00:02\" save_tag l1 unique_commit l1 tree -p l0\n+on_committer_date \"1971-08-16 00:00:03\" save_tag l2 unique_commit l2 tree -p l1\n+on_committer_date \"1971-08-16 00:00:04\" save_tag a0 unique_commit a0 tree -p l2\n+on_committer_date \"1971-08-16 00:00:05\" save_tag a1 unique_commit a1 tree -p a0\n+on_committer_date \"1971-08-16 00:00:06\" save_tag b1 unique_commit b1 tree -p a0\n+on_committer_date \"1971-08-16 00:00:07\" save_tag c1 unique_commit c1 tree -p b1\n+on_committer_date \"1971-08-16 00:00:08\" as_author foobar@example.com save_tag b2 unique_commit b2 tree -p b1\n+on_committer_date \"1971-08-16 00:00:09\" save_tag b3 unique_commit b2 tree -p b2\n+on_committer_date \"1971-08-16 00:00:10\" save_tag c2 unique_commit c2 tree -p c1 -p b2\n+on_committer_date \"1971-08-16 00:00:11\" save_tag c3 unique_commit c3 tree -p c2\n+on_committer_date \"1971-08-16 00:00:12\" save_tag a2 unique_commit a2 tree -p a1\n+on_committer_date \"1971-08-16 00:00:13\" save_tag a3 unique_commit a3 tree -p a2\n+on_committer_date \"1971-08-16 00:00:14\" save_tag b4 unique_commit b4 tree -p b3 -p a3\n+on_committer_date \"1971-08-16 00:00:15\" save_tag a4 unique_commit a4 tree -p a3 -p b4 -p c3\n+on_committer_date \"1971-08-16 00:00:16\" save_tag l3 unique_commit l3 tree -p a4\n+on_committer_date \"1971-08-16 00:00:17\" save_tag l4 unique_commit l4 tree -p l3\n+on_committer_date \"1971-08-16 00:00:18\" save_tag l5 unique_commit l5 tree -p l4\n+on_committer_date \"1971-08-16 00:00:19\" save_tag m1 unique_commit m1 tree -p a4 -p c3\n+on_committer_date \"1971-08-16 00:00:20\" save_tag m2 unique_commit m2 tree -p c3 -p a4\n+on_committer_date \"1971-08-16 00:00:21\" hide_error save_tag alt_root unique_commit alt_root tree\n+on_committer_date \"1971-08-16 00:00:22\" save_tag r0 unique_commit r0 tree -p alt_root\n+on_committer_date \"1971-08-16 00:00:23\" save_tag r1 unique_commit r1 tree -p r0\n+on_committer_date \"1971-08-16 00:00:24\" save_tag l5r1 unique_commit l5r1 tree -p l5 -p r1\n+on_committer_date \"1971-08-16 00:00:25\" save_tag r1l5 unique_commit r1l5 tree -p r1 -p l5\n+\n+\n+#\n+# note: as of 20/6, it isn't possible to create duplicate parents, so this\n+# can't be tested.\n+#\n+#on_committer_date \"1971-08-16 00:00:20\" save_tag m3 unique_commit m3 tree -p c3 -p a4 -p c3\n+hide_error save_tag e1 as_author e@example.com unique_commit e1 tree\n+save_tag e2 as_author e@example.com unique_commit e2 tree -p e1\n+save_tag f1 as_author f@example.com unique_commit f1 tree -p e1\n+save_tag e3 as_author e@example.com unique_commit e3 tree -p e2\n+save_tag f2 as_author f@example.com unique_commit f2 tree -p f1\n+save_tag e4 as_author e@example.com unique_commit e4 tree -p e3 -p f2\n+save_tag e5 as_author e@example.com unique_commit e5 tree -p e4\n+save_tag f3 as_author f@example.com unique_commit f3 tree -p f2\n+save_tag f4 as_author f@example.com unique_commit f4 tree -p f3\n+save_tag e6 as_author e@example.com unique_commit e6 tree -p e5 -p f4\n+save_tag f5 as_author f@example.com unique_commit f5 tree -p f4\n+save_tag f6 as_author f@example.com unique_commit f6 tree -p f5 -p e6\n+save_tag e7 as_author e@example.com unique_commit e7 tree -p e6\n+save_tag e8 as_author e@example.com unique_commit e8 tree -p e7\n+save_tag e9 as_author e@example.com unique_commit e9 tree -p e8\n+save_tag f7 as_author f@example.com unique_commit f7 tree -p f6\n+save_tag f8 as_author f@example.com unique_commit f8 tree -p f7\n+save_tag f9 as_author f@example.com unique_commit f9 tree -p f8\n+save_tag e10 as_author e@example.com unique_commit e1 tree -p e9 -p f8\n+\n+hide_error save_tag g0 unique_commit g0 tree\n+save_tag g1 unique_commit g1 tree -p g0\n+save_tag h1 unique_commit g2 tree -p g0\n+save_tag g2 unique_commit g3 tree -p g1 -p h1\n+save_tag h2 unique_commit g4 tree -p g2\n+save_tag g3 unique_commit g5 tree -p g2\n+save_tag g4 unique_commit g6 tree -p g3 -p h2\n+\n+tag l5 > .git/HEAD\n+\n+#\n+# cd to t/trash and use \n+#\n+#    git-rev-list ... 2>&1 | sed \"$(cat sed.script)\" \n+#\n+# if you ever want to manually debug the operation of git-rev-list\n+#\n+echo \"$sed_script\" | tr ' ' \\\\012 > sed.script\n+\n+test_expect_success 'rev-list has correct number of entries' 'git-rev-list HEAD | wc -l | tr -s \" \"' <<EOF\n+19\n+EOF\n+\n+test_output_expect_success 'simple topo order' 'git-rev-list --topo-order  HEAD' <<EOF\n+l5\n+l4\n+l3\n+a4\n+c3\n+c2\n+c1\n+b4\n+a3\n+a2\n+a1\n+b3\n+b2\n+b1\n+a0\n+l2\n+l1\n+l0\n+root\n+EOF\n+\n+test_output_expect_success 'two diamonds topo order (g6)' 'git-rev-list --topo-order  g4' <<EOF\n+g4\n+h2\n+g3\n+g2\n+h1\n+g1\n+g0\n+EOF\n+\n+test_output_expect_success 'multiple heads' 'git-rev-list --topo-order a3 b3 c3' <<EOF\n+b3\n+c3\n+c2\n+b2\n+c1\n+b1\n+a3\n+a2\n+a1\n+a0\n+l2\n+l1\n+l0\n+root\n+EOF\n+\n+test_output_expect_success 'multiple heads, prune at a1' 'git-rev-list --topo-order a3 b3 c3 ^a1' <<EOF\n+b3\n+c3\n+c2\n+b2\n+c1\n+b1\n+a3\n+a2\n+EOF\n+\n+test_output_expect_success 'multiple heads, prune at l1' 'git-rev-list --topo-order a3 b3 c3 ^l1' <<EOF\n+b3\n+c3\n+c2\n+b2\n+c1\n+b1\n+a3\n+a2\n+a1\n+a0\n+l2\n+EOF\n+\n+test_output_expect_success 'cross-epoch, head at l5, prune at l1' 'git-rev-list --topo-order l5 ^l1' <<EOF\n+l5\n+l4\n+l3\n+a4\n+c3\n+c2\n+c1\n+b4\n+a3\n+a2\n+a1\n+b3\n+b2\n+b1\n+a0\n+l2\n+EOF\n+\n+test_output_expect_success 'duplicated head arguments' 'git-rev-list --topo-order l5 l5 ^l1' <<EOF\n+l5\n+l4\n+l3\n+a4\n+c3\n+c2\n+c1\n+b4\n+a3\n+a2\n+a1\n+b3\n+b2\n+b1\n+a0\n+l2\n+EOF\n+\n+test_output_expect_success 'prune near topo' 'git-rev-list --topo-order a4 ^c3' <<EOF\n+a4\n+b4\n+a3\n+a2\n+a1\n+b3\n+EOF\n+\n+test_output_expect_success \"head has no parent\" 'git-rev-list --topo-order  root' <<EOF\n+root\n+EOF\n+\n+test_output_expect_success \"two nodes - one head, one base\" 'git-rev-list --topo-order  l0' <<EOF\n+l0\n+root\n+EOF\n+\n+test_output_expect_success \"three nodes one head, one internal, one base\" 'git-rev-list --topo-order  l1' <<EOF\n+l1\n+l0\n+root\n+EOF\n+\n+test_output_expect_success \"linear prune l2 ^root\" 'git-rev-list --topo-order  l2 ^root' <<EOF\n+l2\n+l1\n+l0\n+EOF\n+\n+test_output_expect_success \"linear prune l2 ^l0\" 'git-rev-list --topo-order  l2 ^l0' <<EOF\n+l2\n+l1\n+EOF\n+\n+test_output_expect_success \"linear prune l2 ^l1\" 'git-rev-list --topo-order  l2 ^l1' <<EOF\n+l2\n+EOF\n+\n+test_output_expect_success \"linear prune l5 ^a4\" 'git-rev-list --topo-order  l5 ^a4' <<EOF\n+l5\n+l4\n+l3\n+EOF\n+\n+test_output_expect_success \"linear prune l5 ^l3\" 'git-rev-list --topo-order  l5 ^l3' <<EOF\n+l5\n+l4\n+EOF\n+\n+test_output_expect_success \"linear prune l5 ^l4\" 'git-rev-list --topo-order  l5 ^l4' <<EOF\n+l5\n+EOF\n+\n+test_output_expect_success \"max-count 10 - topo order\" 'git-rev-list --topo-order  --max-count=10 l5' <<EOF\n+l5\n+l4\n+l3\n+a4\n+c3\n+c2\n+c1\n+b4\n+a3\n+a2\n+EOF\n+\n+test_output_expect_success \"max-count 10 - non topo order\" 'git-rev-list --max-count=10 l5' <<EOF\n+l5\n+l4\n+l3\n+a4\n+b4\n+a3\n+a2\n+c3\n+c2\n+b3\n+EOF\n+\n+test_output_expect_success '--max-age=c3, no --topo-order' \"git-rev-list --max-age=$(commit_date c3) l5\" <<EOF\n+l5\n+l4\n+l3\n+a4\n+b4\n+a3\n+a2\n+c3\n+EOF\n+\n+#\n+# this test fails on --topo-order - a fix is required\n+#\n+#test_output_expect_success '--max-age=c3, --topo-order' \"git-rev-list --topo-order --max-age=$(commit_date c3) l5\" <<EOF\n+#l5\n+#l4\n+#l3\n+#a4\n+#c3\n+#b4\n+#a3\n+#a2\n+#EOF\n+\n+test_output_expect_success 'one specified head reachable from another a4, c3, --topo-order' \"list_duplicates git-rev-list --topo-order a4 c3\" <<EOF\n+EOF\n+\n+test_output_expect_success 'one specified head reachable from another c3, a4, --topo-order' \"list_duplicates git-rev-list --topo-order c3 a4\" <<EOF\n+EOF\n+\n+test_output_expect_success 'one specified head reachable from another a4, c3, no --topo-order' \"list_duplicates git-rev-list a4 c3\" <<EOF\n+EOF\n+\n+test_output_expect_success 'one specified head reachable from another c3, a4, no --topo-order' \"list_duplicates git-rev-list c3 a4\" <<EOF\n+EOF\n+\n+test_output_expect_success 'graph with c3 and a4 parents of head' \"list_duplicates git-rev-list m1\" <<EOF\n+EOF\n+\n+test_output_expect_success 'graph with a4 and c3 parents of head' \"list_duplicates git-rev-list m2\" <<EOF\n+EOF\n+\n+test_expect_success \"head ^head --topo-order\" 'git-rev-list --topo-order  a3 ^a3' <<EOF\n+EOF\n+\n+test_expect_success \"head ^head no --topo-order\" 'git-rev-list a3 ^a3' <<EOF\n+EOF\n+\n+test_output_expect_success 'simple topo order (l5r1)' 'git-rev-list --topo-order  l5r1' <<EOF\n+l5r1\n+r1\n+r0\n+alt_root\n+l5\n+l4\n+l3\n+a4\n+c3\n+c2\n+c1\n+b4\n+a3\n+a2\n+a1\n+b3\n+b2\n+b1\n+a0\n+l2\n+l1\n+l0\n+root\n+EOF\n+\n+test_output_expect_success 'simple topo order (r1l5)' 'git-rev-list --topo-order  r1l5' <<EOF\n+r1l5\n+l5\n+l4\n+l3\n+a4\n+c3\n+c2\n+c1\n+b4\n+a3\n+a2\n+a1\n+b3\n+b2\n+b1\n+a0\n+l2\n+l1\n+l0\n+root\n+r1\n+r0\n+alt_root\n+EOF\n+\n+test_output_expect_success \"don't print things unreachable from one branch\" \"git-rev-list a3 ^b3 --topo-order\" <<EOF\n+a3\n+a2\n+a1\n+EOF\n+\n+test_output_expect_success \"--topo-order a4 l3\" \"git-rev-list --topo-order a4 l3\" <<EOF\n+l3\n+a4\n+c3\n+c2\n+c1\n+b4\n+a3\n+a2\n+a1\n+b3\n+b2\n+b1\n+a0\n+l2\n+l1\n+l0\n+root\n+EOF\n+\n+#\n+#\n+\n+test_done\n------------\n"},{"id":"5743","messageId":"Pine.LNX.4.58.0507061800550.3293@g5.osdl.org","threadId":"1147","inReplyTo":"20050707005004.9205.qmail@blackcubes.dyndns.org","subject":"Re: [PATCH 1/2] Add t/t6003 with some --topo-order tests","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-07-07T01:01:22Z","receivedAt":"2005-07-07T01:01:22Z","isPatch":true,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Thu, 7 Jul 2005, Jon Seymour wrote:\n>\n> Linus: the last test fails with --topo-order at the moment. I haven't\n> seen your most recent changes, so it may still fail for trivial \n> reasons even then. If so, I'll post an update.\n\nIt passes for me, so I think the SEEN flag thing fixed it.\n\n\t\tLinus\n"}]}