diff tests/test-namespaces-report.t @ 6496:fba501baf5cb

topic: find and report topic namespace changes in transactions
author Anton Shestakov <av6@dwimlabs.net>
date Mon, 05 Jun 2023 21:57:13 -0300
parents
children 4e0f760d332e
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-namespaces-report.t	Mon Jun 05 21:57:13 2023 -0300
@@ -0,0 +1,175 @@
+Reporting affected topic namespaces in transactions
+
+  $ . "$TESTDIR/testlib/common.sh"
+
+  $ cat >> $HGRCPATH << EOF
+  > [extensions]
+  > evolve =
+  > topic =
+  > [phases]
+  > publish = no
+  > [devel]
+  > tns-report-transactions = push
+  > EOF
+
+  $ hg init orig
+
+case 1: new changeset (draft with topic namespace)
+topic namespace of that changeset is reported
+
+  $ hg clone orig case-1 -q
+  $ cd orig
+
+  $ echo apple > a
+  $ hg ci -qAm apple
+
+  $ hg push ../case-1
+  pushing to ../case-1
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+
+  $ echo banana > b
+  $ hg debug-topic-namespace bob
+  marked working directory as topic namespace: bob
+  $ hg ci -qAm 'banana'
+
+XXX: should not require --new-branch
+
+  $ hg push ../case-1 --new-branch
+  pushing to ../case-1
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  topic namespaces affected: bob
+  added 1 changesets with 1 changes to 1 files
+
+  $ cd ..
+
+case 2: obsmarker affecting known changeset
+topic namespaces of both the precursor and the successor are affected
+
+  $ hg clone orig case-2 -q
+  $ cd orig
+
+  $ echo broccoli > b
+  $ hg debug-topic-namespace bruce
+  $ hg ci --amend -m 'broccoli'
+
+XXX: should not require --new-branch
+
+  $ hg push ../case-2 --new-branch
+  pushing to ../case-2
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  topic namespaces affected: bob bruce
+  added 1 changesets with 1 changes to 1 files (+1 heads)
+  1 new obsolescence markers
+  obsoleted 1 changesets
+
+  $ cd ..
+
+3 phase divergence resolution can point to a thing but not affect it (probably not affected)
+
+  $ hg clone orig case-3 -q
+  $ cd orig
+
+  $ hg debug-topic-namespace charlie
+  $ echo coconut > c
+  $ hg ci -qAm 'coconut'
+
+  $ hg debug-topic-namespace carol
+  $ echo cloudberry > c
+  $ hg ci --amend -m 'cloudberry'
+
+  $ hg phase --hidden -r 'desc("coconut")' --public
+  1 new phase-divergent changesets
+
+  $ hg evolve --phase-divergent
+  recreate:[4] cloudberry
+  atop:[3] coconut
+  committed as c398b3caf447
+  working directory is now at c398b3caf447
+
+XXX: should not require --new-branch
+
+  $ hg push ../case-3 --new-branch
+  pushing to ../case-3
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  topic namespaces affected: bruce carol
+  added 2 changesets with 2 changes to 1 files
+  2 new obsolescence markers
+
+  $ cd ..
+
+4 phase movement: publishing drafts
+topic namespaces of published changesets are affected
+
+  $ hg clone orig case-4 -q
+  $ cd orig
+
+  $ hg push ../case-4 --publish
+  pushing to ../case-4
+  searching for changes
+  no changes found
+  topic namespaces affected: carol
+  [1]
+
+  $ cd ..
+
+  $ cd ..
+
+6 phase movement: publishing secret changesets (that are known on the server)
+topic namespaces of published changesets are affected
+
+  $ hg clone orig case-6 -q
+  $ cd orig
+
+  $ hg push ../case-6 -r . --publish
+  pushing to ../case-6
+  searching for changes
+  no changes found
+  topic namespaces affected: dave
+  [1]
+
+previous topic namespace is resurrected...
+
+  $ hg phase --secret --force -r . --config 'devel.tns-report-transactions=phase'
+  topic namespaces affected: dave
+
+...just to disappear again
+
+  $ hg push ../case-6 -r . --config 'devel.tns-report-transactions=*'
+  pushing to ../case-6
+  searching for changes
+  no changes found
+  topic namespaces affected: dave
+  [1]
+
+  $ cd ..
+
+99 pushing obsmarker for an unknown changeset
+doesn't affect any topic namespace, we report nothing
+
+  $ hg clone orig case-99 -q
+  $ cd orig
+
+  $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid "desc('dragonfruit')"`
+  1 new obsolescence markers
+
+  $ hg push ../case-99
+  pushing to ../case-99
+  searching for changes
+  no changes found
+  1 new obsolescence markers
+  [1]
+
+  $ cd ..