tests/test-basic.t
author Gregory Szorc <gregory.szorc@gmail.com>
Sat, 10 Mar 2018 10:20:51 -0800
changeset 36806 69b2d0900cd7
parent 36638 159b04de5fb0
child 37009 5890e5872f36
permissions -rw-r--r--
hgweb: parse WSGI request into a data structure Currently, our WSGI applications (hgweb_mod and hgwebdir_mod) process the raw WSGI request instance themselves. This means they have to talk in terms of system strings. And they need to know details about what's in the WSGI request. And in the case of hgweb_mod, it is doing some very funky things with URL parsing to impact dispatching. The code is difficult to read and maintain. This commit introduces parsing of the WSGI request into a higher-level and easier-to-reason-about data structure. To prove it works, we hook it up to hgweb_mod and use it for populating the relative URL on the request instance. We hold off on using it in more places because the logic in hgweb_mod is crazy and I don't want to involve those changes with review of the parsing code. The URL construction code has variations that use the HTTP: Host header (the canonical WSGI way of reconstructing the URL) and with the use of SERVER_NAME. We need to differentiate because hgweb is currently using SERVER_NAME for URL construction. Differential Revision: https://phab.mercurial-scm.org/D2734
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11742
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
     1
Create a repository:
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
     2
20608
a3ca1d032926 config: make repo optional again
Matt Mackall <mpm@selenic.com>
parents: 17346
diff changeset
     3
  $ hg config
25290
8f88f768e24c devel: rename 'all' to 'all-warnings' (BC)
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 24751
diff changeset
     4
  devel.all-warnings=true
32410
f94d7e3e46a0 devel: activate default-date in tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 31964
diff changeset
     5
  devel.default-date=0 0
33426
29653495cece tests: add extra output for fsmonitor at showconfig
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 32940
diff changeset
     6
  extensions.fsmonitor= (fsmonitor !)
35393
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 35280
diff changeset
     7
  largefiles.usercache=$TESTTMP/.cache/largefiles
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 35280
diff changeset
     8
  lfs.usercache=$TESTTMP/.cache/lfs
20608
a3ca1d032926 config: make repo optional again
Matt Mackall <mpm@selenic.com>
parents: 17346
diff changeset
     9
  ui.slash=True
a3ca1d032926 config: make repo optional again
Matt Mackall <mpm@selenic.com>
parents: 17346
diff changeset
    10
  ui.interactive=False
21918
10abc3a5c6b2 filemerge: use 'basic' as the default of '[ui] mergemarkers' for safety
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20608
diff changeset
    11
  ui.mergemarkers=detailed
23053
5ba11ab48fcf ui: separate option to show prompt echo, enabled only in tests (issue4417)
Yuya Nishihara <yuya@tcha.org>
parents: 21918
diff changeset
    12
  ui.promptecho=True
31009
161ab32b44a1 runtests: set web.address to localhost
Jun Wu <quark@fb.com>
parents: 30986
diff changeset
    13
  web.address=localhost
31010
09ec648cd2a9 runtests: always set web.ipv6
Jun Wu <quark@fb.com>
parents: 31009
diff changeset
    14
  web\.ipv6=(?:True|False) (re)
13956
ffb5c09ba822 tests: remove redundant mkdir
Martin Geisler <mg@lazybytes.net>
parents: 13568
diff changeset
    15
  $ hg init t
11742
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    16
  $ cd t
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    17
31964
ebaada96aec3 stdio: add Linux-specific tests for error checking
Bryan O'Sullivan <bryano@fb.com>
parents: 31010
diff changeset
    18
Prepare a changeset:
11742
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    19
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    20
  $ echo a > a
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    21
  $ hg add a
31964
ebaada96aec3 stdio: add Linux-specific tests for error checking
Bryan O'Sullivan <bryano@fb.com>
parents: 31010
diff changeset
    22
ebaada96aec3 stdio: add Linux-specific tests for error checking
Bryan O'Sullivan <bryano@fb.com>
parents: 31010
diff changeset
    23
  $ hg status
ebaada96aec3 stdio: add Linux-specific tests for error checking
Bryan O'Sullivan <bryano@fb.com>
parents: 31010
diff changeset
    24
  A a
ebaada96aec3 stdio: add Linux-specific tests for error checking
Bryan O'Sullivan <bryano@fb.com>
parents: 31010
diff changeset
    25
ebaada96aec3 stdio: add Linux-specific tests for error checking
Bryan O'Sullivan <bryano@fb.com>
parents: 31010
diff changeset
    26
Writes to stdio succeed and fail appropriately
ebaada96aec3 stdio: add Linux-specific tests for error checking
Bryan O'Sullivan <bryano@fb.com>
parents: 31010
diff changeset
    27
ebaada96aec3 stdio: add Linux-specific tests for error checking
Bryan O'Sullivan <bryano@fb.com>
parents: 31010
diff changeset
    28
#if devfull
ebaada96aec3 stdio: add Linux-specific tests for error checking
Bryan O'Sullivan <bryano@fb.com>
parents: 31010
diff changeset
    29
  $ hg status 2>/dev/full
ebaada96aec3 stdio: add Linux-specific tests for error checking
Bryan O'Sullivan <bryano@fb.com>
parents: 31010
diff changeset
    30
  A a
ebaada96aec3 stdio: add Linux-specific tests for error checking
Bryan O'Sullivan <bryano@fb.com>
parents: 31010
diff changeset
    31
ebaada96aec3 stdio: add Linux-specific tests for error checking
Bryan O'Sullivan <bryano@fb.com>
parents: 31010
diff changeset
    32
  $ hg status >/dev/full
