move many generic package testing tools

test_inventory was a good place to develop some of those tools, but they are
now needed for testing driver.py and others; moving them
This commit is contained in:
Martin A. Brown 2016-02-29 10:46:36 -08:00
parent 98dd5ecdf8
commit 9643c44b7a
2 changed files with 117 additions and 89 deletions

View File

@ -1,13 +1,9 @@
from __future__ import absolute_import, division, print_function
import os
import time
import random
import shutil
from tldp.outputs import OutputNamingConvention
from tldptesttools import TestToolsFilesystem
from tldptesttools import TestInventoryBase
# -- Test Data
import example
@ -16,88 +12,6 @@ import example
from tldp.inventory import Inventory
class TestOutputDirSkeleton(OutputNamingConvention):
def mkdir(self):
if not os.path.isdir(self.dirname):
os.mkdir(self.dirname)
def create_expected_docs(self):
for name in self.expected:
fname = getattr(self, name)
with open(fname, 'w'):
pass
class TestSourceDocSkeleton(object):
def __init__(self, dirname):
if not os.path.abspath(dirname):
raise Exception("Please use absolute path in unit tests....")
self.dirname = dirname
if not os.path.isdir(self.dirname):
os.mkdir(self.dirname)
def addsourcefile(self, filename, content):
fname = os.path.join(self.dirname, filename)
if os.path.isfile(content):
shutil.copy(content, fname)
else:
with open(fname, 'w') as f:
f.write(content)
class TestInventoryBase(TestToolsFilesystem):
def setupcollections(self):
self.pubdir = os.path.join(self.tempdir, 'outputs')
self.sourcedir = os.path.join(self.tempdir, 'sources')
self.sourcedirs = [self.sourcedir]
for d in (self.sourcedir, self.pubdir):
if not os.path.isdir(d):
os.mkdir(d)
def add_stale(self, stem, ex):
self.setupcollections()
myoutput = TestOutputDirSkeleton(os.path.join(self.pubdir, stem), stem)
myoutput.mkdir()
myoutput.create_expected_docs()
time.sleep(0.002)
mysource = TestSourceDocSkeleton(self.sourcedir)
mysource.addsourcefile(stem + ex.ext, ex.filename)
def add_broken(self, stem, ex):
self.setupcollections()
mysource = TestSourceDocSkeleton(self.sourcedir)
mysource.addsourcefile(stem + ex.ext, ex.filename)
myoutput = TestOutputDirSkeleton(os.path.join(self.pubdir, stem), stem)
myoutput.mkdir()
myoutput.create_expected_docs()
prop = random.choice(myoutput.expected)
fname = getattr(myoutput, prop, None)
assert fname is not None
os.unlink(fname)
def add_new(self, stem, ex):
self.setupcollections()
mysource = TestSourceDocSkeleton(self.sourcedir)
mysource.addsourcefile(stem + ex.ext, ex.filename)
def add_orphan(self, stem, ex):
self.setupcollections()
myoutput = TestOutputDirSkeleton(os.path.join(self.pubdir, stem), stem)
myoutput.mkdir()
myoutput.create_expected_docs()
def add_published(self, stem, ex):
self.setupcollections()
mysource = TestSourceDocSkeleton(self.sourcedir)
mysource.addsourcefile(stem + ex.ext, ex.filename)
myoutput = TestOutputDirSkeleton(os.path.join(self.pubdir, stem), stem)
myoutput.mkdir()
myoutput.create_expected_docs()
class TestInventoryUsage(TestInventoryBase):
def test_inventory_repr(self):

View File

