mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 16:57:49 +03:00
92f6f35e7a
Summary: This diff marks **ALL** mercurial tests requiring Python 2 feature. After you fixes some tests, simply remove the `py2` feature requirement and that tests will be continuously run after your diff is landed. To bypass this feature requirement, run the tests command with `HGTEST_FORCE_PY2=1`. For example: ``` HGTEST_FORCE_PY2=1 buck test //eden/scm/tests:hg_run_tests ``` or ``` HGTEST_FORCE_PY2=1 python run-tests.py ``` ---- Basically this diff are created with the following commands: ``` $ sed -i 's/import feature\(.*\)$/import feature\1\n\nfeature.require(["py2"])/' test-*-t.py $ sed -i '1s/^/#require py2\n/' test-*.t $ ls | grep -P "^test.*(?<\!-t)\.py$" > list && vim -p $(cat list) # manually adding feature requires for these Python tests. ``` (Note: this ignores all push blocking failures!) ignore-conflict-markers Reviewed By: singhsrb Differential Revision: D19655148 fbshipit-source-id: 985e3ccb4010cc559049f1d89f8909bc2d9b5e20
128 lines
2.4 KiB
Perl
128 lines
2.4 KiB
Perl
#require py2
|
|
#chg-compatible
|
|
|
|
#chg-compatible
|
|
|
|
#chg-compatible
|
|
|
|
#testcases v0 v1 v2
|
|
|
|
#if v0
|
|
$ setconfig format.dirstate=0
|
|
#endif
|
|
|
|
#if v1
|
|
$ setconfig format.dirstate=1
|
|
#endif
|
|
|
|
#if v2
|
|
$ setconfig format.dirstate=2
|
|
#endif
|
|
|
|
------ Test dirstate._dirs refcounting
|
|
|
|
$ hg init t
|
|
$ cd t
|
|
$ mkdir -p a/b/c/d
|
|
$ touch a/b/c/d/x
|
|
$ touch a/b/c/d/y
|
|
$ touch a/b/c/d/z
|
|
$ hg ci -Am m
|
|
adding a/b/c/d/x
|
|
adding a/b/c/d/y
|
|
adding a/b/c/d/z
|
|
$ hg mv a z
|
|
moving a/b/c/d/x to z/b/c/d/x
|
|
moving a/b/c/d/y to z/b/c/d/y
|
|
moving a/b/c/d/z to z/b/c/d/z
|
|
|
|
Test name collisions
|
|
|
|
$ rm z/b/c/d/x
|
|
$ mkdir z/b/c/d/x
|
|
$ touch z/b/c/d/x/y
|
|
$ hg add z/b/c/d/x/y
|
|
abort: file 'z/b/c/d/x' in dirstate clashes with 'z/b/c/d/x/y'
|
|
[255]
|
|
$ rm -rf z/b/c/d
|
|
$ touch z/b/c/d
|
|
$ hg add z/b/c/d
|
|
abort: directory 'z/b/c/d' already in dirstate
|
|
[255]
|
|
|
|
$ cd ..
|
|
|
|
Issue1790: dirstate entry locked into unset if file mtime is set into
|
|
the future
|
|
|
|
Prepare test repo:
|
|
|
|
$ hg init u
|
|
$ cd u
|
|
$ echo a > a
|
|
$ hg add
|
|
adding a
|
|
$ hg ci -m1
|
|
|
|
#if no-v2
|
|
Set mtime of a into the future:
|
|
|
|
$ touch -t 202101011200 a
|
|
|
|
Status must not set a's entry to unset (issue1790):
|
|
|
|
$ hg status
|
|
$ hg debugstate
|
|
n 644 2 2021-01-01 12:00:00 a
|
|
|
|
Note: issue1790 is about thg compatibility. In this case, setting mtime to
|
|
"unset" is also correct since "a" needs to be checked.
|
|
#endif
|
|
|
|
Test modulo storage/comparison of absurd dates:
|
|
|
|
#if no-aix
|
|
$ touch -t 195001011200 a
|
|
$ hg st
|
|
$ hg debugstate
|
|
n 644 2 2018-01-19 15:14:08 a
|
|
#endif
|
|
|
|
Verify that exceptions during a dirstate change leave the dirstate
|
|
coherent (issue4353)
|
|
|
|
$ cat > ../dirstateexception.py <<EOF
|
|
> from __future__ import absolute_import
|
|
> from edenscm.mercurial import (
|
|
> error,
|
|
> extensions,
|
|
> merge,
|
|
> )
|
|
>
|
|
> def wraprecordupdates(orig, repo, actions, branchmerge):
|
|
> raise error.Abort("simulated error while recording dirstateupdates")
|
|
>
|
|
> def reposetup(ui, repo):
|
|
> extensions.wrapfunction(merge, 'recordupdates', wraprecordupdates)
|
|
> EOF
|
|
|
|
$ hg rm a
|
|
$ hg commit -m 'rm a'
|
|
$ echo "[extensions]" >> .hg/hgrc
|
|
$ echo "dirstateex=../dirstateexception.py" >> .hg/hgrc
|
|
$ hg up 0
|
|
abort: simulated error while recording dirstateupdates
|
|
[255]
|
|
$ hg log -r . -T '{rev}\n'
|
|
1
|
|
$ hg status
|
|
? a
|
|
$ rm .hg/hgrc
|
|
|
|
Verify that status reports deleted files correctly
|
|
$ hg add a
|
|
$ rm a
|
|
$ hg status
|
|
! a
|
|
$ hg diff
|