mirror of https://github.com/tLDP/python-tldp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.2 KiB
93 lines
3.2 KiB
# -*- coding: utf8 -*- |
|
# |
|
# Copyright (c) 2016 Linux Documentation Project |
|
|
|
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 the generated MD5SUMS file, ensure rebuild occurs |
|
# |
|
doc = inv.published.values().pop() |
|
os.unlink(doc.output.MD5SUMS) |
|
self.assertEqual(dict(), doc.output.md5sums) |
|
inv = tldp.inventory.Inventory(c.pubdir, c.sourcedir) |
|
self.assertEqual(1, len(inv.stale.keys())) |
|
if not os.path.isdir(c.builddir): |
|
os.mkdir(c.builddir) |
|
exitcode = tldp.driver.run(argv) |
|
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?) |
|
# |
|
if not os.path.isdir(c.builddir): |
|
os.mkdir(c.builddir) |
|
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
|
|
|