ebaada96aec3 stdio: add Linux-specific tests for error checking
Bryan O'Sullivan <bryano@fb.com>
parents: 31010
diff changeset
    33
  abort: No space left on device
ebaada96aec3 stdio: add Linux-specific tests for error checking
Bryan O'Sullivan <bryano@fb.com>
parents: 31010
diff changeset
    34
  [255]
34448
1f5bd3e1a7fe test-basic: make test compatible with chg
Saurabh Singh <singhsrb@fb.com>
parents: 33426
diff changeset
    35
#endif
31964
ebaada96aec3 stdio: add Linux-specific tests for error checking
Bryan O'Sullivan <bryano@fb.com>
parents: 31010
diff changeset
    36
35653
48fe4f56a3b4 dispatch: handle IOError when writing to stderr
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35393
diff changeset
    37
#if devfull
34448
1f5bd3e1a7fe test-basic: make test compatible with chg
Saurabh Singh <singhsrb@fb.com>
parents: 33426
diff changeset
    38
  $ hg status >/dev/full 2>&1
1f5bd3e1a7fe test-basic: make test compatible with chg
Saurabh Singh <singhsrb@fb.com>
parents: 33426
diff changeset
    39
  [255]
1f5bd3e1a7fe test-basic: make test compatible with chg
Saurabh Singh <singhsrb@fb.com>
parents: 33426
diff changeset
    40
1f5bd3e1a7fe test-basic: make test compatible with chg
Saurabh Singh <singhsrb@fb.com>
parents: 33426
diff changeset
    41
  $ hg status ENOENT 2>/dev/full
1f5bd3e1a7fe test-basic: make test compatible with chg
Saurabh Singh <singhsrb@fb.com>
parents: 33426
diff changeset
    42
  [255]
1f5bd3e1a7fe test-basic: make test compatible with chg
Saurabh Singh <singhsrb@fb.com>
parents: 33426
diff changeset
    43
#endif
1f5bd3e1a7fe test-basic: make test compatible with chg
Saurabh Singh <singhsrb@fb.com>
parents: 33426
diff changeset
    44
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11742
diff changeset
    45
  $ hg commit -m test
11742
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    46
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    47
This command is ancient:
331
55f63f3b6a54 Add a simple testing framework
mpm@selenic.com
parents:
diff changeset
    48
11742
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    49
  $ hg history
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11742
diff changeset
    50
  changeset:   0:acb14030fe0a
11742
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    51
  tag:         tip
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    52
  user:        test
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11742
diff changeset
    53
  date:        Thu Jan 01 00:00:00 1970 +0000
11742
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    54
  summary:     test
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    55
  
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    56
13568
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    57
Verify that updating to revision 0 via commands.update() works properly
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    58
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    59
  $ cat <<EOF > update_to_rev0.py
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    60
  > from mercurial import ui, hg, commands
30559
d83ca854fa21 ui: factor out ui.load() to create a ui without loading configs (API)
Yuya Nishihara <yuya@tcha.org>
parents: 30513
diff changeset
    61
  > myui = ui.ui.load()
36638
159b04de5fb0 py3: make test-basic.t pass on Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 36247
diff changeset
    62
  > repo = hg.repository(myui, path=b'.')
13568
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    63
  > commands.update(myui, repo, rev=0)
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    64
  > EOF
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    65
  $ hg up null
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    66
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
32940
75be14993fda cleanup: use $PYTHON to run python in many more tests
Augie Fackler <augie@google.com>
parents: 32414
diff changeset
    67
  $ $PYTHON ./update_to_rev0.py
13568
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    68
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    69
  $ hg identify -n
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    70
  0
17346
2944a6d35158 check-code: fix check for trailing whitespace on empty lines
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
    71
13568
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    72
11742
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    73
Poke around at hashes:
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    74
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    75
  $ hg manifest --debug
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    76
  b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 644   a
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    77
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    78
  $ hg cat a
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    79
  a
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    80
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    81
Verify should succeed:
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    82
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    83
  $ hg verify
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    84
  checking changesets
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    85
  checking manifests
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    86
  crosschecking files in changesets and manifests
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    87
  checking files
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    88
  1 files, 1 changesets, 1 total revisions
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    89
36247
48a6b1a22ccf templatekw: add {reporoot} keyword
Yuya Nishihara <yuya@tcha.org>
parents: 35653
diff changeset
    90
Repository root:
48a6b1a22ccf templatekw: add {reporoot} keyword
Yuya Nishihara <yuya@tcha.org>
parents: 35653
diff changeset
    91
48a6b1a22ccf templatekw: add {reporoot} keyword
Yuya Nishihara <yuya@tcha.org>
parents: 35653
diff changeset
    92
  $ hg root
48a6b1a22ccf templatekw: add {reporoot} keyword
Yuya Nishihara <yuya@tcha.org>
parents: 35653
diff changeset
    93
  $TESTTMP/t
48a6b1a22ccf templatekw: add {reporoot} keyword
Yuya Nishihara <yuya@tcha.org>
parents: 35653
diff changeset
    94
  $ hg log -l1 -T '{reporoot}\n'
48a6b1a22ccf templatekw: add {reporoot} keyword
Yuya Nishihara <yuya@tcha.org>
parents: 35653
diff changeset
    95
  $TESTTMP/t
48a6b1a22ccf templatekw: add {reporoot} keyword
Yuya Nishihara <yuya@tcha.org>
parents: 35653
diff changeset
    96
11742
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    97
At the end...
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 13956
diff changeset
    98
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 13956
diff changeset
    99
  $ cd ..