Merge remote-tracking branch 'origin/pr/3515'

This commit is contained in:
Florian Bruhin 2018-01-25 09:02:20 +01:00
commit 54e9edfd60
6 changed files with 26 additions and 3 deletions

View File

@ -743,7 +743,9 @@ This tries to automatically click on typical _Previous Page_ or _Next Page_ link
- `next`: Open a _next_ link.
- `up`: Go up a level in the current URL.
- `increment`: Increment the last number in the URL.
Uses the link:settings.html#url.incdec_segments[url.incdec_segments] config option.
- `decrement`: Decrement the last number in the URL.
Uses the link:settings.html#url.incdec_segments[url.incdec_segments] config option.

View File

@ -2994,6 +2994,7 @@ Type: <<types,FlagList>>
Valid values:
* +host+
* +port+
* +path+
* +query+
* +anchor+

View File

@ -638,7 +638,9 @@ class CommandDispatcher:
- `next`: Open a _next_ link.
- `up`: Go up a level in the current URL.
- `increment`: Increment the last number in the URL.
Uses the link:settings.html#url.incdec_segments[url.incdec_segments] config option.
- `decrement`: Decrement the last number in the URL.
Uses the link:settings.html#url.incdec_segments[url.incdec_segments] config option.
tab: Open in a new tab.
bg: Open in a background tab.

View File

@ -1418,7 +1418,7 @@ url.default_page:
url.incdec_segments:
type:
name: FlagList
valid_values: [host, path, query, anchor]
valid_values: [host, port, path, query, anchor]
default: [path, query]
desc: URL segments where `:navigate increment/decrement` will search for
a number.

View File

@ -537,7 +537,7 @@ def incdec_number(url, incdec, count=1, segments=None):
incdec: Either 'increment' or 'decrement'
count: The number to increment or decrement by
segments: A set of URL segments to search. Valid segments are:
'host', 'path', 'query', 'anchor'.
'host', 'port', 'path', 'query', 'anchor'.
Default: {'path', 'query'}
Return:
@ -550,7 +550,7 @@ def incdec_number(url, incdec, count=1, segments=None):
if segments is None:
segments = {'path', 'query'}
valid_segments = {'host', 'path', 'query', 'anchor'}
valid_segments = {'host', 'port', 'path', 'query', 'anchor'}
if segments - valid_segments:
extra_elements = segments - valid_segments
raise IncDecError("Invalid segments: {}".format(
@ -561,6 +561,7 @@ def incdec_number(url, incdec, count=1, segments=None):
# Order as they appear in a URL
segment_modifiers = [
('host', url.host, url.setHost),
('port', lambda: str(url.port()) if url.port() > 0 else '', lambda x: url.setPort(int(x))),
('path', url.path, url.setPath),
('query', url.query, url.setQuery),
('anchor', url.fragment, url.setFragment),

View File

@ -622,6 +622,23 @@ class TestIncDecNumber:
base_url, incdec, segments={'host', 'path', 'query', 'anchor'})
assert new_url == expected_url
def test_incdec_port(self):
"""Test incdec_number with port."""
base_url = QUrl('http://localhost:8000')
new_url = urlutils.incdec_number(
base_url, 'increment', segments={'port'})
assert new_url == QUrl('http://localhost:8001')
new_url = urlutils.incdec_number(
base_url, 'decrement', segments={'port'})
assert new_url == QUrl('http://localhost:7999')
def test_incdec_port_default(self):
"""Test that a default port (with url.port() == -1) is not touched."""
base_url = QUrl('http://localhost')
with pytest.raises(urlutils.IncDecError):
urlutils.incdec_number(base_url, 'increment', segments={'port'})
@pytest.mark.parametrize('incdec', ['increment', 'decrement'])
@pytest.mark.parametrize('value', [
'{}foo', 'foo{}', 'foo{}bar', '42foo{}'