tests/test-dirstate.t
changeset 49164 a932cad26d37
parent 48876 42d2b31cee0b
parent 49158 682b0ac92c0b
child 49217 13dfad0f9f7a
equal deleted inserted replaced
49147:10b9f11daf15 49164:a932cad26d37
   117   $ hg st -c
   117   $ hg st -c
   118   C hgext/zeroconf.py
   118   C hgext/zeroconf.py
   119   C hgext3rd/__init__.py
   119   C hgext3rd/__init__.py
   120 
   120 
   121   $ cd ..
   121   $ cd ..
       
   122 
       
   123 Check that the old dirstate data file is removed correctly and the new one is
       
   124 valid.
       
   125 
       
   126   $ dirstate_data_files () {
       
   127   >   find .hg -maxdepth 1 -name "dirstate.*"
       
   128   > }
       
   129 
       
   130   $ find_dirstate_uuid () {
       
   131   >   hg debugstate --docket | grep uuid | sed 's/.*uuid: \(.*\)/\1/'
       
   132   > }
       
   133 
       
   134   $ dirstate_uuid_has_not_changed () {
       
   135   >   # Non-Rust always rewrites the whole dirstate
       
   136   >   if [ $# -eq 1 ] || ([ -n "$HGMODULEPOLICY" ] && [ -z "${HGMODULEPOLICY##*rust*}" ]) || [ -n "$RHG_INSTALLED_AS_HG" ]; then
       
   137   >     test $current_uid = $(find_dirstate_uuid)
       
   138   >   else
       
   139   >     echo "not testing because using Python implementation"
       
   140   >   fi
       
   141   > }
       
   142 
       
   143   $ cd ..
       
   144   $ hg init append-mostly
       
   145   $ cd append-mostly
       
   146   $ mkdir dir dir2
       
   147   $ touch dir/a dir/b dir/c dir/d dir/e dir2/f
       
   148   $ hg commit -Aqm initial
       
   149   $ hg st
       
   150   $ dirstate_data_files | wc -l
       
   151    *1 (re)
       
   152   $ current_uid=$(find_dirstate_uuid)
       
   153 
       
   154 Nothing changes here
       
   155 
       
   156   $ hg st
       
   157   $ dirstate_data_files | wc -l
       
   158    *1 (re)
       
   159   $ dirstate_uuid_has_not_changed
       
   160   not testing because using Python implementation (no-rust no-rhg !)
       
   161 
       
   162 Trigger an append with a small change
       
   163 
       
   164   $ echo "modified" > dir2/f
       
   165   $ hg st
       
   166   M dir2/f
       
   167   $ dirstate_data_files | wc -l
       
   168    *1 (re)
       
   169   $ dirstate_uuid_has_not_changed
       
   170   not testing because using Python implementation (no-rust no-rhg !)
       
   171 
       
   172 Unused bytes counter is non-0 when appending
       
   173   $ touch file
       
   174   $ hg add file
       
   175   $ current_uid=$(find_dirstate_uuid)
       
   176 
       
   177 Trigger a rust/rhg run which updates the unused bytes value
       
   178   $ hg st
       
   179   M dir2/f
       
   180   A file
       
   181   $ dirstate_data_files | wc -l
       
   182    *1 (re)
       
   183   $ dirstate_uuid_has_not_changed
       
   184   not testing because using Python implementation (no-rust no-rhg !)
       
   185 
       
   186   $ hg debugstate --docket | grep unused
       
   187   number of unused bytes: 0 (no-rust no-rhg !)
       
   188   number of unused bytes: [1-9]\d* (re) (rhg no-rust !)
       
   189   number of unused bytes: [1-9]\d* (re) (rust no-rhg !)
       
   190   number of unused bytes: [1-9]\d* (re) (rust rhg !)
       
   191 
       
   192 Delete most of the dirstate to trigger a non-append
       
   193   $ hg rm dir/a dir/b dir/c dir/d
       
   194   $ dirstate_data_files | wc -l
       
   195    *1 (re)
       
   196   $ dirstate_uuid_has_not_changed also-if-python
       
   197   [1]
       
   198 
       
   199 Check that unused bytes counter is reset when creating a new docket
       
   200 
       
   201   $ hg debugstate --docket | grep unused
       
   202   number of unused bytes: 0
       
   203 
   122 #endif
   204 #endif
       
   205 
       
   206   $ cd ..