dirstate: remove the python-side whitelist of allowed matchers
This whitelist is too permissive because it allows matchers that contain
disallowed ones deep inside, for example through `intersectionmatcher`.
It is also too restrictive because it doesn't pass through
some of the matchers we support, such as `patternmatcher`.
It's also unnecessary because unsupported matchers raise
`FallbackError` and we fall back anyway.
Making this change makes more of the tests use rust code path,
and therefore subtly change behavior. For example, rust status
in largefiles repos seems to have strange behavior.
#require unix-permissions no-root no-windows no-rhg
XXX-RHG this test hangs if `hg` is really `rhg`. This was hidden by the use of
`alias hg=rhg` by run-tests.py. With such alias removed, this test is revealed
buggy. This need to be resolved sooner than later.
repository itself is non-readable
---------------------------------
$ hg init no-read
$ hg id ssh://user@dummy/no-read
000000000000
$ chmod a-rx no-read
$ hg id ssh://user@dummy/no-read
remote: abort: $EACCES$: *$TESTTMP/no-read/.hg* (glob)
abort: no suitable response from remote hg
[255]
special case files are visible, but unreadable
----------------------------------------------
This is "similar" to the test above, but the directory is "traversable". This
seems an unexpected case in real life, but we test it anyway.
$ hg init other
$ hg id ssh://user@dummy/other
000000000000
$ for item in `find other | sort -r` ; do
> chmod a-r $item
> done
$ hg id ssh://user@dummy/other
remote: abort: $EACCES$: '$TESTTMP/other/.hg/requires'
abort: no suitable response from remote hg
[255]
directory toward the repository is read only
--------------------------------------------
$ mkdir deep
$ hg init deep/nested
$ hg id ssh://user@dummy/deep/nested
000000000000
$ chmod a-rx deep
$ hg id ssh://user@dummy/deep/nested
remote: abort: $EACCES$: *$TESTTMP/deep/nested/.hg* (glob)
abort: no suitable response from remote hg
[255]
repository has wrong requirement
--------------------------------
$ hg init repo-future
$ hg id ssh://user@dummy/repo-future
000000000000
$ echo flying-car >> repo-future/.hg/requires
$ hg id ssh://user@dummy/repo-future
remote: abort: repository requires features unknown to this Mercurial: flying-car
remote: (see https://mercurial-scm.org/wiki/MissingRequirement for more information)
abort: no suitable response from remote hg
[255]