import os import sys from pathlib import Path import pytest from PyQt5 import QtCore from PyQt5.QtWidgets import QCheckBox, QFormLayout def test_autostart(qapp, qtbot): ''' Check if file exists only on Linux, otherwise just check it doesn't crash ''' main = qapp.main_window main.tabWidget.setCurrentIndex(4) tab = main.miscTab def click_autostart(): for x in range(0, tab.checkboxLayout.count()): item = tab.checkboxLayout.itemAt(x, QFormLayout.ItemRole.FieldRole) if not item: continue checkbox = item.widget() checkbox.__class__ = QCheckBox if checkbox.text().startswith("Automatically"): # Have to use pos to click checkbox correctly # https://stackoverflow.com/questions/19418125/pysides-qtest-not-checking-box/24070484#24070484 qtbot.mouseClick(checkbox, QtCore.Qt.LeftButton, pos=QtCore.QPoint(2, int(checkbox.height() / 2))) break click_autostart() if sys.platform == 'linux': autostart_path = Path(os.environ.get( "XDG_CONFIG_HOME", os.path.expanduser("~") + '/.config') + "/autostart") / "vorta.desktop" qtbot.waitUntil(lambda: autostart_path.exists(), **pytest._wait_defaults) with open(autostart_path) as desktop_file: desktop_file_text = desktop_file.read() assert (desktop_file_text.startswith("[Desktop Entry]")) click_autostart() if sys.platform == 'linux': assert not os.path.exists(autostart_path)