test: add a test file for relevant obsmarkers and its usage

The logic around obsmarkers "relevant" to a set of revs have a couple of test
around in other places but no systematic testing. In addition, all the current
testing focus on the exchange case (we looks at relevant markers for
'::heads').

For bundles, we'll need something a bit different. We'll no longer have set of
revision going down to the repository roots. So we'll have to test these cases
too. In addition, stripping obsmarkers will introduce new logic around
obsmarkers that will need testing too. So a new test file make sense here.

We start with a simple tests, more advanced cases are coming in the next
changesets. The extra testing catch a minor bug (later in the series).
This commit is contained in:
Pierre-Yves David 2017-05-25 19:37:07 +02:00
parent 51c7d417b5
commit 477904fd0f

View File

@ -0,0 +1,102 @@
==================================================
Test obsmarkers interaction with bundle and strip
==================================================
In practice, this file does not yet contains any tests for bundle and strip.
But their will be some soon (tm).
For now this test check the logic computing markers relevant to a set of
revision. That logic will be use by "hg bundle" to select the markers to
include, and strip to find the markers to backup.
Setup a repository with various case
====================================
Config setup
------------
$ cat >> $HGRCPATH <<EOF
> [ui]
> # simpler log output
> logtemplate = "{node|short}: {desc}\n"
>
> [experimental]
> # enable evolution
> evolution = all
>
> # include obsmarkers in bundle
> evolution.bundle-obsmarker = yes
>
> [extensions]
> # needed for some tests
> strip =
> [defaults]
> # we'll query many hidden changeset
> debugobsolete = --hidden
> EOF
$ mkcommit() {
> echo "$1" > "$1"
> hg add "$1"
> hg ci -m "$1"
> }
$ getid() {
> hg log --hidden --template '{node}\n' --rev "$1"
> }
$ mktestrepo () {
> [ -n "$1" ] || exit 1
> cd $TESTTMP
> hg init $1
> cd $1
> mkcommit ROOT
> }
root setup
-------------
simple chain
============
. A0
. ø A1
. |/
.
setup
-----
$ mktestrepo simple-chain
$ mkcommit 'C-A0'
$ hg up 'desc("ROOT")'
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ mkcommit 'C-A1'
created new head
$ hg debugobsolete a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 `getid 'desc("C-A0")'`
$ hg debugobsolete `getid 'desc("C-A0")'` a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1
$ hg debugobsolete a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1 `getid 'desc("C-A1")'`
$ hg up 'desc("ROOT")'
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg log --hidden -G
o cf2c22470d67: C-A1
|
| x 84fcb0dfe17b: C-A0
|/
@ ea207398892e: ROOT
$ hg debugobsolete
a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 84fcb0dfe17b256ebae52e05572993b9194c018a 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
84fcb0dfe17b256ebae52e05572993b9194c018a a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1 cf2c22470d67233004e934a31184ac2b35389914 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
Actual testing
--------------
$ hg debugobsolete --rev 'desc("C-A0")'
a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 84fcb0dfe17b256ebae52e05572993b9194c018a 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
$ hg debugobsolete --rev 'desc("C-A1")'
84fcb0dfe17b256ebae52e05572993b9194c018a a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0 84fcb0dfe17b256ebae52e05572993b9194c018a 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1 cf2c22470d67233004e934a31184ac2b35389914 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}