def test_main(qtbot): widget = MainDialog() widget.show() with qtbot.waitSignal(widget.sig_ready, timeout=10000): pass with qtbot.waitSignal(widget.sig_application_updated, timeout=60000): qtbot.mouseClick(widget.button_update, Qt.LeftButton)
def test_run_tests_using_unittest_and_display_results(qtbot, tmpdir, monkeypatch): """Basic check.""" os.chdir(tmpdir.strpath) testfilename = tmpdir.join('test_foo.py').strpath with open(testfilename, 'w') as f: f.write("import unittest\n" "class MyTest(unittest.TestCase):\n" " def test_ok(self): self.assertEqual(1+1, 2)\n" " def test_fail(self): self.assertEqual(1+1, 3)\n") MockQMessageBox = Mock() monkeypatch.setattr('spyder_unittest.widgets.unittestgui.QMessageBox', MockQMessageBox) widget = UnitTestWidget(None) qtbot.addWidget(widget) config = Config(wdir=tmpdir.strpath, framework='unittest') with qtbot.waitSignal(widget.sig_finished, timeout=10000, raising=True): widget.run_tests(config) MockQMessageBox.assert_not_called() dt = widget.datatree assert dt.topLevelItemCount() == 2 assert dt.topLevelItem(0).data(0, Qt.DisplayRole) == 'FAIL' assert dt.topLevelItem(0).data(1, Qt.DisplayRole) == 'test_fail' assert (dt.topLevelItem(0).data(1, Qt.ToolTipRole) == 'test_foo.MyTest.test_fail') assert dt.topLevelItem(0).data(2, Qt.DisplayRole) == '' assert dt.topLevelItem(1).data(0, Qt.DisplayRole) == 'ok' assert dt.topLevelItem(1).data(1, Qt.DisplayRole) == 'test_ok' assert (dt.topLevelItem(1).data(1, Qt.ToolTipRole) == 'test_foo.MyTest.test_ok') assert dt.topLevelItem(1).data(2, Qt.DisplayRole) == ''
def test_run_tests_and_display_results(qtbot, tmpdir, monkeypatch, framework): """Basic check.""" os.chdir(tmpdir.strpath) testfilename = tmpdir.join('test_foo.py').strpath with open(testfilename, 'w') as f: f.write("def test_ok(): assert 1+1 == 2\n" "def test_fail(): assert 1+1 == 3\n") MockQMessageBox = Mock() monkeypatch.setattr('spyder_unittest.widgets.unittestgui.QMessageBox', MockQMessageBox) widget = UnitTestWidget(None) qtbot.addWidget(widget) config = Config(wdir=tmpdir.strpath, framework=framework) with qtbot.waitSignal(widget.sig_finished, timeout=10000, raising=True): widget.run_tests(config) MockQMessageBox.assert_not_called() dt = widget.datatree itemcount = dt.topLevelItemCount() assert itemcount == 2 assert dt.topLevelItem(0).data(0, Qt.DisplayRole) == 'ok' assert dt.topLevelItem(0).data(1, Qt.DisplayRole) == 'test_ok' assert dt.topLevelItem(0).data(1, Qt.ToolTipRole) == 'test_foo.test_ok' assert dt.topLevelItem(0).data(2, Qt.DisplayRole) == '' assert dt.topLevelItem(1).data(0, Qt.DisplayRole) == 'failure' assert dt.topLevelItem(1).data(1, Qt.DisplayRole) == 'test_fail' assert dt.topLevelItem(1).data(1, Qt.ToolTipRole) == 'test_foo.test_fail'
def test_register_link(botlogin): qtbot, widget = botlogin with qtbot.waitSignal(signal=widget.sig_url_clicked, timeout=5000, raising=True): qtbot.mouseClick(widget.button_register, Qt.LeftButton) assert widget.isVisible()
def test_basic_processing(qtbot): print('basic') testdata = os.path.join(os.path.dirname(__file__), 'testdata', 'sample') n_testfiles = len(os.listdir(testdata)) otfdir = os.path.join(os.path.dirname(__file__), 'testdata', 'otfs') APP = QtWidgets.QApplication([]) mainGUI = main_GUI() mainGUI.loadProgramDefaults() mainGUI.setOTFdirPath(otfdir) assert mainGUI.listbox.rowCount() == 0 mainGUI.listbox.addPath(testdata) assert mainGUI.listbox.rowCount() == 1 with qtbot.waitSignal(mainGUI.sig_processing_done, timeout=12000): qtbot.mouseClick(mainGUI.processButton, QtCore.Qt.LeftButton) deconFolder = os.path.join(testdata, 'GPUdecon') MIPfolder = os.path.join(deconFolder, 'MIPs') assert os.path.isdir(deconFolder) assert os.path.isdir(MIPfolder) assert len(os.listdir(deconFolder)) == 3 assert len(os.listdir(MIPfolder)) == 1 LLSdir(testdata).reduce_to_raw(keepmip=False) assert not os.path.isdir(deconFolder) assert not os.path.isdir(MIPfolder) assert len(os.listdir(testdata)) == n_testfiles mainGUI.quitProgram(save=False)
def test_arcroi(qtbot): import pyqtgraph as pg import numpy as np imageview = pg.ImageView() data = np.random.random((10, 10)) imageview.setImage(data) roi = ArcROI(center=(5, 5), radius=5) imageview.view.addItem(roi) imageview.show() # qtbot.addWidget(imageview) assert np.sum(roi.getArrayRegion(np.ones((10, 10)))) == 16 qtbot.waitSignal(imageview.destroyed, timeout=None)
def test_bundled_content(self, qtbot, tmpfile): # analysis:ignore widget = CommunityTab(saved_content_path=tmpfile) widget.showMaximized() qtbot.addWidget(widget) with qtbot.waitSignal(widget.sig_ready, timeout=10000): widget.load_content() assert widget.list.count() > 0
def test_username_invalid(botlogin): qtbot, widget = botlogin qtbot.keyClicks(widget.text_username, 'hopefully-not-an-existing-user') qtbot.keyClicks(widget.text_password, NAVIGATOR_TEST_PASSWORD) with qtbot.waitSignal(signal=widget.sig_authentication_failed, timeout=5000, raising=True): qtbot.mouseClick(widget.button_login, Qt.LeftButton) assert widget.isVisible()
def test_username_valid_password_invalid(botlogin): qtbot, widget = botlogin qtbot.keyClicks(widget.text_username, 'goanpeca') qtbot.keyClicks(widget.text_password, 'wrongpassword') with qtbot.waitSignal(signal=widget.sig_authentication_failed, timeout=5000, raising=True): qtbot.mouseClick(widget.button_login, Qt.LeftButton) assert widget.isVisible()
def test_username_valid_password_valid(botlogin): qtbot, widget = botlogin qtbot.keyClicks(widget.text_username, NAVIGATOR_TEST_USERNAME) qtbot.keyClicks(widget.text_password, NAVIGATOR_TEST_PASSWORD) with qtbot.waitSignal(signal=widget.sig_authentication_succeeded, timeout=5000, raising=True): qtbot.mouseClick(widget.button_login, Qt.LeftButton) assert not widget.isVisible()
def test_case_sensitive_search(qtbot): find_in_files = setup_findinfiles(qtbot) find_in_files.set_search_text('HaM') find_in_files.find_options.set_directory(osp.join(LOCATION, "data")) find_in_files.find() blocker = qtbot.waitSignal(find_in_files.sig_finished) blocker.wait() matches = process_search_results(find_in_files.result_browser.data) print(matches) assert matches == {'ham.txt': [(9, 0)]}
def test_case_unsensitive_search(qtbot): find_in_files = setup_findinfiles(qtbot, case_sensitive=False) find_in_files.set_search_text('ham') find_in_files.find_options.set_directory(osp.join(LOCATION, "data")) find_in_files.find() blocker = qtbot.waitSignal(find_in_files.sig_finished) blocker.wait() matches = process_search_results(find_in_files.result_browser.data) print(matches) assert expected_case_unsensitive_results() == matches
def test_case_sensitive_search(qtbot): find_in_files = setup_findinfiles(qtbot) find_in_files.set_search_text('HaM') find_in_files.find_options.set_directory(osp.join(LOCATION, "data")) find_in_files.find() blocker = qtbot.waitSignal(find_in_files.sig_finished) blocker.wait() matches = process_search_results(find_in_files.result_browser.data) print(matches) assert matches == {'ham.txt': [(9, 0)]}
def test_case_unsensitive_search(qtbot): find_in_files = setup_findinfiles(qtbot, case_sensitive=False) find_in_files.set_search_text('ham') find_in_files.find_options.set_directory(osp.join(LOCATION, "data")) find_in_files.find() blocker = qtbot.waitSignal(find_in_files.sig_finished) blocker.wait() matches = process_search_results(find_in_files.result_browser.data) print(matches) assert expected_case_unsensitive_results() == matches
def test_threads_iterator(qtbot): from xicam.core import threads results = [] def callback(a): results.append(a) def testiterator(): for i in range(3): yield i def check(): assert sum(results) == 3 t = threads.QThreadFutureIterator(testiterator, callback_slot=callback, finished_slot=check) t.start() qtbot.waitSignal(t.sigFinished)
def test_exclude_extension(qtbot): find_in_files = setup_findinfiles(qtbot, exclude="\.py$") find_in_files.set_search_text("spam") find_in_files.find_options.set_directory(osp.join(LOCATION, "data")) find_in_files.find() blocker = qtbot.waitSignal(find_in_files.sig_finished) blocker.wait() matches = process_search_results(find_in_files.result_browser.data) files_filtered = True for file in matches: filename, ext = osp.splitext(file) if ext == '.py': files_filtered = False break assert files_filtered
def test_exclude_extension(qtbot): find_in_files = setup_findinfiles(qtbot, exclude="\.py$") find_in_files.set_search_text("spam") find_in_files.find_options.set_directory(osp.join(LOCATION, "data")) find_in_files.find() blocker = qtbot.waitSignal(find_in_files.sig_finished) blocker.wait() matches = process_search_results(find_in_files.result_browser.data) files_filtered = True for file in matches: filename, ext = osp.splitext(file) if ext == '.py': files_filtered = False break assert files_filtered
def test_find_in_files_search(qtbot): """ Test the find in files utility by searching a string located on a set of known files. The results of the test should be equal to the expected search result values. """ find_in_files = setup_findinfiles(qtbot) find_in_files.set_search_text("spam") find_in_files.find_options.set_directory(osp.join(LOCATION, "data")) find_in_files.find() blocker = qtbot.waitSignal(find_in_files.sig_finished) blocker.wait() matches = process_search_results(find_in_files.result_browser.data) assert expected_results() == matches
def test_find_in_files_search(qtbot): """ Test the find in files utility by searching a string located on a set of known files. The results of the test should be equal to the expected search result values. """ find_in_files = setup_findinfiles(qtbot) find_in_files.set_search_text("spam") find_in_files.find_options.set_directory(osp.join(LOCATION, "data")) find_in_files.find() blocker = qtbot.waitSignal(find_in_files.sig_finished) blocker.wait() matches = process_search_results(find_in_files.result_browser.data) assert expected_results() == matches
def test_profile_and_display_results(qtbot, tmpdir, monkeypatch): """ Run profiler on simple script and check that results are okay. This is a fairly simple integration test which checks that the plugin works on a basic level. """ os.chdir(tmpdir.strpath) testfilename = tmpdir.join('test_foo.py').strpath with open(testfilename, 'w') as f: f.write(TEST_SCRIPT) MockQMessageBox = Mock() monkeypatch.setattr( 'spyder_memory_profiler.widgets.memoryprofiler.QMessageBox', MockQMessageBox) widget = MemoryProfilerWidget(None) qtbot.addWidget(widget) with qtbot.waitSignal(widget.sig_finished, timeout=10000, raising=True): widget.analyze(testfilename) MockQMessageBox.assert_not_called() dt = widget.datatree assert dt.topLevelItemCount() == 1 # number of functions profiled top = dt.topLevelItem(0) assert top.data(0, Qt.DisplayRole).startswith('foo ') assert top.childCount() == 6 for i in range(6): assert top.child(i).data(0, Qt.DisplayRole) == i + 1 # line no # Column 2 has increment (in MiB); displayed as 'xxx MiB' so need to strip # last 4 characters. To make the test robust, we only check the sign assert float(top.child(2).data(2, Qt.DisplayRole)[:-4]) > 0 assert float(top.child(3).data(2, Qt.DisplayRole)[:-4]) > 0 # Test in next line is broken because of bug in memory_profiler # https://github.com/pythonprofilers/memory_profiler/issues/226 # assert float(top.child(4).data(2, Qt.DisplayRole)[:-4]) < 0 assert float(top.child(5).data(2, Qt.DisplayRole)[:-4]) == 0
def test_profile_and_display_results(qtbot, tmpdir, monkeypatch): """Run profiler on simple script and check that results are okay.""" os.chdir(tmpdir.strpath) testfilename = tmpdir.join('test_foo.py').strpath with open(testfilename, 'w') as f: f.write(TEST_SCRIPT) MockQMessageBox = Mock() monkeypatch.setattr( 'spyder_line_profiler.widgets.lineprofiler.QMessageBox', MockQMessageBox) widget = LineProfilerWidget(None) qtbot.addWidget(widget) with qtbot.waitSignal(widget.sig_finished, timeout=10000, raising=True): widget.analyze(testfilename) MockQMessageBox.assert_not_called() dt = widget.datatree assert dt.topLevelItemCount() == 1 # number of functions profiled top = dt.topLevelItem(0) assert top.data(0, Qt.DisplayRole).startswith('foo ') assert top.childCount() == 6 for i in range(6): assert top.child(i).data(0, Qt.DisplayRole) == i + 2 # line no assert top.child(2).data(1, Qt.DisplayRole) == '1' # hits assert top.child(3).data(1, Qt.DisplayRole) == '1' assert top.child(4).data(1, Qt.DisplayRole) == '101' assert top.child(5).data(1, Qt.DisplayRole) == '100' assert float(top.child(2).data(2, Qt.DisplayRole)) >= 900 # time (ms) assert float(top.child(2).data(2, Qt.DisplayRole)) <= 1200 assert float(top.child(3).data(2, Qt.DisplayRole)) <= 100 assert float(top.child(4).data(2, Qt.DisplayRole)) <= 100 assert float(top.child(5).data(2, Qt.DisplayRole)) <= 100