コード例 #1
0
 def entries(self, dates):
     today = history.Entry(atime=str(dates.today.timestamp()),
                           url=QUrl('www.today.com'),
                           title='today')
     tomorrow = history.Entry(atime=str(dates.tomorrow.timestamp()),
                              url=QUrl('www.tomorrow.com'),
                              title='tomorrow')
     yesterday = history.Entry(atime=str(dates.yesterday.timestamp()),
                               url=QUrl('www.yesterday.com'),
                               title='yesterday')
     return Dates(yesterday, today, tomorrow)
コード例 #2
0
ファイル: test_models.py プロジェクト: xijia37/qutebrowser
def web_history(stubs, web_history_stub):
    """Pre-populate the web-history stub with some history entries."""
    web_history_stub.history_dict = collections.OrderedDict([
        ('http://qutebrowser.org', history.Entry(
            datetime(2015, 9, 5).timestamp(),
            QUrl('http://qutebrowser.org'), 'qutebrowser | qutebrowser')),
        ('https://python.org', history.Entry(
            datetime(2016, 3, 8).timestamp(),
            QUrl('https://python.org'), 'Welcome to Python.org')),
        ('https://github.com', history.Entry(
            datetime(2016, 5, 1).timestamp(),
            QUrl('https://github.com'), 'GitHub')),
    ])
    return web_history_stub
コード例 #3
0
def test_iter(hist):
    list(hist.async_read())

    url = QUrl('http://www.example.com/')
    hist.add_url(url, atime=12345)

    entry = history.Entry(url=url, atime=12345, redirect=False, title="")
    assert list(hist) == [entry]
コード例 #4
0
def test_add_item_redirect(qtbot, hist):
    list(hist.async_read())
    url = 'http://www.example.com/'
    with qtbot.assertNotEmitted(hist.add_completion_item):
        with qtbot.waitSignal(hist.item_added):
            hist.add_url(QUrl(url), redirect=True, atime=12345)

    entry = history.Entry(url=QUrl(url), redirect=True, atime=12345, title="")
    assert hist.history_dict[url] == entry
コード例 #5
0
    def test_qute_history_benchmark(self, fake_web_history, benchmark, now):
        for t in range(100000):  # one history per second
            entry = history.Entry(
                atime=str(now - t),
                url=QUrl('www.x.com/{}'.format(t)),
                title='x at {}'.format(t))
            fake_web_history._add_entry(entry)

        url = QUrl("qute://history/data?start_time={}".format(now))
        _mimetype, _data = benchmark(qutescheme.qute_history, url)
コード例 #6
0
ファイル: test_history.py プロジェクト: julianuu/qutebrowser
def hist_interface():
    entry = history.Entry(atime=0,
                          url=QUrl('http://www.example.com/'),
                          title='example')
    history_dict = {'http://www.example.com/': entry}
    fake_hist = FakeWebHistory(history_dict)
    interface = webkithistory.WebHistoryInterface(fake_hist)
    QWebHistoryInterface.setDefaultInterface(interface)
    yield
    QWebHistoryInterface.setDefaultInterface(None)
コード例 #7
0
    def test_qute_history_benchmark(self, fake_web_history, benchmark, now):
        # items must be earliest-first to ensure history is sorted properly
        for t in range(100000, 0, -1):  # one history per second
            entry = history.Entry(atime=str(now - t),
                                  url=QUrl('www.x.com/{}'.format(t)),
                                  title='x at {}'.format(t))
            fake_web_history._add_entry(entry)

        url = QUrl("qute://history/data?start_time={}".format(now))
        _mimetype, data = benchmark(qutescheme.qute_history, url)
        assert len(json.loads(data)) > 1
コード例 #8
0
def test_add_item(qtbot, hist):
    list(hist.async_read())
    url = 'http://www.example.com/'

    with qtbot.waitSignals([hist.add_completion_item, hist.item_added],
                           order='strict'):
        hist.add_url(QUrl(url), atime=12345, title="the title")

    entry = history.Entry(url=QUrl(url), redirect=False, atime=12345,
                          title="the title")
    assert hist.history_dict[url] == entry
コード例 #9
0
def hist_interface():
    # pylint: disable=invalid-name
    QtWebKit = pytest.importorskip('PyQt5.QtWebKit')
    from qutebrowser.browser.webkit import webkithistory
    QWebHistoryInterface = QtWebKit.QWebHistoryInterface
    # pylint: enable=invalid-name
    entry = history.Entry(atime=0, url=QUrl('http://www.example.com/'),
                          title='example')
    history_dict = {'http://www.example.com/': entry}
    fake_hist = FakeWebHistory(history_dict)
    interface = webkithistory.WebHistoryInterface(fake_hist)
    QWebHistoryInterface.setDefaultInterface(interface)
    yield
    QWebHistoryInterface.setDefaultInterface(None)