@ -2,9 +2,14 @@
from __future__ import absolute_import, division, print_function
import os
import time
import random
import shutil
import unittest
from tempfile import mkdtemp
import shutil
from tempfile import NamedTemporaryFile as ntf
from tldp.outputs import OutputNamingConvention
def stem_and_ext(name):
@ -27,9 +32,15 @@ def dir_to_components(reldir):
class TestToolsFilesystem(unittest.TestCase):
def setUp(self):
self.tempdir = mkdtemp(prefix='tldp-test-')
self.makeTempdir()
def tearDown(self):
self.removeTempdir()
def makeTempdir(self):
self.tempdir = mkdtemp(prefix='tldp-test-')
def removeTempdir(self):
shutil.rmtree(self.tempdir)
def adddir(self, reldir):
@ -57,5 +68,108 @@ class TestToolsFilesystem(unittest.TestCase):
relname = os.path.relpath(newname, self.tempdir)
return relname, newname
class CCTestTools(unittest.TestCase):
def setUp(self):
self.makeTempdir()
def tearDown(self):
self.removeTempdir()
def makeTempdir(self):
self.tempdir = mkdtemp(prefix='tldp-test-')
def removeTempdir(self):
shutil.rmtree(self.tempdir)
def writeconfig(self, case):
f = ntf(prefix=case.tag, suffix='.cfg', dir=self.tempdir, delete=False)
f.write(case.cfg)
f.close()
case.configfile = f.name
class TestOutputDirSkeleton(OutputNamingConvention):
def mkdir(self):
if not os.path.isdir(self.dirname):
os.mkdir(self.dirname)
def create_expected_docs(self):
for name in self.expected:
fname = getattr(self, name)
with open(fname, 'w'):
pass
class TestSourceDocSkeleton(object):
def __init__(self, dirname):
if not os.path.abspath(dirname):
raise Exception("Please use absolute path in unit tests....")
self.dirname = dirname
if not os.path.isdir(self.dirname):
os.mkdir(self.dirname)
def addsourcefile(self, filename, content):
fname = os.path.join(self.dirname, filename)
if os.path.isfile(content):
shutil.copy(content, fname)
else:
with open(fname, 'w') as f:
f.write(content)
class TestInventoryBase(TestToolsFilesystem):
def setupcollections(self):
self.pubdir = os.path.join(self.tempdir, 'outputs')
self.sourcedir = os.path.join(self.tempdir, 'sources')
self.sourcedirs = [self.sourcedir]
for d in (self.sourcedir, self.pubdir):
if not os.path.isdir(d):
os.mkdir(d)
def add_stale(self, stem, ex):
self.setupcollections()
myoutput = TestOutputDirSkeleton(os.path.join(self.pubdir, stem), stem)
myoutput.mkdir()
myoutput.create_expected_docs()
time.sleep(0.002)
mysource = TestSourceDocSkeleton(self.sourcedir)
mysource.addsourcefile(stem + ex.ext, ex.filename)
def add_broken(self, stem, ex):
self.setupcollections()
mysource = TestSourceDocSkeleton(self.sourcedir)
mysource.addsourcefile(stem + ex.ext, ex.filename)
myoutput = TestOutputDirSkeleton(os.path.join(self.pubdir, stem), stem)
myoutput.mkdir()
myoutput.create_expected_docs()
prop = random.choice(myoutput.expected)
fname = getattr(myoutput, prop, None)
assert fname is not None
os.unlink(fname)
def add_new(self, stem, ex):
self.setupcollections()
mysource = TestSourceDocSkeleton(self.sourcedir)
mysource.addsourcefile(stem + ex.ext, ex.filename)
def add_orphan(self, stem, ex):
self.setupcollections()
myoutput = TestOutputDirSkeleton(os.path.join(self.pubdir, stem), stem)
myoutput.mkdir()
myoutput.create_expected_docs()
def add_published(self, stem, ex):
self.setupcollections()
mysource = TestSourceDocSkeleton(self.sourcedir)
mysource.addsourcefile(stem + ex.ext, ex.filename)
myoutput = TestOutputDirSkeleton(os.path.join(self.pubdir, stem), stem)
myoutput.mkdir()
myoutput.create_expected_docs()
#
# -- end of file