From 1b562b3ff4bca341855e0cfee1aaa12615e43b42 Mon Sep 17 00:00:00 2001 From: Ilya Shlyakhter Date: Wed, 13 Feb 2019 12:32:14 -0500 Subject: [PATCH 1/3] illumina.py: fixed small bug where exception was not raised for missing files --- illumina.py | 16 ++++++++++++---- test/unit/test_illumina.py | 4 ++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/illumina.py b/illumina.py index 8041dcbea..616c94642 100755 --- a/illumina.py +++ b/illumina.py @@ -596,13 +596,21 @@ def close(self): self.tempDir = None def get_RunInfo(self): - if self.runinfo is None and os.path.isfile(os.path.join(self.path, 'RunInfo.xml')): - self.runinfo = RunInfo(os.path.join(self.path, 'RunInfo.xml')) + if self.runinfo is None: + runinfo_file = os.path.join(self.path, 'RunInfo.xml') + if os.path.isfile(runinfo_file): + self.runinfo = RunInfo(os.path.join(self.path, 'RunInfo.xml')) + else: + raise RuntimeError('Missing runinfo file: {}'.format(runinfo_file)) return self.runinfo def get_SampleSheet(self, only_lane=None): - if self.samplesheet is None and os.path.isfile(os.path.join(self.path, 'SampleSheet.csv')): - self.samplesheet = SampleSheet(os.path.join(self.path, 'SampleSheet.csv'), only_lane=only_lane) + if self.samplesheet is None: + samplesheet_file = os.path.join(self.path, 'SampleSheet.csv') + if os.path.isfile(samplesheet_file): + self.samplesheet = SampleSheet(os.path.join(self.path, 'SampleSheet.csv'), only_lane=only_lane) + else: + raise RuntimeError('Missing samplesheet file: {}'.format(samplesheet_file)) return self.samplesheet def get_intensities_dir(self): diff --git a/test/unit/test_illumina.py b/test/unit/test_illumina.py index e75be54ca..30e08753c 100644 --- a/test/unit/test_illumina.py +++ b/test/unit/test_illumina.py @@ -192,9 +192,9 @@ def test_tarball_run_info(self): def test_tarball_fail_missing_data(self): inDir = util.file.get_test_input_path(self) with illumina.IlluminaDirectory(os.path.join(inDir, 'bcl-runinfo.tar.gz')) as idir: - self.assertRaises(Exception, idir.get_SampleSheet()) + self.assertRaises(Exception, idir.get_SampleSheet) with illumina.IlluminaDirectory(os.path.join(inDir, 'bcl-samplesheet.tar.gz')) as idir: - self.assertRaises(Exception, idir.get_RunInfo()) + self.assertRaises(Exception, idir.get_RunInfo) class TestDifficultSampleNames(TestCaseWithTmp): From b9b346e09818227c36b8787b888e598359185955 Mon Sep 17 00:00:00 2001 From: Ilya Shlyakhter Date: Wed, 13 Feb 2019 15:53:01 -0500 Subject: [PATCH 2/3] raise a more specific exception --- illumina.py | 4 ++-- util/file.py | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/illumina.py b/illumina.py index 616c94642..71fe4ae7f 100755 --- a/illumina.py +++ b/illumina.py @@ -601,7 +601,7 @@ def get_RunInfo(self): if os.path.isfile(runinfo_file): self.runinfo = RunInfo(os.path.join(self.path, 'RunInfo.xml')) else: - raise RuntimeError('Missing runinfo file: {}'.format(runinfo_file)) + raise util.file.FileNotFoundError('Missing runinfo file: {}'.format(runinfo_file)) return self.runinfo def get_SampleSheet(self, only_lane=None): @@ -610,7 +610,7 @@ def get_SampleSheet(self, only_lane=None): if os.path.isfile(samplesheet_file): self.samplesheet = SampleSheet(os.path.join(self.path, 'SampleSheet.csv'), only_lane=only_lane) else: - raise RuntimeError('Missing samplesheet file: {}'.format(samplesheet_file)) + raise util.file.FileNotFoundError('Missing samplesheet file: {}'.format(samplesheet_file)) return self.samplesheet def get_intensities_dir(self): diff --git a/util/file.py b/util/file.py index 47637e5ee..b099a22e1 100644 --- a/util/file.py +++ b/util/file.py @@ -21,6 +21,7 @@ import csv import inspect import tarfile +import builtins import util.cmd import util.misc @@ -41,6 +42,7 @@ log = logging.getLogger(__name__) +FileNotFoundError = getattr(builtins, 'FileNotFoundError', OSError) class StringNotFoundException(Exception): """When a substring is not found.""" From 53a43aa602cdc3b2a1c96026555ec3a8e1d4d616 Mon Sep 17 00:00:00 2001 From: Ilya Shlyakhter Date: Wed, 13 Feb 2019 16:07:11 -0500 Subject: [PATCH 3/3] use existing util.file.check_paths --- illumina.py | 12 ++++-------- util/file.py | 2 -- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/illumina.py b/illumina.py index 71fe4ae7f..ff1bf5242 100755 --- a/illumina.py +++ b/illumina.py @@ -598,19 +598,15 @@ def close(self): def get_RunInfo(self): if self.runinfo is None: runinfo_file = os.path.join(self.path, 'RunInfo.xml') - if os.path.isfile(runinfo_file): - self.runinfo = RunInfo(os.path.join(self.path, 'RunInfo.xml')) - else: - raise util.file.FileNotFoundError('Missing runinfo file: {}'.format(runinfo_file)) + util.file.check_paths(runinfo_file) + self.runinfo = RunInfo(runinfo_file) return self.runinfo def get_SampleSheet(self, only_lane=None): if self.samplesheet is None: samplesheet_file = os.path.join(self.path, 'SampleSheet.csv') - if os.path.isfile(samplesheet_file): - self.samplesheet = SampleSheet(os.path.join(self.path, 'SampleSheet.csv'), only_lane=only_lane) - else: - raise util.file.FileNotFoundError('Missing samplesheet file: {}'.format(samplesheet_file)) + util.file.check_paths(samplesheet_file) + self.samplesheet = SampleSheet(samplesheet_file, only_lane=only_lane) return self.samplesheet def get_intensities_dir(self): diff --git a/util/file.py b/util/file.py index b099a22e1..47637e5ee 100644 --- a/util/file.py +++ b/util/file.py @@ -21,7 +21,6 @@ import csv import inspect import tarfile -import builtins import util.cmd import util.misc @@ -42,7 +41,6 @@ log = logging.getLogger(__name__) -FileNotFoundError = getattr(builtins, 'FileNotFoundError', OSError) class StringNotFoundException(Exception): """When a substring is not found."""