def test_valid_config(): config = snaketools.SequanaConfig(None) s = snaketools.Module("quality_control") config = snaketools.SequanaConfig(s.config) from easydev import TempFile with TempFile() as fh: config.save(fh.name)
def test_copy_requirements(): # We need 4 cases: # 1- http # 2- a sequana file (phix) # 3- an existing file elsewhere (here just a temporary file) # 4- an existing file in the same directory as the target dir from easydev import TempFile fh = tempfile.TemporaryDirectory() targetdir = fh.name # Case 3: a temporary file temprequire = TempFile() # Case 4: a local file (copy of the temp file) # TODO #localfile = temprequire.name.split(os.sep)[-1] #shutil.copy(temprequire.name, targetdir) cfg = snaketools.SequanaConfig() cfg.config.requirements = ["phiX174.fa", temprequire.name, #localfile, "https://raw.githubusercontent.com/sequana/sequana/master/README.rst"] cfg._update_yaml() cfg.copy_requirements(target=fh.name) # error cfg.config.requirements = ['dummy'] try: cfg.copy_requirements(target=fh.name) assert False except: assert True
def test_sequana_config(): s = snaketools.Module("compressor") config = snaketools.SequanaConfig(s.config) assert config.config.get("compressor")["source"] == "fastq.gz" assert config.config.get("kraken:dummy") == None # --------------------------------- tests different constructors config = snaketools.SequanaConfig() config = snaketools.SequanaConfig({"test": 1}) assert config.config.test == 1 # with a dictionary config = snaketools.SequanaConfig(config.config) # with a sequanaConfig instance config = snaketools.SequanaConfig(config) # with a non-yaml file try: json = sequana_data('test_summary_fastq_stats.json') config = snaketools.SequanaConfig(json) assert False except: assert True try: config = snaketools.SequanaConfig("dummy_dummy") assert False except: assert True # Test an exception s = snaketools.Module("compressor") config = snaketools.SequanaConfig(s.config) config._recursive_update(config._yaml_code, {"input_directory_dummy": "test"}) #config.check_config_with_schema(s.schema_config) # loop over all pipelines, read the config, save it and check the content is # identical. This requires to remove the templates. We want to make sure the # empty strings are kept and that "no value" are kept as well # # field1: "" # field2: # # is unchanged from easydev import TempFile output = TempFile(suffix=".yaml") for pipeline in snaketools.pipeline_names: config_filename = Module(pipeline)._get_config() cfg1 = SequanaConfig(config_filename) cfg1.cleanup() # remove templates and strip strings cfg1.save(output.name) cfg2 = SequanaConfig(output.name) assert cfg2._yaml_code == cfg1._yaml_code cfg2._update_config() assert cfg1.config == cfg2.config output.delete()