コード例 #10
0
    def entries(self, now):
        """Create fake history entries."""
        # create 12 history items spaced 6 hours apart, starting from now
        entry_count = 12
        interval = 6 * 60 * 60

        items = []
        for i in range(entry_count):
            entry_atime = now - i * interval
            entry = history.Entry(atime=str(entry_atime),
                url=QUrl("www.x.com/" + str(i)), title="Page " + str(i))
            items.insert(0, entry)

        return items
コード例 #11
0
def test_add_item_redirect_update(qtbot, tmpdir):
    """A redirect update added should override a non-redirect one."""
    url = 'http://www.example.com/'

    hist_file = tmpdir / 'filled-history'
    hist_file.write('12345 {}\n'.format(url))
    hist = history.WebHistory(hist_dir=str(tmpdir), hist_name='filled-history')
    list(hist.async_read())

    with qtbot.assertNotEmitted(hist.add_completion_item):
        with qtbot.waitSignal(hist.item_added):
            hist.add_url(QUrl(url), redirect=True, atime=67890)

    entry = history.Entry(url=QUrl(url), redirect=True, atime=67890, title="")
    assert hist.history_dict[url] == entry
コード例 #12
0
    def test_qute_history_benchmark(self, dates, entries, fake_web_history,
                                    benchmark):
        for i in range(100000):
            entry = history.Entry(atime=str(dates.yesterday.timestamp()),
                                  url=QUrl('www.yesterday.com/{}'.format(i)),
                                  title='yesterday')
            fake_web_history._add_entry(entry)
        fake_web_history._add_entry(entries.today)
        fake_web_history._add_entry(entries.tomorrow)

        url = QUrl("qute://history")
        _mimetype, data = benchmark(qutescheme.qute_history, url)

        assert "today" in data
        assert "tomorrow" not in data
        assert "yesterday" not in data
コード例 #13
0
def test_adding_item_during_async_read(qtbot, hist, redirect):
    """Check what happens when adding URL while reading the history."""
    url = QUrl('http://www.example.com/')

    with qtbot.assertNotEmitted(hist.add_completion_item), \
            qtbot.assertNotEmitted(hist.item_added):
        hist.add_url(url, redirect=redirect, atime=12345)

    if redirect:
        with qtbot.assertNotEmitted(hist.add_completion_item):
            with qtbot.waitSignal(hist.async_read_done):
                list(hist.async_read())
    else:
        with qtbot.waitSignals([hist.add_completion_item,
                                hist.async_read_done], order='strict'):
            list(hist.async_read())

    assert not hist._temp_history

    expected = history.Entry(url=url, atime=12345, redirect=redirect, title="")
    assert list(hist.history_dict.values()) == [expected]
コード例 #14
0
ファイル: test_models.py プロジェクト: xijia37/qutebrowser
def test_url_completion_benchmark(benchmark, config_stub,
                                  quickmark_manager_stub,
                                  bookmark_manager_stub,
                                  web_history_stub):
    """Benchmark url completion."""
    config_stub.data['completion'] = {'timestamp-format': '%Y-%m-%d',
                                      'web-history-max-items': 1000}

    entries = [history.Entry(
        atime=i,
        url=QUrl('http://example.com/{}'.format(i)),
        title='title{}'.format(i))
        for i in range(100000)]

    web_history_stub.history_dict = collections.OrderedDict(
        ((e.url_str(), e) for e in entries))

    quickmark_manager_stub.marks = collections.OrderedDict(
        (e.title, e.url_str())
        for e in entries[0:1000])

    bookmark_manager_stub.marks = collections.OrderedDict(
        (e.url_str(), e.title)
        for e in entries[0:1000])

    def bench():
        model = urlmodel.UrlCompletionModel()
        filtermodel = sortfilter.CompletionFilterModel(model)
        filtermodel.set_pattern('')
        filtermodel.set_pattern('e')
        filtermodel.set_pattern('ex')
        filtermodel.set_pattern('ex ')
        filtermodel.set_pattern('ex 1')
        filtermodel.set_pattern('ex 12')
        filtermodel.set_pattern('ex 123')

    benchmark(bench)
コード例 #15
0
    hist = history.WebHistory(hist_dir=str(tmpdir), hist_name='filled-history')
    list(hist.async_read())

    with qtbot.assertNotEmitted(hist.add_completion_item):
        with qtbot.waitSignal(hist.item_added):
            hist.add_url(QUrl(url), redirect=True, atime=67890)

    entry = history.Entry(url=QUrl(url), redirect=True, atime=67890, title="")
    assert hist.history_dict[url] == entry


@pytest.mark.parametrize('line, expected', [
    (
        # old format without title
        '12345 http://example.com/',
        history.Entry(atime=12345, url=QUrl('http://example.com/'), title='',)
    ),
    (
        # trailing space without title
        '12345 http://example.com/ ',
        history.Entry(atime=12345, url=QUrl('http://example.com/'), title='',)
    ),
    (
        # new format with title
        '12345 http://example.com/ this is a title',
        history.Entry(atime=12345, url=QUrl('http://example.com/'),
                      title='this is a title')
    ),
    (
        # weird NUL bytes
        '\x0012345 http://example.com/',