Patchwork [2,of,3,STABLE,V3] tests: add test demonstrating buggy path handling

login
register
mail settings
Submitter Gregory Szorc
Date April 8, 2017, 6:37 p.m.
Message ID <496c7283775aace01016.1491676627@ubuntu-vm-main>
Download mbox | patch
Permalink /patch/20027/
State Accepted
Headers show

Comments

Gregory Szorc - April 8, 2017, 6:37 p.m.
# HG changeset patch
# User Gregory Szorc <gregory.szorc@gmail.com>
# Date 1491676529 25200
#      Sat Apr 08 11:35:29 2017 -0700
# Branch stable
# Node ID 496c7283775aace010167dbd824ecab706c3223d
# Parent  6d0319d5dc7f2d4a6079437a5d1f8382dcb40e42
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.

Patch

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,37 @@  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 .XX_special_filename
+  removing temporary repository $TESTTMP/store-filenames/.hg/upgrade.* (glob)
+  abort: No such file or directory: $TESTTMP/store-filenames/.hg/store/~2e_x_x__special__filename
+  [255]
+
+  $ cd ..