Пример #1
0
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)
Пример #2
0
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) == ''
Пример #3
0
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()
Пример #5
0
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)
Пример #6
0
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)
Пример #7
0
    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()
Пример #10
0
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()
Пример #11
0
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)]}
Пример #12
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
Пример #13
0
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)]}
Пример #14
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
Пример #15
0
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)
Пример #16
0
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
Пример #17
0
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
Пример #18
0
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
Пример #19
0
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
Пример #20
0
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