annotate tests/test-duplicateoptions.py @ 31975:76169296e52f

obsolescence: add test for the "branch replacement" logic during push, case A2 Mercurial checks for the introduction of new heads on push. Evolution comes into play to detect if existing branches on the server are being replaced by some of the new one we push. The current code for this logic is very basic (eg: issue4354) and was poorly tested. We have a better implementation coming in the evolve extension fixing these issues and with more serious tests coverage. In the process of upstreaming this improved logic, we start with adding the test case that are already passing with the current implementation. Once they are all in, we'll upstream the better implementation and the extra test case. See inline documentation for details about the test case added in this changeset.
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
date Thu, 13 Apr 2017 16:23:01 +0200
parents d83ca854fa21
children bd872f64a8ba
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
20622
352abbb0be88 extensions: remove the inotify extension (BC)
Matt Mackall <mpm@selenic.com>
parents: 16383
diff changeset
9 ignore = set(['highlight', 'win32text', 'factotum'])
14449
7d171c05a631 tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
10
7d171c05a631 tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
11 if os.name != 'nt':
7d171c05a631 tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
12 ignore.add('win32mbcs')
7d171c05a631 tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
13
7d171c05a631 tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
14 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
15
7d171c05a631 tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
16 hgrc = open(os.environ["HGRCPATH"], 'w')
7d171c05a631 tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
17 hgrc.write('[extensions]\n')
7d171c05a631 tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
18
7d171c05a631 tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
19 for ext in disabled:
7d171c05a631 tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
20 hgrc.write(ext + '=\n')
7d171c05a631 tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
21
7d171c05a631 tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
22 hgrc.close()
7d171c05a631 tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
23
30559
d83ca854fa21 ui: factor out ui.load() to create a ui without loading configs (API)
Yuya Nishihara <yuya@tcha.org>
parents: 28804
diff changeset
24 u = uimod.ui.load()
14449
7d171c05a631 tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
25 extensions.loadall(u)
7d171c05a631 tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
26
15099
b1f49efeab65 test: test for options duplicate with global options
Simon Heimberg <simohe@besonet.ch>
parents: 14762
diff changeset
27 globalshort = set()
b1f49efeab65 test: test for options duplicate with global options
Simon Heimberg <simohe@besonet.ch>
parents: 14762
diff changeset
28 globallong = set()
b1f49efeab65 test: test for options duplicate with global options
Simon Heimberg <simohe@besonet.ch>
parents: 14762
diff changeset
29 for option in commands.globalopts:
b1f49efeab65 test: test for options duplicate with global options
Simon Heimberg <simohe@besonet.ch>
parents: 14762
diff changeset
30 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
31 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
32
14449
7d171c05a631 tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
33 for cmd, entry in commands.table.iteritems():
15099
b1f49efeab65 test: test for options duplicate with global options
Simon Heimberg <simohe@besonet.ch>
parents: 14762
diff changeset
34 seenshort = globalshort.copy()
b1f49efeab65 test: test for options duplicate with global options
Simon Heimberg <simohe@besonet.ch>
parents: 14762
diff changeset
35 seenlong = globallong.copy()
14449
7d171c05a631 tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
36 for option in entry[1]:
7d171c05a631 tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
37 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
38 (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
39 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
40 seenshort.add(option[0])
7d171c05a631 tests: add a test to check for duplicate command options
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
41 seenlong.add(option[1])