# HG changeset patch # User Pierre-Yves David # Date 1490093935 -3600 # Node ID e1c26c632b6d79a34dbcb0e173c8ef59a30f8926 # Parent d0bc98161794e6b85f98ce814c6fca49a4ef8372 tests: adds simple test case for heads checking This is the start of some systemic testing of the head superceeding detection mechanism. diff -r d0bc98161794 -r e1c26c632b6d tests/test-checkheads-superceed-A1.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-checkheads-superceed-A1.t Tue Mar 21 11:58:55 2017 +0100 @@ -0,0 +1,68 @@ +==================================== +Testing head checking code: Case A-1 +==================================== + +Mercurial checks for the introduction of multiple heads on push. Evolution +comes into play to detect if existing heads on the server are being replaced by +some of the new heads we push. + +This test file is part of a series of tests checking this behavior. + +Category A: checking simple case invoving a branch being superceeded by another. +TestCase 1: single-changeset branch + +.. old-state: +.. +.. * 1 changeset branch +.. +.. new-state: +.. +.. * 1 changeset branch succeeding to A +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. A ø⇠◔ A' +.. |/ +.. ○ + + $ . $TESTDIR/testlib/checkheads-util.sh + +Test setup +---------- + + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd client + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit A1 + created new head + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ hg log -G --hidden + @ f6082bc4ffef (draft): A1 + | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/server + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + 1 new obsolescence markers + + + diff -r d0bc98161794 -r e1c26c632b6d tests/test-checkheads-superceed-A2.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-checkheads-superceed-A2.t Tue Mar 21 11:58:55 2017 +0100 @@ -0,0 +1,84 @@ +==================================== +Testing head checking code: Case A-2 +==================================== + +Mercurial checks for the introduction of multiple heads on push. Evolution +comes into play to detect if existing heads on the server are being replaced by +some of the new heads we push. + +This test file is part of a series of tests checking this behavior. + +Category A: checking simple case invoving a branch being superceeded by another. +TestCase 2: multi-changeset branch + +.. old-state: +.. +.. * 2 changeset branch +.. +.. new-state: +.. +.. * 2 changeset branch succeeding the old one +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. B ø⇠◔ B' +.. | | +.. A ø⇠◔ A' +.. |/ +.. ○ + + $ . $TESTDIR/testlib/checkheads-util.sh + +Test setup +---------- + + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd server + $ mkcommit B0 + $ cd ../client + $ hg pull + pulling from $TESTTMP/server + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + (run 'hg update' to get a working copy) + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit A1 + created new head + $ mkcommit B1 + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` + $ hg log -G --hidden + @ 262c8c798096 (draft): B1 + | + o f6082bc4ffef (draft): A1 + | + | x d73caddc5533 (draft): B0 + | | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/server + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files (+1 heads) + 2 new obsolescence markers diff -r d0bc98161794 -r e1c26c632b6d tests/test-checkheads-superceed-A3.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-checkheads-superceed-A3.t Tue Mar 21 11:58:55 2017 +0100 @@ -0,0 +1,87 @@ +==================================== +Testing head checking code: Case A-3 +==================================== + +Mercurial checks for the introduction of multiple heads on push. Evolution +comes into play to detect if existing heads on the server are being replaced by +some of the new heads we push. + +This test file is part of a series of tests checking this behavior. + +Category A: checking simple case invoving a branch being superceeded by another. +TestCase 3: multi-changeset branch with reordering + +Push should be allowed +.. old-state: +.. +.. * 2 changeset branch +.. +.. new-state: +.. +.. * 2 changeset branch succeeding the old one with reordering +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. B ø⇠⇠ +.. | ⇡ +.. A ø⇠⇠⇠○ A' +.. | ⇡/ +.. | ○ B' +.. |/ +.. ● O + + $ . $TESTDIR/testlib/checkheads-util.sh + +Test setup +---------- + + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd server + $ mkcommit B0 + $ cd ../client + $ hg pull + pulling from $TESTTMP/server + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + (run 'hg update' to get a working copy) + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit B1 + created new head + $ mkcommit A1 + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"` + $ hg log -G --hidden + @ c1c7524e9488 (draft): A1 + | + o 25c56d33e4c4 (draft): B1 + | + | x d73caddc5533 (draft): B0 + | | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/server + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files (+1 heads) + 2 new obsolescence markers diff -r d0bc98161794 -r e1c26c632b6d tests/test-checkheads-superceed-A4.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-checkheads-superceed-A4.t Tue Mar 21 11:58:55 2017 +0100 @@ -0,0 +1,74 @@ +==================================== +Testing head checking code: Case A-4 +==================================== + +Mercurial checks for the introduction of multiple heads on push. Evolution +comes into play to detect if existing heads on the server are being replaced by +some of the new heads we push. + +This test file is part of a series of tests checking this behavior. + +Category A: checking simple case invoving a branch being superceeded by another. +TestCase 4: New changeset as children of the successor + +.. old-state: +.. +.. * 1 changeset branch +.. +.. new-state: +.. +.. * 2 changeset branch, first is a successor, but head is new +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. ◔ B +.. | +.. A ø⇠◔ A' +.. |/ +.. ○ + + $ . $TESTDIR/testlib/checkheads-util.sh + +Test setup +---------- + + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd client + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit A1 + created new head + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ mkcommit B0 + $ hg log -G --hidden + @ f40ded968333 (draft): B0 + | + o f6082bc4ffef (draft): A1 + | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/server + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files (+1 heads) + 1 new obsolescence markers + + + diff -r d0bc98161794 -r e1c26c632b6d tests/test-checkheads-superceed-A5.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-checkheads-superceed-A5.t Tue Mar 21 11:58:55 2017 +0100 @@ -0,0 +1,74 @@ +==================================== +Testing head checking code: Case A-5 +==================================== + +Mercurial checks for the introduction of multiple heads on push. Evolution +comes into play to detect if existing heads on the server are being replaced by +some of the new heads we push. + +This test file is part of a series of tests checking this behavior. + +Category A: checking simple case invoving a branch being superceeded by another. +TestCase 5: New changeset as parent of the successor + +.. old-state: +.. +.. * 1 changeset branch +.. +.. new-state: +.. +.. * 2 changeset branch, head is a successor, but other is new +.. +.. expected-result: +.. +.. * push allowed +.. +.. graph-summary: +.. +.. A ø⇠◔ A' +.. | | +.. | ◔ B +.. |/ +.. ○ + + $ . $TESTDIR/testlib/checkheads-util.sh + +Test setup +---------- + + $ setuprepos + creating basic server and client repo + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd client + $ hg up 0 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit B0 + created new head + $ mkcommit A1 + $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` + $ hg log -G --hidden + @ ba93660aff8d (draft): A1 + | + o 74ff5441d343 (draft): B0 + | + | x 8aaa48160adc (draft): A0 + |/ + o 1e4be0697311 (public): root + + + +Actual testing +-------------- + + $ hg push + pushing to $TESTTMP/server + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 2 changes to 2 files (+1 heads) + 1 new obsolescence markers + + + diff -r d0bc98161794 -r e1c26c632b6d tests/testlib/checkheads-util.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/testlib/checkheads-util.sh Tue Mar 21 11:58:55 2017 +0100 @@ -0,0 +1,26 @@ +# common setup for head checking code + +. $TESTDIR/testlib/common.sh + +cat >> $HGRCPATH < "$1" + hg add "$1" + hg ci -m "$1" +} + +getid() { + hg log --hidden --template '{node}\n' --rev "$1" +} + +cat >> $HGRCPATH <