Mercurial > hg
annotate tests/printenv.py @ 50329:3dbc7b1ecaba stable
typing: correct the signature of error.CommandError
There's a place in `mercurial.dispatch._parse()` that passes None if a parse
error happens before the command can be parsed out, and casting the error to
bytes works fine because the command and message fields are apparently ignored.
Likewise, TortoiseHg similarly passes None for the same reason.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Fri, 24 Mar 2023 02:22:12 -0400 |
parents | 6000f5b25c9b |
children |
rev | line source |
---|---|
45830
c102b704edb5
global: use python3 in shebangs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43076
diff
changeset
|
1 #!/usr/bin/env python3 |
25477
a372f7b4463b
tests: make printenv executable
Matt Mackall <mpm@selenic.com>
parents:
17018
diff
changeset
|
2 # |
4285
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
3 # simple script to be used in hooks |
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
4 # |
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
5 # put something like this in the repo .hg/hgrc: |
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
6 # |
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
7 # [hooks] |
17018
e7fdfc702d9f
tests: consistently use printenv.py the same MSYS/Windows-compatible way
Mads Kiilerich <mads@kiilerich.com>
parents:
16982
diff
changeset
|
8 # changegroup = python "$TESTDIR/printenv.py" <hookname> [exit] [output] |
4285
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
9 # |
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
10 # - <hookname> is a mandatory argument (e.g. "changegroup") |
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
11 # - [exit] is the exit code of the hook (default: 0) |
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
12 # - [output] is the name of the output file (default: use sys.stdout) |
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
13 # the file will be opened in append mode. |
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
14 # |
41025
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
15 import argparse |
4285
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
16 import os |
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
17 import sys |
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
18 |
7080
a6477aa893b8
tests: Windows compatibility fixes
Patrick Mezard <pmezard@gmail.com>
parents:
4659
diff
changeset
|
19 try: |
a6477aa893b8
tests: Windows compatibility fixes
Patrick Mezard <pmezard@gmail.com>
parents:
4659
diff
changeset
|
20 import msvcrt |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41036
diff
changeset
|
21 |
7080
a6477aa893b8
tests: Windows compatibility fixes
Patrick Mezard <pmezard@gmail.com>
parents:
4659
diff
changeset
|
22 msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) |
a6477aa893b8
tests: Windows compatibility fixes
Patrick Mezard <pmezard@gmail.com>
parents:
4659
diff
changeset
|
23 msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) |
7186
f77c8d8331ca
clean up trailing spaces, leading spaces in C
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7080
diff
changeset
|
24 msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY) |
7080
a6477aa893b8
tests: Windows compatibility fixes
Patrick Mezard <pmezard@gmail.com>
parents:
4659
diff
changeset
|
25 except ImportError: |
a6477aa893b8
tests: Windows compatibility fixes
Patrick Mezard <pmezard@gmail.com>
parents:
4659
diff
changeset
|
26 pass |
a6477aa893b8
tests: Windows compatibility fixes
Patrick Mezard <pmezard@gmail.com>
parents:
4659
diff
changeset
|
27 |
41025
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
28 parser = argparse.ArgumentParser() |
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
29 parser.add_argument("name", help="the hook name, used for display") |
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
30 parser.add_argument( |
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
31 "exitcode", |
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
32 nargs="?", |
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
33 default=0, |
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
34 type=int, |
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
35 help="the exit code for the hook", |
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
36 ) |
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
37 parser.add_argument( |
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
38 "out", nargs="?", default=None, help="where to write the output" |
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
39 ) |
41036
73da729ccfef
test: introduce a new flag to display env variable line per line
Boris Feld <boris.feld@octobus.net>
parents:
41025
diff
changeset
|
40 parser.add_argument( |
73da729ccfef
test: introduce a new flag to display env variable line per line
Boris Feld <boris.feld@octobus.net>
parents:
41025
diff
changeset
|
41 "--line", |
73da729ccfef
test: introduce a new flag to display env variable line per line
Boris Feld <boris.feld@octobus.net>
parents:
41025
diff
changeset
|
42 action="store_true", |
73da729ccfef
test: introduce a new flag to display env variable line per line
Boris Feld <boris.feld@octobus.net>
parents:
41025
diff
changeset
|
43 help="print environment variables one per line instead of on a single line", |
73da729ccfef
test: introduce a new flag to display env variable line per line
Boris Feld <boris.feld@octobus.net>
parents:
41025
diff
changeset
|
44 ) |
41025
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
45 args = parser.parse_args() |
4285
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
46 |
41025
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
47 if args.out is None: |
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
48 out = sys.stdout |
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
49 out = getattr(out, "buffer", out) |
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
50 else: |
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
51 out = open(args.out, "ab") |
4285
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
52 |
4643
a39cec1d5cb8
printenv: filter empty environment variables for portability.
Patrick Mezard <pmezard@gmail.com>
parents:
4285
diff
changeset
|
53 # variables with empty values may not exist on all platforms, filter |
a39cec1d5cb8
printenv: filter empty environment variables for portability.
Patrick Mezard <pmezard@gmail.com>
parents:
4285
diff
changeset
|
54 # them now for portability sake. |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41036
diff
changeset
|
55 env = [(k, v) for k, v in os.environ.items() if k.startswith("HG_") and v] |
4285
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
56 env.sort() |
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
57 |
41025
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
58 out.write(b"%s hook: " % args.name.encode('ascii')) |
16982
9c892c830a72
tests/printenv.py: eliminate trailing spaces on output
Adrian Buehlmann <adrian@cadifra.com>
parents:
16963
diff
changeset
|
59 if os.name == 'nt': |
9c892c830a72
tests/printenv.py: eliminate trailing spaces on output
Adrian Buehlmann <adrian@cadifra.com>
parents:
16963
diff
changeset
|
60 filter = lambda x: x.replace('\\', '/') |
9c892c830a72
tests/printenv.py: eliminate trailing spaces on output
Adrian Buehlmann <adrian@cadifra.com>
parents:
16963
diff
changeset
|
61 else: |
9c892c830a72
tests/printenv.py: eliminate trailing spaces on output
Adrian Buehlmann <adrian@cadifra.com>
parents:
16963
diff
changeset
|
62 filter = lambda x: x |
41036
73da729ccfef
test: introduce a new flag to display env variable line per line
Boris Feld <boris.feld@octobus.net>
parents:
41025
diff
changeset
|
63 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41036
diff
changeset
|
64 vars = [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41036
diff
changeset
|
65 b"%s=%s" % (k.encode('ascii'), filter(v).encode('ascii')) for k, v in env |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41036
diff
changeset
|
66 ] |
41036
73da729ccfef
test: introduce a new flag to display env variable line per line
Boris Feld <boris.feld@octobus.net>
parents:
41025
diff
changeset
|
67 |
73da729ccfef
test: introduce a new flag to display env variable line per line
Boris Feld <boris.feld@octobus.net>
parents:
41025
diff
changeset
|
68 # Print variables on out |
73da729ccfef
test: introduce a new flag to display env variable line per line
Boris Feld <boris.feld@octobus.net>
parents:
41025
diff
changeset
|
69 if not args.line: |
73da729ccfef
test: introduce a new flag to display env variable line per line
Boris Feld <boris.feld@octobus.net>
parents:
41025
diff
changeset
|
70 out.write(b" ".join(vars)) |
73da729ccfef
test: introduce a new flag to display env variable line per line
Boris Feld <boris.feld@octobus.net>
parents:
41025
diff
changeset
|
71 else: |
73da729ccfef
test: introduce a new flag to display env variable line per line
Boris Feld <boris.feld@octobus.net>
parents:
41025
diff
changeset
|
72 for var in vars: |
73da729ccfef
test: introduce a new flag to display env variable line per line
Boris Feld <boris.feld@octobus.net>
parents:
41025
diff
changeset
|
73 out.write(var) |
73da729ccfef
test: introduce a new flag to display env variable line per line
Boris Feld <boris.feld@octobus.net>
parents:
41025
diff
changeset
|
74 out.write(b"\n") |
73da729ccfef
test: introduce a new flag to display env variable line per line
Boris Feld <boris.feld@octobus.net>
parents:
41025
diff
changeset
|
75 |
38111
bacbe829c2bf
py3: use bytes in tests/printenv.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36254
diff
changeset
|
76 out.write(b"\n") |
4285
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
77 out.close() |
4fd6f7e60894
Add tests/printenv.py
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
78 |
41025
3c5aaea9638f
tests: update printenv.py argument parsing
Boris Feld <boris.feld@octobus.net>
parents:
38296
diff
changeset
|
79 sys.exit(args.exitcode) |