take care of books with sources in subdirectories

At the moment the validation doesn't take care of books
where the pom.xml is in an other directory than the sources
of the book. This patch will fix this issue.

For example: the pom.xml of basic-install is available at
doc/src/docbkx/basic-install/pom.xml but the sources of the
books are in doc/src/docbkx/basic-install/src. Because
the path to the pom.xml differs from the path of the sources
the validation will not check the files in the sources
directory for xi:include elements.

Change-Id: I3b92c3c4bff46ba6f9ac53b3ec56d24e7caf6ff6
This commit is contained in:
Christian Berendt 2013-08-15 10:22:58 +02:00
parent fd895f2655
commit 82c76849e3
1 changed files with 24 additions and 19 deletions

View File

@ -226,27 +226,32 @@ def build_affected_books(rootdir, book_exceptions, file_exceptions):
modified_files = get_modified_files()
affected_books = []
books = []
book_root = rootdir
for root, dirs, files in os.walk(rootdir):
if ("pom.xml" in files and
os.path.basename(root) not in book_exceptions):
if os.path.basename(root) in book_exceptions:
break
elif "pom.xml" in files:
books.append(root)
os.chdir(root)
for f in files:
if (f.endswith('.xml') and
f != 'pom.xml' and
f not in file_exceptions):
path = os.path.abspath(os.path.join(root, f))
doc = etree.parse(path)
ns = {"xi": "http://www.w3.org/2001/XInclude"}
for node in doc.xpath('//xi:include', namespaces=ns):
href = node.get('href')
if (href.endswith('.xml') and
f not in file_exceptions and
os.path.abspath(href) in modified_files):
affected_books.append(root)
break
if root in affected_books:
break
book_root = root
os.chdir(root)
for f in files:
if (f.endswith('.xml') and
f != 'pom.xml' and
f not in file_exceptions):
path = os.path.abspath(os.path.join(root, f))
doc = etree.parse(path)
ns = {"xi": "http://www.w3.org/2001/XInclude"}
for node in doc.xpath('//xi:include', namespaces=ns):
href = node.get('href')
if (href.endswith('.xml') and
f not in file_exceptions and
os.path.abspath(href) in modified_files):
affected_books.append(book_root)
break
if book_root in affected_books:
break
if affected_books:
books = affected_books