def test_model_data_src_is_supplied___symlink_to_output_dir_static_is_created(self): with TemporaryDirectory() as run_dir, TemporaryDirectory() as oasis_src_fp, TemporaryDirectory() as model_data_fp, NamedTemporaryFile() as analysis_settings_fp: Path(os.path.join(model_data_fp, 'linked_file')).touch() prepare_run_directory(run_dir, oasis_src_fp, model_data_fp, analysis_settings_fp.name) self.assertTrue(os.path.exists(os.path.join(run_dir, 'static', 'linked_file')))
def test_inputs_archive_with_subfolder_is_supplied_no_ri___archive_is_extracted_into_inputs( self): with TemporaryDirectory() as run_dir, TemporaryDirectory( ) as oasis_src_fp, TemporaryDirectory() as model_data_fp: analysis_settings_fp = os.path.join(oasis_src_fp, "settings.json") Path(analysis_settings_fp).touch() tar_path = os.path.join(oasis_src_fp, 'archive.tar') with tarfile.open(tar_path, 'w') as tar: archived_file_path = Path(oasis_src_fp, 'archived_file') archived_file_path.touch() tar.add(str(archived_file_path), arcname='archived_file') os.remove(str(archived_file_path)) os.mkdir(os.path.join(oasis_src_fp, "sub1")) archived_file_path = Path(oasis_src_fp, "sub1", 'archived_file') archived_file_path.touch() tar.add(str(archived_file_path), arcname='sub1{}archived_file'.format(os.sep)) shutil.rmtree(os.path.join(oasis_src_fp, "sub1")) prepare_run_directory(run_dir, oasis_src_fp, model_data_fp, analysis_settings_fp, inputs_archive=tar_path) self.assertTrue(Path(run_dir, 'input', 'archived_file').exists()) self.assertTrue( Path(run_dir, 'input', 'sub1', 'archived_file').exists())
def test_input_directory_is_supplied___input_files_are_copied_to_input_csv(self): with TemporaryDirectory() as run_dir, TemporaryDirectory() as oasis_src_fp, TemporaryDirectory() as model_data_fp, NamedTemporaryFile() as analysis_settings_fp: Path(os.path.join(oasis_src_fp, 'a_file.csv')).touch() prepare_run_directory(run_dir, oasis_src_fp, model_data_fp, analysis_settings_fp.name) self.assertTrue(os.path.exists(os.path.join(run_dir, 'input', 'csv', 'a_file.csv')))
def test_model_data_src_is_supplied_sym_link_raises___input_is_copied_from_static(self): with TemporaryDirectory() as run_dir, TemporaryDirectory() as oasis_src_fp, TemporaryDirectory() as model_data_fp, NamedTemporaryFile() as analysis_settings_fp: #import ipdb; ipdb.set_trace() Path(os.path.join(model_data_fp, 'linked_file')).touch() with patch('os.symlink', Mock(side_effect=OSError())): prepare_run_directory(run_dir, oasis_src_fp, model_data_fp, analysis_settings_fp.name) self.assertTrue(os.path.exists(os.path.join(run_dir, 'static', 'linked_file')))
def test_analysis_settings_file_is_supplied___file_is_copied_into_run_dir(self): with TemporaryDirectory() as run_dir, TemporaryDirectory() as oasis_src_fp, TemporaryDirectory() as model_data_fp, NamedTemporaryFile('w') as analysis_settings_fp: analysis_settings_fp.write('{"analysis_settings": "analysis_settings"}') analysis_settings_fp.flush() prepare_run_directory(run_dir, oasis_src_fp, model_data_fp, analysis_settings_fp.name) with io_open(os.path.join(run_dir, 'analysis_settings.json'), encoding='utf-8') as expected_analysis_settings: self.assertEqual('{"analysis_settings": "analysis_settings"}', expected_analysis_settings.read())
def test_directory_is_empty___child_directories_are_created(self): with TemporaryDirectory() as run_dir, TemporaryDirectory() as oasis_src_fp, TemporaryDirectory() as model_data_fp, NamedTemporaryFile() as analysis_settings_fp: prepare_run_directory(run_dir, oasis_src_fp, model_data_fp, analysis_settings_fp.name) #self.assertTrue(os.path.exists(os.path.join(d, 'fifo'))) self.assertTrue(os.path.exists(os.path.join(run_dir, 'input'))) self.assertTrue(os.path.exists(os.path.join(run_dir, 'input', 'csv'))) self.assertTrue(os.path.exists(os.path.join(run_dir, 'output'))) self.assertTrue(os.path.exists(os.path.join(run_dir, 'static'))) self.assertTrue(os.path.exists(os.path.join(run_dir, 'work')))
def test_directory_is_empty___child_directories_are_created(self): with TemporaryDirectory() as run_dir, TemporaryDirectory() as oasis_src_fp, TemporaryDirectory() as model_data_fp: analysis_settings_fp = os.path.join(oasis_src_fp, "settings.json") Path(analysis_settings_fp).touch() prepare_run_directory(run_dir, oasis_src_fp, model_data_fp, analysis_settings_fp) self.assertTrue(os.path.exists(os.path.join(run_dir, 'input'))) self.assertTrue(os.path.exists(os.path.join(run_dir, 'output'))) self.assertTrue(os.path.exists(os.path.join(run_dir, 'static'))) self.assertTrue(os.path.exists(os.path.join(run_dir, 'work')))
def test_model_data_src_is_supplied_sym_link_raises_exception(self): with TemporaryDirectory() as run_dir, TemporaryDirectory( ) as oasis_src_fp, TemporaryDirectory() as model_data_fp: analysis_settings_fp = os.path.join(oasis_src_fp, "settings.json") Path(analysis_settings_fp).touch() Path(os.path.join(model_data_fp, 'linked_file')).touch() with self.assertRaises(OasisException): with patch('os.symlink', Mock(side_effect=OSError())): prepare_run_directory(run_dir, oasis_src_fp, model_data_fp, analysis_settings_fp)
def test_inputs_archive_is_supplied_with_ri___archive_is_extracted_into_run_dir(self): with TemporaryDirectory() as run_dir, TemporaryDirectory() as oasis_src_fp, TemporaryDirectory() as model_data_fp, NamedTemporaryFile() as analysis_settings_fp: tar_path = os.path.join(oasis_src_fp, 'archive.tar') with tarfile.open(tar_path, 'w', encoding='utf-8') as tar: archived_file_path = Path(oasis_src_fp, 'archived_file') archived_file_path.touch() tar.add(str(archived_file_path), arcname='archived_file') prepare_run_directory(run_dir, oasis_src_fp, model_data_fp, analysis_settings_fp.name, inputs_archive=tar_path, ri=True) self.assertTrue(Path(run_dir, 'archived_file').exists())