From 5e06fd5ed6105bff158b4cecf354d93b7ab7a699 Mon Sep 17 00:00:00 2001 From: "Martin A. Brown" Date: Sat, 2 Apr 2016 12:00:45 -0700 Subject: [PATCH] add a longer, lifecycle test --- tests/long_inventory.py | 75 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 tests/long_inventory.py diff --git a/tests/long_inventory.py b/tests/long_inventory.py new file mode 100644 index 0000000..a59ff5e --- /dev/null +++ b/tests/long_inventory.py @@ -0,0 +1,75 @@ + +from __future__ import absolute_import, division, print_function + +import io +import os +import codecs +import shutil + +from tldptesttools import TestInventoryBase, TestSourceDocSkeleton + +# -- Test Data +import example + +# -- SUT +import tldp.driver + +opb = os.path.basename +opj = os.path.join + + +class TestInventoryHandling(TestInventoryBase): + + def test_lifecycle(self): + self.add_docbook4xml_xsl_to_config() + c = self.config + argv = self.argv + argv.extend(['--publish']) + argv.extend(['--docbook4xml-xslprint', c.docbook4xml_xslprint]) + argv.extend(['--docbook4xml-xslchunk', c.docbook4xml_xslchunk]) + argv.extend(['--docbook4xml-xslsingle', c.docbook4xml_xslsingle]) + mysource = TestSourceDocSkeleton(c.sourcedir) + ex = example.ex_docbook4xml_dir + exdir = os.path.dirname(ex.filename) + mysource.copytree(exdir) + inv = tldp.inventory.Inventory(c.pubdir, c.sourcedir) + self.assertEqual(1, len(inv.new.keys())) + + # -- run first build (will generate MD5SUMS file + # + exitcode = tldp.driver.run(argv) + self.assertEqual(exitcode, os.EX_OK) + inv = tldp.inventory.Inventory(c.pubdir, c.sourcedir) + self.assertEqual(1, len(inv.published.keys())) + + # -- remove a source file, add a source file, change a source file + # + main = opj(mysource.dirname, opb(exdir), opb(ex.filename)) + disappearing = opj(mysource.dirname, opb(exdir), 'disappearing.xml') + brandnew = opj(mysource.dirname, opb(exdir), 'brandnew.xml') + shutil.copy(disappearing, brandnew) + os.unlink(opj(mysource.dirname, opb(exdir), 'disappearing.xml')) + with codecs.open(main, 'w', encoding='utf-8') as f: + f.write(ex.content.replace('FIXME', 'TOTALLY-FIXED')) + inv = tldp.inventory.Inventory(c.pubdir, c.sourcedir) + self.assertEqual(1, len(inv.stale.keys())) + stdout = io.StringIO() + c.verbose = True + tldp.driver.detail(c, inv.all.values(), file=stdout) + stdout.seek(0) + data = stdout.read() + self.assertTrue('new source' in data) + self.assertTrue('gone source' in data) + self.assertTrue('changed source' in data) + + # -- rebuild (why not?) + # + exitcode = tldp.driver.run(argv) + self.assertEqual(exitcode, os.EX_OK) + inv = tldp.inventory.Inventory(c.pubdir, c.sourcedir) + self.assertEqual(1, len(inv.published.keys())) + + # -- remove a file (known extraneous file, build should succeed) + +# +# -- end of file