Some unit test

This commit is contained in:
Phyks 2014-05-26 16:50:58 +02:00
parent 5a8ea0750f
commit 479aea4101
6 changed files with 137 additions and 2 deletions

3
.gitignore vendored
View File

@ -7,3 +7,6 @@
params.py
translation-server
*.pdf
*.bib
*.djvu

2
bmc.py
View File

@ -94,7 +94,7 @@ def addFile(src, filetype, manual, autoconfirm, tag):
arxiv = fetcher.findArXivId(src)
if filetype == 'book' or (doi is False and arxiv is False and
filetype is None):
filetype is None):
isbn = fetcher.findISBN(src)
except KeyboardInterrupt:
doi = False

View File

@ -57,6 +57,9 @@ def download(url):
continue
return dl, contenttype
except ValueError:
tools.warning("Invalid URL")
return False
except requests.exceptions.RequestException:
tools.warning("Unable to get "+url+" using proxy "+proxy+". It " +
"may not be available.")
@ -64,10 +67,10 @@ def download(url):
return False
#isbn_re = re.compile(r"isbn (([0-9]{3}[ -])?[0-9][ -][0-9]{2}[ -][0-9]{6}[ -][0-9])",
isbn_re = re.compile(r'isbn ((?:[0-9]{3}[ -]?)?[0-9]{1,5}[ -]?[0-9]{1,7}[ -]?[0-9]{1,6}[- ]?[0-9])',
re.IGNORECASE)
def findISBN(src):
"""Search for a valid ISBN in src.

10
tests/test_backend.py Normal file
View File

@ -0,0 +1,10 @@
# -*- coding: utf8 -*-
# -----------------------------------------------------------------------------
# "THE NO-ALCOHOL BEER-WARE LICENSE" (Revision 42):
# Phyks (webmaster@phyks.me) wrote this file. As long as you retain this notice
# you can do whatever you want with this stuff (and you can also do whatever
# you want with this stuff without retaining it, but that's not cool...). If we
# meet some day, and you think this stuff is worth it, you can buy me a
# <del>beer</del> soda in return.
# Phyks
# -----------------------------------------------------------------------------

83
tests/test_fetcher.py Normal file
View File

@ -0,0 +1,83 @@
# -*- coding: utf8 -*-
# -----------------------------------------------------------------------------
# "THE NO-ALCOHOL BEER-WARE LICENSE" (Revision 42):
# Phyks (webmaster@phyks.me) wrote this file. As long as you retain this notice
# you can do whatever you want with this stuff (and you can also do whatever
# you want with this stuff without retaining it, but that's not cool...). If we
# meet some day, and you think this stuff is worth it, you can buy me a
# <del>beer</del> soda in return.
# Phyks
# -----------------------------------------------------------------------------
import unittest
from fetcher import *
class TestFetcher(unittest.TestCase):
def setUp(self):
with open("tests/src/doi.bib", 'r') as fh:
self.doi_bib = fh.read()
with open("tests/src/arxiv.bib", 'r') as fh:
self.arxiv_bib = fh.read()
with open("tests/src/isbn.bib", 'r') as fh:
self.isbn_bib = fh.read()
def test_download(self):
dl, contenttype = download('http://arxiv.org/pdf/1312.4006.pdf')
self.assertIn(contenttype, ['pdf', 'djvu'])
self.assertNotEqual(dl, '')
def test_download_invalid_type(self):
self.assertFalse(download('http://phyks.me/'))
def test_download_invalid_url(self):
self.assertFalse(download('a'))
def test_findISBN_DJVU(self):
self.assertEqual(findISBN("tests/src/test_book.djvu"), '0198507194')
def test_findISBN_PDF(self):
self.assertEqual(findISBN("tests/src/test_book.pdf"), '9780521846516')
def test_findISBN_False(self):
self.assertFalse(findISBN("tests/src/test.pdf"))
def test_isbn2Bib(self):
self.assertEqual(isbn2Bib('0198507194'), self.isbn_bib)
def test_isbn2Bib_False(self):
self.assertEqual(isbn2Bib('blabla'), '')
def test_findDOI_PDF(self):
self.assertEqual(findDOI("tests/src/test.pdf"),
'10.1103/physreva.88.043630')
def test_findDOI_DJVU(self):
self.assertEqual(findDOI("tests/src/test.djvu"),
'10.1103/physreva.88.043630')
def test_findDOI_False(self):
self.assertFalse(findDOI("tests/src/test_arxiv_multi.pdf"))
def test_doi2Bib(self):
self.assertEqual(doi2Bib('10.1103/physreva.88.043630'), self.doi_bib)
def test_doi2Bib_False(self):
self.assertEqual(doi2Bib('blabla'), '')
def test_findArXivId(self):
self.assertEqual(findArXivId("tests/src/test_arxiv_multi.pdf"),
'1303.3130v1')
def test_arXiv2Bib(self):
self.assertEqual(arXiv2Bib('1303.3130v1'), self.arxiv_bib)
def test_arXiv2Bib_False(self):
self.assertEqual(arXiv2Bib('blabla'), '')
def test_findHALId(self):
self.assertTupleEqual(findHALId("tests/src/test_hal.pdf"),
('hal-00750893', '3'))
if __name__ == '__main__':
unittest.main()

36
tests/test_tools.py Normal file
View File

@ -0,0 +1,36 @@
# -*- coding: utf8 -*-
# -----------------------------------------------------------------------------
# "THE NO-ALCOHOL BEER-WARE LICENSE" (Revision 42):
# Phyks (webmaster@phyks.me) wrote this file. As long as you retain this notice
# you can do whatever you want with this stuff (and you can also do whatever
# you want with this stuff without retaining it, but that's not cool...). If we
# meet some day, and you think this stuff is worth it, you can buy me a
# <del>beer</del> soda in return.
# Phyks
# -----------------------------------------------------------------------------
import unittest
from tools import *
class TestTools(unittest.TestCase):
def test_slugify(self):
self.assertEqual(slugify(u"à&é_truc.pdf"), "ae_trucpdf")
def test_parsed2Bibtex(self):
parsed = {'type': 'article', 'id': 'test', 'field1': 'test1',
'field2': 'test2'}
expected = ('@article{test,\n\tfield1={test1},\n' +
'\tfield2={test2},\n}\n\n')
self.assertEqual(parsed2Bibtex(parsed), expected)
def test_getExtension(self):
self.assertEqual(getExtension('test.ext'), '.ext')
def test_replaceAll(self):
replace_dict = {"test": "bidule", "machin": "chose"}
self.assertEqual(replaceAll("test machin truc", replace_dict),
"bidule chose truc")
if __name__ == '__main__':
unittest.main()