mirror of https://github.com/tLDP/python-tldp
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:
parent
98dd5ecdf8
commit
9643c44b7a
|
@ -1,13 +1,9 @@
|
||||||
|
|
||||||
from __future__ import absolute_import, division, print_function
|
from __future__ import absolute_import, division, print_function
|
||||||
|
|
||||||
import os
|
|
||||||
import time
|
|
||||||
import random
|
import random
|
||||||
import shutil
|
|
||||||
|
|
||||||
from tldp.outputs import OutputNamingConvention
|
from tldptesttools import TestInventoryBase
|
||||||
from tldptesttools import TestToolsFilesystem
|
|
||||||
|
|
||||||
# -- Test Data
|
# -- Test Data
|
||||||
import example
|
import example
|
||||||
|
@ -16,88 +12,6 @@ import example
|
||||||
from tldp.inventory import Inventory
|
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):
|
class TestInventoryUsage(TestInventoryBase):
|
||||||
|
|
||||||
def test_inventory_repr(self):
|
def test_inventory_repr(self):
|
||||||
|
|
|
@ -2,9 +2,14 @@
|
||||||
from __future__ import absolute_import, division, print_function
|
from __future__ import absolute_import, division, print_function
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import time
|
||||||
|
import random
|
||||||
|
import shutil
|
||||||
import unittest
|
import unittest
|
||||||
from tempfile import mkdtemp
|
from tempfile import mkdtemp
|
||||||
import shutil
|
from tempfile import NamedTemporaryFile as ntf
|
||||||
|
|
||||||
|
from tldp.outputs import OutputNamingConvention
|
||||||
|
|
||||||
|
|
||||||
def stem_and_ext(name):
|
def stem_and_ext(name):
|
||||||
|
@ -27,9 +32,15 @@ def dir_to_components(reldir):
|
||||||
class TestToolsFilesystem(unittest.TestCase):
|
class TestToolsFilesystem(unittest.TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.tempdir = mkdtemp(prefix='tldp-test-')
|
self.makeTempdir()
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
|
self.removeTempdir()
|
||||||
|
|
||||||
|
def makeTempdir(self):
|
||||||
|
self.tempdir = mkdtemp(prefix='tldp-test-')
|
||||||
|
|
||||||
|
def removeTempdir(self):
|
||||||
shutil.rmtree(self.tempdir)
|
shutil.rmtree(self.tempdir)
|
||||||
|
|
||||||
def adddir(self, reldir):
|
def adddir(self, reldir):
|
||||||
|
@ -57,5 +68,108 @@ class TestToolsFilesystem(unittest.TestCase):
|
||||||
relname = os.path.relpath(newname, self.tempdir)
|
relname = os.path.relpath(newname, self.tempdir)
|
||||||
return relname, newname
|
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
|
# -- end of file
|
||||||
|
|
Loading…
Reference in New Issue