From 69ef235bee0b3cc0f2581f7b7ba8c8646ee635e6 Mon Sep 17 00:00:00 2001 From: Mark Diekhans Date: Wed, 9 Aug 2017 22:23:15 -0400 Subject: [PATCH] include file name in error when open fails, include range in error when query fails --- src/tabixmodule.c | 12 ++++-------- test/test.py | 11 ++++++++++- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/tabixmodule.c b/src/tabixmodule.c index d071e57..b6eeab0 100644 --- a/src/tabixmodule.c +++ b/src/tabixmodule.c @@ -200,8 +200,7 @@ tabix_new(PyTypeObject *type, PyObject *args, PyObject *kwds) tb = ti_open(fn, fnidx); if (tb == NULL) { - PyErr_SetString(TabixError, "Can't open the index file."); - return NULL; + return PyErr_Format(TabixError, "Can't open index file: %s", fn); } self = (TabixObject *)type->tp_alloc(type, 0); @@ -234,8 +233,7 @@ tabix_query(TabixObject *self, PyObject *args) result = ti_query(self->tb, name, begin - 1, end); if (result == NULL) { - PyErr_SetString(TabixError, "query failed"); - return NULL; + return PyErr_Format(TabixError, "query failed: %s:%d-%d", name, begin, end); } return tabixiter_create(self, result); @@ -252,8 +250,7 @@ tabix_queryi(TabixObject *self, PyObject *args) result = ti_queryi(self->tb, tid, begin - 1, end); if (result == NULL) { - PyErr_SetString(TabixError, "query failed"); - return NULL; + return PyErr_Format(TabixError, "query failed: tid: %d range: %d-%d", tid, begin, end); } return tabixiter_create(self, result); @@ -270,8 +267,7 @@ tabix_querys(TabixObject *self, PyObject *args) result = ti_querys(self->tb, reg); if (result == NULL) { - PyErr_SetString(TabixError, "query failed"); - return NULL; + return PyErr_Format(TabixError, "query failed: %s", reg); } return tabixiter_create(self, result); diff --git a/test/test.py b/test/test.py index b50595e..42b5b6c 100644 --- a/test/test.py +++ b/test/test.py @@ -83,6 +83,15 @@ def test_querys(self): tb_result = [ [x[0], x[3], x[4]] for x in it ] self.assertEqual(self.result, tb_result) + def test_query_bad_seq(self): + with self.assertRaisesRegexp(tabix.TabixError, "^query failed: fred:{}-{}$".format(self.start, self.end)): + it = self.tb.query("fred", self.start, self.end) + + def test_local_bad_file(self): + file1 = "this_file_does_not_really_exist" + with self.assertRaisesRegexp(tabix.TabixError, "^Can't open index file: {}$".format(file1)): + tabix.open(file1) + def test_remote_file(self): file1 = "ftp://ftp.1000genomes.ebi.ac.uk/vol1/ftp/release/20100804/" \ "ALL.2of4intersection.20100804.genotypes.vcf.gz" @@ -90,7 +99,7 @@ def test_remote_file(self): def test_remote_file_bad_url(self): file1 = "ftp://badurl" - with self.assertRaises(tabix.TabixError): + with self.assertRaisesRegexp(tabix.TabixError, "^Can't open index file: {}$".format(file1)): tabix.open(file1)