mirror of
https://github.com/kennethreitz-archive/sphinx-to-github.git
synced 2026-06-05 23:40:17 +00:00
Added partial testsuite and refactored
This commit is contained in:
+14
-10
@@ -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)
|
||||
|
||||
Executable
+24
@@ -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
@@ -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 — 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 — 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
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
|
||||
import unittest
|
||||
|
||||
import sphinxtogithub
|
||||
|
||||
class TestReplacer(unittest.TestCase):
|
||||
|
||||
before = """
|
||||
<title>Breathe's documentation — 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 — 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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user