diff options
| author | Seo Sanghyeon <sanxiyn@gmail.com> | 2015-02-27 00:27:57 +0900 |
|---|---|---|
| committer | Seo Sanghyeon <sanxiyn@gmail.com> | 2015-02-27 00:27:57 +0900 |
| commit | 5e1d4fffff1516758f43b22b2e89327e5ec0918c (patch) | |
| tree | c8e65257d2d393eed473d1614c1e946e2a79835b /src/etc/htmldocck.py | |
| parent | f7aafcced8d7374ddbe50a509cb0bcec959254c4 (diff) | |
| download | rust-5e1d4fffff1516758f43b22b2e89327e5ec0918c.tar.gz rust-5e1d4fffff1516758f43b22b2e89327e5ec0918c.zip | |
Add a way to assert the number of occurrences to htmldocck
Diffstat (limited to 'src/etc/htmldocck.py')
| -rw-r--r-- | src/etc/htmldocck.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/etc/htmldocck.py b/src/etc/htmldocck.py index 22792ff7635..a212e3a0435 100644 --- a/src/etc/htmldocck.py +++ b/src/etc/htmldocck.py @@ -96,6 +96,9 @@ There are a number of supported commands: highlights for example. If you want to simply check the presence of given node or attribute, use an empty string (`""`) as a `PATTERN`. +* `@count PATH XPATH COUNT' checks for the occurrence of given XPath + in the given file. The number of occurrences must match the given count. + All conditions can be negated with `!`. `@!has foo/type.NoSuch.html` checks if the given file does not exist, for example. @@ -333,6 +336,11 @@ def check_tree_text(tree, path, pat, regexp): return ret +def check_tree_count(tree, path, count): + path = normalize_xpath(path) + return len(tree.findall(path)) == count + + def check(target, commands): cache = CachedFiles(target) for c in commands: @@ -360,6 +368,13 @@ def check(target, commands): raise RuntimeError('Invalid number of @{} arguments \ at line {}'.format(c.cmd, c.lineno)) + elif c.cmd == 'count': # count test + if len(c.args) == 3: # @count <path> <pat> <count> = count test + ret = check_tree_count(cache.get_tree(c.args[0]), c.args[1], int(c.args[2])) + else: + raise RuntimeError('Invalid number of @{} arguments \ + at line {}'.format(c.cmd, c.lineno)) + elif c.cmd == 'valid-html': raise RuntimeError('Unimplemented @valid-html at line {}'.format(c.lineno)) |
