From 5b59c4db673d05ee71252d0d7579f325f3b726f8 Mon Sep 17 00:00:00 2001 From: QuietMisdreavus Date: Mon, 25 Sep 2017 12:50:27 -0500 Subject: let htmldocck.py check for directories --- src/etc/htmldocck.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/etc/htmldocck.py') diff --git a/src/etc/htmldocck.py b/src/etc/htmldocck.py index 7e8fde20346..8a11c6f7cfc 100644 --- a/src/etc/htmldocck.py +++ b/src/etc/htmldocck.py @@ -99,6 +99,8 @@ There are a number of supported commands: * `@count PATH XPATH COUNT' checks for the occurrence of given XPath in the given file. The number of occurrences must match the given count. +* `@has-dir PATH` checks for the existence of the given directory. + All conditions can be negated with `!`. `@!has foo/type.NoSuch.html` checks if the given file does not exist, for example. @@ -308,6 +310,12 @@ class CachedFiles(object): self.trees[path] = tree return self.trees[path] + def get_dir(self, path): + path = self.resolve_path(path) + abspath = os.path.join(self.root, path) + if not(os.path.exists(abspath) and os.path.isdir(abspath)): + raise FailedCheck('Directory does not exist {!r}'.format(path)) + def check_string(data, pat, regexp): if not pat: @@ -407,6 +415,16 @@ def check_command(c, cache): ret = expected == found else: raise InvalidCheck('Invalid number of @{} arguments'.format(c.cmd)) + elif c.cmd == 'has-dir': # has-dir test + if len(c.args) == 1: # @has-dir = has-dir test + try: + cache.get_dir(c.args[0]) + ret = True + except FailedCheck as err: + cerr = str(err) + ret = False + else: + raise InvalidCheck('Invalid number of @{} arguments'.format(c.cmd)) elif c.cmd == 'valid-html': raise InvalidCheck('Unimplemented @valid-html') -- cgit 1.4.1-3-g733a5