You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
2.4 KiB

import sys, os
import unittest
import pkgutil
import testenv
import fake_filesystem
import fake_filesystem_shutil
real_os = os
real_open = open
fake_os, fake_open, fake_shutil = None, None
def _create_fake_fs():
global fake_os, fake_open, fake_shutil
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_fs.CreateDirectory(fake_os.path.expanduser('~'))
__builtins__['open'] = fake_open
__builtins__['file'] = fake_open
sys.modules['os'] = fake_os
sys.modules['shutil'] = fake_shutil
import papers
for importer, modname, ispkg in pkgutil.walk_packages(
path=papers.__path__,
prefix=papers.__name__+'.',
onerror=lambda x: None):
md = __import__(modname, fromlist = 'dummy')
md.os = fake_os
md.shutil = fake_shutil
return fake_fs
class TestInit(unittest.TestCase):
def test_init(self):
fs = _create_fake_fs()
from papers import papers_cmd
papers_cmd.execute('papers init -p paper_test2'.split())
self.assertEqual(set(fake_os.listdir('/paper_test2/')), {'bibdata', 'doc', 'meta', 'papers.yaml'})
class TestAdd(unittest.TestCase):
def test_add(self):
fs = _create_fake_fs()
from papers import papers_cmd
papers_cmd.execute('papers init'.split())
with real_open('data/pagerank.bib', 'r') as f:
fs.CreateFile('/data/page.bib', contents = f.read())
with real_open('data/pagerank.pdf', 'r') as f:
fs.CreateFile('/data/page.pdf', contents = f.read())
papers_cmd.execute('papers add -b /data/page.bib -d /data/page.pdf'.split())
class TestAdd2(unittest.TestCase):
def test_add2(self):
fs = _create_fake_fs()
from papers import papers_cmd
papers_cmd.execute('papers init -p /not_default'.split())
with real_open('data/pagerank.bib', 'r') as f:
fs.CreateFile('/data/page.bib', contents = f.read())
with real_open('data/pagerank.pdf', 'r') as f:
fs.CreateFile('/data/page.pdf', contents = f.read())
papers_cmd.execute('papers add -b /data/page.bib -d /data/page.pdf'.split())