def test_oserror(self, mocker): m = mocker.patch('qutebrowser.browser.network.filescheme.os.listdir') m.side_effect = OSError('Error message') html = filescheme.dirbrowser_html('') soup = bs4.BeautifulSoup(html, 'html.parser') print(soup.prettify()) error_msg = soup('p', id='error-message-text')[0].string assert error_msg == 'Error message'
def test_dir(self, tmpdir): url = QUrl.fromLocalFile(str(tmpdir)) req = QNetworkRequest(url) handler = filescheme.FileSchemeHandler(win_id=0) reply = handler.createRequest(None, req, None) # The URL will always use /, even on Windows - so we force this here # too. tmpdir_path = str(tmpdir).replace(os.sep, '/') assert reply.readAll() == filescheme.dirbrowser_html(tmpdir_path)
def test_basic(self): html = filescheme.dirbrowser_html(os.getcwd()) soup = bs4.BeautifulSoup(html, 'html.parser') print(soup.prettify()) container = soup.div assert container['id'] == 'dirbrowserContainer' title_elem = container('div', id='dirbrowserTitle')[0] title_text = title_elem('p', id='dirbrowserTitleText')[0].text assert title_text == 'Browse directory: {}'.format(os.getcwd())
def test_icons(self, monkeypatch): """Make sure icon paths are correct file:// URLs.""" monkeypatch.setattr('qutebrowser.utils.jinja.utils.resource_filename', lambda name: '/test path/foo.svg') html = filescheme.dirbrowser_html(os.getcwd()) soup = bs4.BeautifulSoup(html, 'html.parser') print(soup.prettify()) css = soup.html.head.style.string assert "background-image: url('file:///test%20path/foo.svg');" in css
def parse(path): html = filescheme.dirbrowser_html(path) soup = bs4.BeautifulSoup(html, 'html.parser') print(soup.prettify()) container = soup('div', id='dirbrowserContainer')[0] parent_elem = container('ul', class_='parent') if len(parent_elem) == 0: parent = None else: parent = parent_elem[0].li.a.string folders = [] files = [] for li in container('ul', class_='folders')[0]('li'): item = self.Item(link=li.a['href'], text=str(li.a.string)) folders.append(item) for li in container('ul', class_='files')[0]('li'): item = self.Item(link=li.a['href'], text=str(li.a.string)) files.append(item) return self.Parsed(parent=parent, folders=folders, files=files)