backtracked on changes. repo is passing all tests

main
Fabien Benureau 12 years ago
parent 9614593192
commit 3c0f575b92

@ -136,9 +136,23 @@ class Repository(object):
and new_citekey in self):
raise CiteKeyCollision('citekey {} already in use'.format(
new_citekey))
self.remove_paper(paper.citekey, remove_doc = False)
old_citekey = paper.citekey
paper.citekey = new_citekey
self.add_paper(paper, overwrite = overwrite)
self._move_doc(old_citekey, paper)
def _move_doc(self, old_citekey, paper):
"""Fragile. Make more robust"""
try:
old_docfile = self.find_document(old_citekey)
ext = os.path.splitext(old_docfile)[1]
new_docfile = os.path.join(self.doc_dir, paper.citekey + ext)
shutil.move(old_docfile, new_docfile)
paper.set_external_document(new_docfile)
except NoDocumentFile:
pass
def _bibfile(self, citekey):
return os.path.join(self.bib_dir, citekey + '.bibyaml')
@ -176,14 +190,21 @@ class Repository(object):
if not citekey + _base27(n) in self.citekeys:
return citekey + _base27(n)
def find_document(self, citekey):
found = glob.glob('{}/{}.*'.format(self.doc_dir, citekey))
if found:
return found[0]
else:
raise NoDocumentFile
def import_document(self, citekey, doc_file):
if citekey not in self.citekeys:
raise ValueError("Unknown citekey {}.".format(citekey))
raise(ValueError, "Unknown citekey: %s." % citekey)
else:
if not os.path.isfile(doc_file):
raise ValueError("No file {} found.".format(doc_file))
new_doc_file = os.path.join(self.doc_dir,
os.path.basename(doc_file))
ext = os.path.splitext(doc_file)[1]
new_doc_file = os.path.join(self.doc_dir, citekey + ext)
shutil.copy(doc_file, new_doc_file)
def get_tags(self):

@ -101,7 +101,7 @@ class TestUpdatePaper(TestRepo):
os.path.join(os.path.dirname(__file__),
'data/pagerank.pdf'))
self.repo.rename_paper(self.repo.get_paper('Turing1950'), 'Doe2003')
# self.assertFalse(os.path.exists(os.path.join(
# self.repo.doc_dir, 'Turing1950.pdf')))
# self.assertTrue(os.path.exists(os.path.join(
# self.repo.doc_dir, 'Doe2013.pdf')))
self.assertFalse(os.path.exists(os.path.join(
self.repo.doc_dir, 'Turing1950.pdf')))
self.assertTrue(os.path.exists(os.path.join(
self.repo.doc_dir, 'Doe2003.pdf')))

@ -1,10 +1,11 @@
import sys, os
import sys, os, shutil, glob
import unittest
import pkgutil
import testenv
import fake_filesystem
import fake_filesystem_shutil
import fake_filesystem_glob
from papers import papers_cmd
from papers import color
@ -12,23 +13,27 @@ from papers.p3 import io
real_os = os
real_open = open
real_shutil = shutil
real_glob = glob
fake_os, fake_open, fake_shutil = None, None, None
fake_os, fake_open, fake_shutil, fake_glob = None, None, None, None
def _create_fake_fs():
global fake_os, fake_open, fake_shutil
global fake_os, fake_open, fake_shutil, fake_glob
fake_fs = fake_filesystem.FakeFilesystem()
fake_os = fake_filesystem.FakeOsModule(fake_fs)
fake_open = fake_filesystem.FakeFileOpen(fake_fs)
fake_shutil = fake_filesystem_shutil.FakeShutilModule(fake_fs)
fake_glob = fake_filesystem_glob.FakeGlobModule(fake_fs)
fake_fs.CreateDirectory(fake_os.path.expanduser('~'))
__builtins__['open'] = fake_open
__builtins__['file'] = fake_open
sys.modules['os'] = fake_os
sys.modules['os'] = fake_os
sys.modules['shutil'] = fake_shutil
sys.modules['glob'] = fake_glob
import papers
for importer, modname, ispkg in pkgutil.walk_packages(
@ -102,7 +107,7 @@ class TestAdd(unittest.TestCase):
papers_cmd.execute('papers init -p /not_default'.split())
papers_cmd.execute('papers add -b /data/pagerank.bib -d /data/pagerank.pdf'.split())
self.assertEqual(set(fake_os.listdir('/not_default/doc')), {'pagerank.pdf'})
self.assertEqual(set(fake_os.listdir('/not_default/doc')), {'Page99.pdf'})
class TestList(unittest.TestCase):

Loading…
Cancel
Save