tests/test-check-module-imports.t
author Gregory Szorc <gregory.szorc@gmail.com>
Mon, 19 Mar 2018 16:43:47 -0700
changeset 37047 fddcb51b5084
parent 34395 41401f502c83
child 37810 856f381ad74b
permissions -rw-r--r--
wireproto: define permissions-based routing of HTTPv2 wire protocol Now that we have a scaffolding for serving version 2 of the HTTP protocol, let's start implementing it. A good place to start is URL routing and basic request processing semantics. We can focus on content types, capabilities detect, etc later. Version 2 of the HTTP wire protocol encodes the needed permissions of the request in the URL path. The reasons for this are documented in the added documentation. In short, a) it makes it really easy and fail proof for server administrators to implement path-based authentication and b) it will enable clients to realize very early in a server exchange that authentication will be required to complete the operation. This latter point avoids all kinds of complexity and problems, like dealing with Expect: 100-continue and clients finding out later during `hg push` that they need to provide authentication. This will avoid the current badness where clients send a full bundle, get an HTTP 403, provide authentication, then retransmit the bundle. In order to implement command checking, we needed to implement a protocol handler for the new wire protocol. Our handler is just small enough to run the code we've implemented. Tests for the defined functionality have been added. I very much want to refactor the permissions checking code and define a better response format. But this can be done later. Nothing is covered by backwards compatibility at this point. Differential Revision: https://phab.mercurial-scm.org/D2836
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
23894
f388ceae2250 test-module-imports: use test-repo requirement
Matt Mackall <mpm@selenic.com>
parents: 22947
diff changeset
     1
#require test-repo
f388ceae2250 test-module-imports: use test-repo requirement
Matt Mackall <mpm@selenic.com>
parents: 22947
diff changeset
     2
29219
3c9066ed557c tests: silence test-repo obsolete warning
timeless <timeless@mozdev.org>
parents: 29212
diff changeset
     3
  $ . "$TESTDIR/helpers-testrepo.sh"
20039
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
     4
  $ import_checker="$TESTDIR"/../contrib/import-checker.py
23894
f388ceae2250 test-module-imports: use test-repo requirement
Matt Mackall <mpm@selenic.com>
parents: 22947
diff changeset
     5
20039
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
     6
  $ cd "$TESTDIR"/..
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
     7
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
     8
There are a handful of cases here that require renaming a module so it
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
     9
