Don't write to user datadir in test_qt_javascript.

This was more complicated than the other data/config/cachedir test
fixes, as QtWebEngine was accessing the datadir directly (and bypassing
standdarddir.data).

This means the tmpdir_data stub is not enough, we need to set
XDG_DATA_HOME to redirect access.
This commit is contained in:
Ryan Roden-Corrent 2016-07-14 20:25:42 -04:00
parent d9b546701e
commit f589e44700

View File

@ -21,6 +21,7 @@
import pytest
import os
from PyQt5.QtCore import QObject, pyqtSignal
from PyQt5.QtWebKit import QWebSettings
@ -65,12 +66,17 @@ def test_element_js_webkit(webview, js_enabled, expected):
@pytest.mark.parametrize('js_enabled, expected', [(True, 2.0), (False, 2.0)])
def test_simple_js_webengine(qtbot, webengineview, js_enabled, expected):
def test_simple_js_webengine(qtbot, webengineview, js_enabled, expected,
data_tmpdir):
"""With QtWebEngine, runJavaScript works even when JS is off."""
# pylint: disable=no-name-in-module,useless-suppression
# If we get there (because of the webengineview fixture) we can be certain
# QtWebEngine is available
from PyQt5.QtWebEngineWidgets import QWebEngineSettings
# runJavaScript will write to the data directory. As the path is determined
# by Qt and bypasses standarddir.data(), the data_tmpdir fixture is not
# enough -- we need to set XDG_DATA_HOME as well
os.putenv('XDG_DATA_HOME', str(data_tmpdir))
webengineview.settings().setAttribute(QWebEngineSettings.JavascriptEnabled,
js_enabled)