def test_settings(qtbot): widget = sequana_gui.SequanaGUI(ipython=False) qtbot.addWidget(widget) widget.read_settings() #widget.menuHelp() widget.close()
def test_standalone_generic_with_noconfig_2(qtbot): """mimics: sequanix -s path_to_snakefile followed by selection of a working directory in the GUI + forceall + run """ # From the command line argument snakefile = sequana_data("test_gui_generic_snakefile_noconfig.rules") wkdir = TemporaryDirectory() args = Namespace(snakefile=snakefile) widget = sequana_gui.SequanaGUI(ipython=False, user_options=args) qtbot.addWidget(widget) assert widget.mode == "generic" assert widget.generic_factory.is_runnable() is False assert widget.ui.run_btn.isEnabled() == False widget.generic_factory._directory_browser.set_filenames(wkdir.name) widget.force = True widget.save_project() # check that it worked: widget.snakemake_dialog.ui.snakemake_options_general_forceall_value.setChecked( True) widget.click_run() time.sleep(2) widget.click_stop() time.sleep(4) widget.show_dag() time.sleep(4) widget.diag.close() # in the GUI, we see when it stops. Here, we need to wait a few seconds time.sleep(5)
def test_others(qtbot, mock): widget = sequana_gui.SequanaGUI(ipython=True) qtbot.addWidget(widget) # level and pipeline attribute widget.set_level() assert widget.sequana_factory.pipeline is None # The repr functions widget.sequana_factory.__repr__() widget.generic_factory.__repr__() # menuQuit import sequana.gui.messages mock.patch.object(sequana.gui.messages.WarningMessage, "exec_", return_value=QW.QMessageBox.Yes) widget.menuQuit() # menu Help and About import sequana.gui.about mock.patch.object(sequana.gui.about.About, "exec_", return_value=QW.QMessageBox.Ok) widget.menuAbout() mock.patch.object(sequana.gui.help.HelpDialog, "exec_", return_value=QW.QMessageBox.Ok) widget.menuHelp()
def test_standalone_generic(qtbot, tmpdir, module): wkdir = TemporaryDirectory() # Standalone for generic case given a wkdir and snakefile (no config) args = Namespace(wkdir=wkdir.name, snakefile=module.snakefile) widget = sequana_gui.SequanaGUI(ipython=False, user_options=args) qtbot.addWidget(widget) assert widget.mode == "generic"
def test_progress_bar(qtbot): widget = sequana_gui.SequanaGUI(ipython=False) qtbot.addWidget(widget) widget.click_run() # defines the regex widget.update_progress_bar("0 of 10 steps ") widget.update_progress_bar("10 of 10 steps ") widget.start_progress() widget.end_run()
def test_open_report(qtbot, tmpdir, module): p = tmpdir.mkdir("sub").join('test.html') p.write("hello") args = Namespace(wkdir=str(p.dirpath()), snakefile=module.snakefile) # Open a valid HTML file widget = sequana_gui.SequanaGUI(ipython=False, user_options=args) qtbot.addWidget(widget) widget.preferences_dialog.ui.preferences_options_general_htmlpage_value.setText( "test.html") widget.open_report() assert widget.browser.isVisible() widget.close() # a wrong filename widget.preferences_dialog.ui.preferences_options_general_htmlpage_value.setText( "dummy.html") widget.open_report() assert widget.browser.isVisible() is False # Now, we unset the working dir and this should just return without openning # any report widget.sequana_factory._directory_browser.set_empty_path() widget.generic_factory._directory_browser.set_empty_path() assert widget.working_dir is None widget.open_report() assert widget.browser.isVisible() is False # try using firefox widget = sequana_gui.SequanaGUI(ipython=False, user_options=args) qtbot.addWidget(widget) widget.preferences_dialog.ui.preferences_options_general_htmlpage_value.setText( "test.html") widget.preferences_dialog.ui.preferences_options_general_browser_value.setCurrentText( "firefox") def simple_execute(cmd): pass @patch("easydev.execute", side_effects=simple_execute) def runthis(qtbot): widget.open_report() runthis()
def test_generic_copy_nodir(qtbot): # _copy does not work if directory not set snakefile = sequana_data("test_gui_generic_snakefile_noconfig.rules") configfile = sequana_data("test_gui_generic_config.yaml") args = Namespace(snakefile=snakefile, configfile=configfile) widget = sequana_gui.SequanaGUI(ipython=False, user_options=args) qtbot.addWidget(widget) widget.generic_factory._copy_configfile() widget.generic_factory._copy_snakefile()
def test_standalone_generic_with_config(qtbot, tmpdir, module): # Standalone for generic case given a wkdir and snakefile (no config) wkdir = TemporaryDirectory() args = Namespace(wkdir=wkdir.name, snakefile=module.snakefile, configfile=module.config) widget = sequana_gui.SequanaGUI(ipython=False, user_options=args) qtbot.addWidget(widget) assert widget.mode == "generic" assert widget.generic_factory.is_runnable() == True widget.save_project() widget.unlock_snakemake() with TempFile() as fh: widget.report_issues(fh.name)
def test_standalone_generic_with_config(qtbot, tmpdir): # Standalone for generic case given a wkdir and snakefile wkdir = TemporaryDirectory() args = Namespace(wkdir=wkdir.name, snakefile=sequana_data("test_generic.rules"), configfile=sequana_data("test_generic.yaml")) widget = sequana_gui.SequanaGUI(ipython=False, user_options=args) qtbot.addWidget(widget) assert widget.mode == "generic" assert widget.generic_factory.is_runnable() == True widget.save_project() # read back. yaml = SequanaConfig(wkdir.name + "/test_generic.yaml").config assert yaml['test']["mylist"] == [1, 2, 3]
def test_import_config_from_menu(qtbot): widget = sequana_gui.SequanaGUI(ipython=True) qtbot.addWidget(widget) assert widget.sequana_factory._imported_config is None # while an existing config file should # First, we simulate selection of quality control pipeline index = widget.sequana_factory._choice_button.findText("quality_control") widget.sequana_factory._choice_button.setCurrentIndex(index) widget.ui.tabs_pipeline.setCurrentIndex(0) # set sequana pipeline mode widget._update_sequana("quality_control") qc = Module("quality_control") widget.menuImportConfig(qc.config) assert widget.sequana_factory._imported_config is not None widget.close()
def test_user_interface_sequana(qtbot): widget = sequana_gui.SequanaGUI(ipython=False) qtbot.addWidget(widget) assert widget.form.count() == 0 # simulate selection of quality control pipeline index = widget.sequana_factory._choice_button.findText("quality_control") widget.sequana_factory._choice_button.setCurrentIndex(index) widget.ui.tabs_pipeline.setCurrentIndex(0) # set sequana pipeline mode widget._update_sequana("quality_control") # we should have the focus on the config file now assert widget.ui.tabs.currentIndex() == 2 assert widget.form.count() == 5 widget.clear_form() assert widget.form.count() == 0 # select no pipeline widget._update_sequana('Select a Sequana pipeline') assert widget.form.count() == 0
def _test_standalone_sequana(qtbot, tmpdir): wkdir = TemporaryDirectory() inputdir = os.path.realpath( sequana_data("Hm2_GTGAAA_L005_R1_001.fastq.gz")).rsplit(os.sep, 1)[0] # Standalone for sequana given a wkdir and pipeline and input_dir args = Namespace(pipeline="quality_control", wkdir=wkdir.name, input_directory=inputdir) widget = sequana_gui.SequanaGUI(ipython=False, user_options=args) qtbot.addWidget(widget) assert widget.mode == "sequana" widget.force = True widget.save_project() widget.click_run() count = 0 while widget.process.state() and count < 5: time.sleep(0.5) count += 0.5 widget.click_stop() time.sleep(1)