[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