[PATCH 1 of 2 STABLE V2] tests: add test demonstrating buggy path handling

Yuya Nishihara yuya at tcha.org
Sat Apr 8 04:39:59 EDT 2017


On Fri, 07 Apr 2017 11:54:54 -0700, Gregory Szorc wrote:
> # HG changeset patch
> # User Gregory Szorc <gregory.szorc at gmail.com>
> # Date 1491590783 25200
> #      Fri Apr 07 11:46:23 2017 -0700
> # Branch stable
> # Node ID f8ba1fb4458b60b1d129f97d1f47a542aa0daf98
> # Parent  68f263f52d2e3e2798b4f1e55cb665c6b043f93b
> tests: add test demonstrating buggy path handling
> 
> `hg debugupgraderepo` is currently buggy with regards to path
> handling when copying files in .hg/store/. Specifically, it applies
> the store filename encoding to paths instead of operating on raw
> files.
> 
> This commit adds a test demonstrating the buggy behavior.
> 
> diff --git a/tests/test-upgrade-repo.t b/tests/test-upgrade-repo.t
> --- a/tests/test-upgrade-repo.t
> +++ b/tests/test-upgrade-repo.t
> @@ -310,3 +310,38 @@ old store should be backed up
>    undo.phaseroots
>  
>    $ cd ..
> +
> +store files with special filenames aren't encoded during copy
> +
> +  $ hg init store-filenames
> +  $ cd store-filenames
> +  $ touch foo
> +  $ hg -q commit -A -m initial
> +  $ touch .hg/store/.XX_special_filename
> +
> +  $ hg debugupgraderepo --run
> +  upgrade will perform the following actions:
> +  
> +  requirements
> +     preserved: dotencode, fncache, generaldelta, revlogv1, store
> +  
> +  beginning upgrade...
> +  repository locked and read-only
> +  creating temporary repository to stage migrated data: $TESTTMP/store-filenames/.hg/upgrade.* (glob)
> +  (it is safe to interrupt this process any time before data migration completes)
> +  migrating 3 total revisions (1 in filelogs, 1 in manifests, 1 in changelog)
> +  migrating 109 bytes in store; 107 bytes tracked data
> +  migrating 1 filelogs containing 1 revisions (0 bytes in store; 0 bytes tracked data)
> +  finished migrating 1 filelog revisions across 1 filelogs; change in size: 0 bytes
> +  migrating 1 manifests containing 1 revisions (46 bytes in store; 45 bytes tracked data)
> +  finished migrating 1 manifest revisions across 1 manifests; change in size: 0 bytes
> +  migrating changelog containing 1 revisions (63 bytes in store; 62 bytes tracked data)
> +  finished migrating 1 changelog revisions; change in size: 0 bytes
> +  finished migrating 3 total revisions; total change in store size: 0 bytes
> +  copying phaseroots
> +  copying .XX_special_filename

The order is unstable. I could add "2>&1 | egrep 'abort|XX'", but do you have
any better idea?


More information about the Mercurial-devel mailing list