doesn't overlap with a stdlib module name. There are also some cycles
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    10
here that we should still endeavor to fix, and some cycles will be
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    11
hidden by deduplication algorithm in the cycle detector, so fixing
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    12
these may expose other cycles.
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    13
28844
99a2bdad0fda tests: enable import checker for tests/**.py files
Yuya Nishihara <yuya@tcha.org>
parents: 28330
diff changeset
    14
Known-bad files are excluded by -X as some of them would produce unstable
99a2bdad0fda tests: enable import checker for tests/**.py files
Yuya Nishihara <yuya@tcha.org>
parents: 28330
diff changeset
    15
outputs, which should be fixed later.
99a2bdad0fda tests: enable import checker for tests/**.py files
Yuya Nishihara <yuya@tcha.org>
parents: 28330
diff changeset
    16
33204
ddd65b4f3ae6 tests: alias syshg and syshgenv so they can be switched conditionally
Yuya Nishihara <yuya@tcha.org>
parents: 33116
diff changeset
    17
  $ testrepohg locate 'set:**.py or grep(r"^#!.*?python")' \
28923
531dea16f4f7 tests: run import-checker with tests .t files
timeless <timeless@mozdev.org>
parents: 28844
diff changeset
    18
  > 'tests/**.t' \
33914
a0aeb096bb12 tests: blacklist some more entries in module import checks
Augie Fackler <raf@durin42.com>
parents: 33439
diff changeset
    19
  > -X hgweb.cgi \
a0aeb096bb12 tests: blacklist some more entries in module import checks
Augie Fackler <raf@durin42.com>
parents: 33439
diff changeset
    20
  > -X setup.py \
29212
8005e0e0eb33 tests: enable import checker for all **.py files
Yuya Nishihara <yuya@tcha.org>
parents: 29208
diff changeset
    21
  > -X contrib/debugshell.py \
33914
a0aeb096bb12 tests: blacklist some more entries in module import checks
Augie Fackler <raf@durin42.com>
parents: 33439
diff changeset
    22
  > -X contrib/hgweb.fcgi \
30435
b86a448a2965 zstd: vendor python-zstandard 0.5.0
Gregory Szorc <gregory.szorc@gmail.com>
parents: 29305
diff changeset
    23
  > -X contrib/python-zstandard/ \
29212
8005e0e0eb33 tests: enable import checker for all **.py files
Yuya Nishihara <yuya@tcha.org>
parents: 29208
diff changeset
    24
  > -X contrib/win32/hgwebdir_wsgi.py \
8005e0e0eb33 tests: enable import checker for all **.py files
Yuya Nishihara <yuya@tcha.org>
parents: 29208
diff changeset
    25
  > -X doc/gendoc.py \
8005e0e0eb33 tests: enable import checker for all **.py files
Yuya Nishihara <yuya@tcha.org>
parents: 29208
diff changeset
    26
  > -X doc/hgmanpage.py \
29234
393aef802535 tests: enable import checker for all python files (including no .py files)
Yuya Nishihara <yuya@tcha.org>
parents: 29219
diff changeset
    27
  > -X i18n/posplit \
34395
41401f502c83 tests: disable lints on mercurial/thirdparty
Siddharth Agarwal <sid0@fb.com>
parents: 33917
diff changeset
    28
  > -X mercurial/thirdparty \
28844
99a2bdad0fda tests: enable import checker for tests/**.py files
Yuya Nishihara <yuya@tcha.org>
parents: 28330
diff changeset
    29
  > -X tests/hypothesishelpers.py \
28923
531dea16f4f7 tests: run import-checker with tests .t files
timeless <timeless@mozdev.org>
parents: 28844
diff changeset
    30
  > -X tests/test-commit-interactive.t \
531dea16f4f7 tests: run import-checker with tests .t files
timeless <timeless@mozdev.org>
parents: 28844
diff changeset
    31
  > -X tests/test-contrib-check-code.t \
33917
9ce139c9222f tests: blacklist test-demandimport from test-check-module-imports
Augie Fackler <raf@durin42.com>
parents: 33916
diff changeset
    32
  > -X tests/test-demandimport.py \
28923
531dea16f4f7 tests: run import-checker with tests .t files
timeless <timeless@mozdev.org>
parents: 28844
diff changeset
    33
  > -X tests/test-extension.t \
531dea16f4f7 tests: run import-checker with tests .t files
timeless <timeless@mozdev.org>
parents: 28844
diff changeset
    34
  > -X tests/test-hghave.t \
33916
d669b1ad215f tests: sort excluded test files in test-check-module-imports
Augie Fackler <raf@durin42.com>
parents: 33914
diff changeset
    35
  > -X tests/test-hgweb-auth.py \
28923
531dea16f4f7 tests: run import-checker with tests .t files
timeless <timeless@mozdev.org>
parents: 28844
diff changeset
    36
  > -X tests/test-hgweb-no-path-info.t \
531dea16f4f7 tests: run import-checker with tests .t files
timeless <timeless@mozdev.org>
parents: 28844
diff changeset
    37
  > -X tests/test-hgweb-no-request-uri.t \
531dea16f4f7 tests: run import-checker with tests .t files
timeless <timeless@mozdev.org>
parents: 28844
diff changeset
    38
  > -X tests/test-hgweb-non-interactive.t \
33916
d669b1ad215f tests: sort excluded test files in test-check-module-imports
Augie Fackler <raf@durin42.com>
parents: 33914
diff changeset
    39
  > -X tests/test-hook.t \
d669b1ad215f tests: sort excluded test files in test-check-module-imports
Augie Fackler <raf@durin42.com>
parents: 33914
diff changeset
    40
  > -X tests/test-import.t \
d669b1ad215f tests: sort excluded test files in test-check-module-imports
Augie Fackler <raf@durin42.com>
parents: 33914
diff changeset
    41
  > -X tests/test-imports-checker.t \
d669b1ad215f tests: sort excluded test files in test-check-module-imports
Augie Fackler <raf@durin42.com>
parents: 33914
diff changeset
    42
  > -X tests/test-lock.py \
d669b1ad215f tests: sort excluded test files in test-check-module-imports
Augie Fackler <raf@durin42.com>
parents: 33914
diff changeset
    43
  > -X tests/test-verify-repo-operations.py \
33262
8e6f4939a69a tests: replace yet more calls to `python` with $PYTHON
Augie Fackler <augie@google.com>
parents: 33204
diff changeset
    44
  > | sed 's-\\-/-g' | $PYTHON "$import_checker" -