From da70d3c3811b30ed292e9a73eae63817002a04f1 Mon Sep 17 00:00:00 2001 From: Olivier Mangin Date: Wed, 26 Sep 2018 22:44:48 -0700 Subject: [PATCH] Handles listing papers with documents without extension. --- pubs/pretty.py | 7 +++++-- tests/test_usecase.py | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/pubs/pretty.py b/pubs/pretty.py index 226a11e..645ef02 100644 --- a/pubs/pretty.py +++ b/pubs/pretty.py @@ -67,8 +67,11 @@ def paper_oneliner(p, citekey_only=False): bibdesc = bib_oneliner(p.bibdata) doc_str = '' if p.docpath is not None: - doc_str = color.dye_out(' [{}]'.format(os.path.splitext(p.docpath)[1][1:]), - 'tag') + doc_extension = os.path.splitext(p.docpath)[1] + doc_str = color.dye_out( + ' [{}]'.format(doc_extension[1:] if len(doc_extension) > 1 + else 'NOEXT'), + 'tag') tags = '' if len(p.tags) == 0 else '| {}'.format( ','.join(color.dye_out(t, 'tag') for t in sorted(p.tags))) return '[{citekey}] {descr}{doc} {tags}'.format( diff --git a/tests/test_usecase.py b/tests/test_usecase.py index 3654985..a1ab146 100644 --- a/tests/test_usecase.py +++ b/tests/test_usecase.py @@ -1001,6 +1001,24 @@ class TestUsecase(DataCommandTestCase): self.assertEqual(lines[1], 'Total papers: 4, 1 (25%) have a document attached') self.assertEqual(lines[2], 'Total tags: 3, 2 (50%) of papers have at least one tag') + def test_add_no_extension(self): + # This tests checks that a paper which document has no + # extension does not raise issues when listing. This test might + # be removed if decided to prevent such documents. It would then need + # to be replaced by a check that this is prevented. + self.fs.add_real_file(os.path.join(self.rootpath, 'data', 'pagerank.pdf'), + target_path=os.path.join('data', 'no-ext')) + correct = ['Initializing pubs in /pubs\n', + 'added to pubs:\n[Page99] Page, Lawrence et al. "The PageRank Citation Ranking: Bringing Order to the Web." (1999) \n' + 'data/no-ext was copied to the pubs repository.\n', + '[Page99] Page, Lawrence et al. "The PageRank Citation Ranking: Bringing Order to the Web." (1999) [NOEXT] \n', + ] + cmds = ['pubs init -p /pubs', + 'pubs add -d data/no-ext data/pagerank.bib', + 'pubs list', + ] + self.assertEqual(correct, self.execute_cmds(cmds, capture_output=True)) + @ddt.ddt class TestCache(DataCommandTestCase):