Added partial testsuite and refactored

This commit is contained in:
mpj
2009-11-22 18:47:55 +00:00
parent 1cd16edcc7
commit b233123944
7 changed files with 233 additions and 10 deletions
+14 -10
View File
@@ -23,28 +23,31 @@ class Replacer(object):
class FileHandler(object):
"Applies a series of replacements the contents of a file inplace"
def __init__(self, name, replacers):
def __init__(self, name, replacers, opener):
self.name = name
self.replacers = replacers
self.opener = opener
def process(self):
text = open(self.name).read()
text = self.opener(self.name).read()
for replacer in self.replacers:
text = replacer.process( text )
open(self.name, "w").write(text)
self.opener(self.name, "w").write(text)
class DirectoryHandler(object):
"Encapsulates renaming a directory by removing its first character"
def __init__(self, name, root):
def __init__(self, name, root, renamer):
self.name = name
self.new_name = name[1:]
self.root = root + os.sep
self.renamer = renamer
def path(self):
@@ -64,13 +67,14 @@ class DirectoryHandler(object):
from_ = os.path.join(self.root, self.name)
to = os.path.join(self.root, self.new_name)
os.rename(from_, to)
self.renamer(from_, to)
class VerboseDirectoryHandler(DirectoryHandler):
def __init__(self, name, root, stream):
def __init__(self, name, root, renamer, stream):
DirectoryHandler.__init__(self, name, root)
DirectoryHandler.__init__(self, name, root, renamer)
self.stream = stream
@@ -118,12 +122,12 @@ class LayoutFactory(object):
directories = [d for d in contents if self.is_underscore_dir(path, d)]
if self.verbose:
underscore_directories = [
VerboseDirectoryHandler(d, path, self.output_stream)
VerboseDirectoryHandler(d, path, shutil.move, self.output_stream)
for d in directories
]
else:
underscore_directories = [
DirectoryHandler(d, path) for d in directories
DirectoryHandler(d, path, shutil.move) for d in directories
]
if not underscore_directories:
@@ -147,7 +151,7 @@ class LayoutFactory(object):
for f in files:
if f.endswith(".html"):
filelist.append(
FileHandler(os.path.join(root, f), replacers)
FileHandler(os.path.join(root, f), replacers, open)
)
return Layout(underscore_directories, filelist)
+24
View File
@@ -0,0 +1,24 @@
#!/usr/bin/env python
import unittest
import sys
sys.path.append(".")
from sphinxtogithub.test import directoryhandler, filehandler, replacer
if __name__ == "__main__":
suites = [
filehandler.testSuite(),
replacer.testSuite(),
directoryhandler.testSuite(),
]
suite = unittest.TestSuite(suites)
runner = unittest.TextTestRunner()
runner.run(suite)
+1
View File
@@ -0,0 +1 @@
../../sphinxtogithub.py
@@ -0,0 +1,80 @@
import unittest
import os
import sphinxtogithub
class TestRenamer(object):
def __call__(self, from_, to):
self.from_ = from_
self.to = to
class TestDirectoryHandler(unittest.TestCase):
def setUp(self):
self.directory = "_static"
self.new_directory = "static"
self.root = os.path.join("build", "html")
renamer = TestRenamer()
self.dir_handler = sphinxtogithub.DirectoryHandler(self.directory, self.root, renamer)
def tearDown(self):
self.dir_handler = None
def testPath(self):
self.assertEqual(self.dir_handler.path(), os.path.join(self.root, self.directory))
def testRelativePath(self):
dir_name = "css"
dir_path = os.path.join(self.root, self.directory, dir_name)
filename = "cssfile.css"
self.assertEqual(
self.dir_handler.relative_path(dir_path, filename),
os.path.join(self.directory, dir_name, filename)
)
def testNewRelativePath(self):
dir_name = "css"
dir_path = os.path.join(self.root, self.directory, dir_name)
filename = "cssfile.css"
self.assertEqual(
self.dir_handler.new_relative_path(dir_path, filename),
os.path.join(self.new_directory, dir_name, filename)
)
def testProcess(self):
self.dir_handler.process()
self.assertEqual(
self.dir_handler.renamer.to,
os.path.join(self.root, self.new_directory)
)
self.assertEqual(
self.dir_handler.renamer.from_,
os.path.join(self.root, self.directory)
)
def testSuite():
suite = unittest.TestSuite()
suite.addTest(TestDirectoryHandler("testPath"))
suite.addTest(TestDirectoryHandler("testRelativePath"))
suite.addTest(TestDirectoryHandler("testNewRelativePath"))
suite.addTest(TestDirectoryHandler("testProcess"))
return suite
@@ -0,0 +1,80 @@
import unittest
import sphinxtogithub
class TestFileObject(object):
before = """
<title>Breathe's documentation &mdash; BreatheExample v0.0.1 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
"""
after = """
<title>Breathe's documentation &mdash; BreatheExample v0.0.1 documentation</title>
<link rel="stylesheet" href="static/default.css" type="text/css" />
<link rel="stylesheet" href="static/pygments.css" type="text/css" />
"""
def read(self):
return self.before
def write(self, text):
self.written = text
class TestOpener(object):
def __init__(self):
self.file_object = TestFileObject()
def __call__(self, name, readmode="r"):
self.name = name
return self.file_object
class TestFileHandler(unittest.TestCase):
def testProcess(self):
filepath = "filepath"
opener = TestOpener()
file_handler = sphinxtogithub.FileHandler(filepath, [], opener)
file_handler.process()
self.assertEqual(opener.file_object.written, TestFileObject.before)
self.assertEqual(opener.name, filepath)
def testProcessWithReplacers(self):
filepath = "filepath"
replacers = []
replacers.append(sphinxtogithub.Replacer("_static/default.css", "static/default.css"))
replacers.append(sphinxtogithub.Replacer("_static/pygments.css", "static/pygments.css"))
opener = TestOpener()
file_handler = sphinxtogithub.FileHandler(filepath, replacers, opener)
file_handler.process()
self.assertEqual(opener.file_object.written, TestFileObject.after)
def testSuite():
suite = unittest.TestSuite()
suite.addTest(TestFileHandler("testProcess"))
suite.addTest(TestFileHandler("testProcessWithReplacers"))
return suite
+34
View File
@@ -0,0 +1,34 @@
import unittest
import sphinxtogithub
class TestReplacer(unittest.TestCase):
before = """
<title>Breathe's documentation &mdash; BreatheExample v0.0.1 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
"""
after = """
<title>Breathe's documentation &mdash; BreatheExample v0.0.1 documentation</title>
<link rel="stylesheet" href="static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
"""
def testReplace(self):
replacer = sphinxtogithub.Replacer("_static/default.css", "static/default.css")
self.assertEqual(replacer.process(self.before), self.after)
def testSuite():
suite = unittest.TestSuite()
suite.addTest(TestReplacer("testReplace"))
return suite