Mercurial > hg
annotate tests/test-duplicateoptions.py @ 40729:c93d046d4300
extensions: add "uipopulate" hook, called per instance, not per process
In short, this is the "reposetup" function for ui. It allows us to modify
ui attributes without extending ui.__class__. Before, the only way to do
that was to abuse the config dictionary, which is copied across ui instances.
See the next patch for usage example.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Mon, 12 Nov 2018 21:10:51 +0900 |
parents | 801c8ca60af5 |
children | aaad36b88298 |
rev | line source |
---|---|
28740
e8ecd1aa3f6c
py3: use print_function in test-duplicateoptions.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28739
diff
changeset
|
1 from __future__ import absolute_import, print_function |
14449
7d171c05a631
tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
2 import os |
28739
d289b8847f23
py3: use absolute_import in test-duplicateoptions.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
20622
diff
changeset
|
3 from mercurial import ( |
d289b8847f23
py3: use absolute_import in test-duplicateoptions.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
20622
diff
changeset
|
4 commands, |
d289b8847f23
py3: use absolute_import in test-duplicateoptions.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
20622
diff
changeset
|
5 extensions, |
28804
ce49c8d4f0bb
test-duplicateoptions: alias ui as uimod
Yuya Nishihara <yuya@tcha.org>
parents:
28740
diff
changeset
|
6 ui as uimod, |
28739
d289b8847f23
py3: use absolute_import in test-duplicateoptions.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
20622
diff
changeset
|
7 ) |
14449
7d171c05a631
tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
8 |
38340
9abe91a503da
graph: improve graph output by using Unicode characters
John Stiles <johnstiles@gmail.com>
parents:
33723
diff
changeset
|
9 ignore = {b'highlight', b'win32text', b'factotum', b'beautifygraph'} |
14449
7d171c05a631
tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
10 |
40363
c3ad9ef0876c
tests: don't emit false failures when sqlite3 is missing
Augie Fackler <augie@google.com>
parents:
38340
diff
changeset
|
11 try: |
c3ad9ef0876c
tests: don't emit false failures when sqlite3 is missing
Augie Fackler <augie@google.com>
parents:
38340
diff
changeset
|
12 import sqlite3 |
40376
801c8ca60af5
tests: fix pyflakes warning in test-duplicateoptions.py
Augie Fackler <augie@google.com>
parents:
40363
diff
changeset
|
13 del sqlite3 # unused, just checking that import works |
40363
c3ad9ef0876c
tests: don't emit false failures when sqlite3 is missing
Augie Fackler <augie@google.com>
parents:
38340
diff
changeset
|
14 except ImportError: |
c3ad9ef0876c
tests: don't emit false failures when sqlite3 is missing
Augie Fackler <augie@google.com>
parents:
38340
diff
changeset
|
15 ignore.add(b'sqlitestore') |
c3ad9ef0876c
tests: don't emit false failures when sqlite3 is missing
Augie Fackler <augie@google.com>
parents:
38340
diff
changeset
|
16 |
14449
7d171c05a631
tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
17 if os.name != 'nt': |
33723
5b2f331d0a33
tests: update duplicateoptions test to use bytestrings everywhere
Augie Fackler <augie@google.com>
parents:
32291
diff
changeset
|
18 ignore.add(b'win32mbcs') |
14449
7d171c05a631
tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
19 |
7d171c05a631
tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
20 disabled = [ext for ext in extensions.disabled().keys() if ext not in ignore] |
7d171c05a631
tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
21 |
33723
5b2f331d0a33
tests: update duplicateoptions test to use bytestrings everywhere
Augie Fackler <augie@google.com>
parents:
32291
diff
changeset
|
22 hgrc = open(os.environ["HGRCPATH"], 'wb') |
5b2f331d0a33
tests: update duplicateoptions test to use bytestrings everywhere
Augie Fackler <augie@google.com>
parents:
32291
diff
changeset
|
23 hgrc.write(b'[extensions]\n') |
14449
7d171c05a631
tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
24 |
7d171c05a631
tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
25 for ext in disabled: |
33723
5b2f331d0a33
tests: update duplicateoptions test to use bytestrings everywhere
Augie Fackler <augie@google.com>
parents:
32291
diff
changeset
|
26 hgrc.write(ext + b'=\n') |
14449
7d171c05a631
tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
27 |
7d171c05a631
tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
28 hgrc.close() |
7d171c05a631
tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
29 |
30559
d83ca854fa21
ui: factor out ui.load() to create a ui without loading configs (API)
Yuya Nishihara <yuya@tcha.org>
parents:
28804
diff
changeset
|
30 u = uimod.ui.load() |
14449
7d171c05a631
tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
31 extensions.loadall(u) |
40729
c93d046d4300
extensions: add "uipopulate" hook, called per instance, not per process
Yuya Nishihara <yuya@tcha.org>
parents:
40376
diff
changeset
|
32 extensions.populateui(u) |
14449
7d171c05a631
tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
33 |
15099
b1f49efeab65
test: test for options duplicate with global options
Simon Heimberg <simohe@besonet.ch>
parents:
14762
diff
changeset
|
34 globalshort = set() |
b1f49efeab65
test: test for options duplicate with global options
Simon Heimberg <simohe@besonet.ch>
parents:
14762
diff
changeset
|
35 globallong = set() |
b1f49efeab65
test: test for options duplicate with global options
Simon Heimberg <simohe@besonet.ch>
parents:
14762
diff
changeset
|
36 for option in commands.globalopts: |
b1f49efeab65
test: test for options duplicate with global options
Simon Heimberg <simohe@besonet.ch>
parents:
14762
diff
changeset
|
37 option[0] and globalshort.add(option[0]) |
b1f49efeab65
test: test for options duplicate with global options
Simon Heimberg <simohe@besonet.ch>
parents:
14762
diff
changeset
|
38 option[1] and globallong.add(option[1]) |
b1f49efeab65
test: test for options duplicate with global options
Simon Heimberg <simohe@besonet.ch>
parents:
14762
diff
changeset
|
39 |
33723
5b2f331d0a33
tests: update duplicateoptions test to use bytestrings everywhere
Augie Fackler <augie@google.com>
parents:
32291
diff
changeset
|
40 for cmd, entry in commands.table.items(): |
15099
b1f49efeab65
test: test for options duplicate with global options
Simon Heimberg <simohe@besonet.ch>
parents:
14762
diff
changeset
|
41 seenshort = globalshort.copy() |
b1f49efeab65
test: test for options duplicate with global options
Simon Heimberg <simohe@besonet.ch>
parents:
14762
diff
changeset
|
42 seenlong = globallong.copy() |
14449
7d171c05a631
tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
43 for option in entry[1]: |
7d171c05a631
tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
44 if (option[0] and option[0] in seenshort) or \ |
7d171c05a631
tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
45 (option[1] and option[1] in seenlong): |
28740
e8ecd1aa3f6c
py3: use print_function in test-duplicateoptions.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28739
diff
changeset
|
46 print("command '" + cmd + "' has duplicate option " + str(option)) |
14449
7d171c05a631
tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
47 seenshort.add(option[0]) |
7d171c05a631
tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
48 seenlong.add(option[1]) |