mirror of
https://github.com/sbrow/thor.git
synced 2026-10-25 10:11:55 -04:00
refactor: Renamed DIAGNOSTIC_TODOS.yaml to DIAGNOSTIC_TESTS.yaml.
This commit is contained in:
@@ -0,0 +1,364 @@
|
||||
# This file contains tests for all known mustache syntax errors and their
|
||||
# desired error messages. Each one is converted into an Odin test.
|
||||
name: Missing 2nd closing brace
|
||||
enable: true
|
||||
should: error
|
||||
input: |
|
||||
<menu>
|
||||
<a class="goto-top opacity-0" href="#">{{> icons/chevron_up}</a>
|
||||
{{#params.social}}
|
||||
<a href="{{url}}" target="_blank" rel="noopener noreferrer me" title="{{name}}">{{>* icon}}</a>
|
||||
{{/params.social}}
|
||||
</menu>
|
||||
<p>Proudly built with <a href="https://github.com/sbrow/thor/">Thor</a> and <a
|
||||
expected: |
|
||||
Missing closing brace
|
||||
--> <test>:1:1
|
||||
1 | <menu>
|
||||
2 | <a class="goto-top opacity-0" href="#">{{> icons/chevron_up}</a>
|
||||
| ^^ opened ^ never closed
|
||||
3 | {{#params.social}}
|
||||
4 | <a href="{{url}}" target="_blank" rel="noopener noreferrer me" title="{{name}}">{{>* icon}}</a>
|
||||
5 | {{/params.social}}
|
||||
|
|
||||
---
|
||||
name: Missing 2nd opening brace
|
||||
enable: true
|
||||
should: error
|
||||
input: |
|
||||
<menu>
|
||||
<a class="goto-top opacity-0" href="#">{> icons/chevron_up}}</a>
|
||||
{{#params.social}}
|
||||
<a href="{{url}}" target="_blank" rel="noopener noreferrer me" title="{{name}}">{{>* icon}}</a>
|
||||
{{/params.social}}
|
||||
</menu>
|
||||
<p>Proudly built with <a href="https://github.com/sbrow/thor/">Thor</a> and <a
|
||||
expected: |
|
||||
Missing opening brace
|
||||
--> <test>:1:1
|
||||
1 | <menu>
|
||||
2 | <a class="goto-top opacity-0" href="#">{> icons/chevron_up}}</a>
|
||||
| ^ opened ^^ closed
|
||||
3 | {{#params.social}}
|
||||
4 | <a href="{{url}}" target="_blank" rel="noopener noreferrer me" title="{{name}}">{{>* icon}}</a>
|
||||
5 | {{/params.social}}
|
||||
|
|
||||
---
|
||||
# TODO: make it work
|
||||
name: Invalid timezone
|
||||
enable: false
|
||||
should: warn
|
||||
input: |
|
||||
{
|
||||
"date": {
|
||||
"timezone": "America/New_Yorkside"
|
||||
}
|
||||
}
|
||||
expected: "Did you mean 'America/New_York'? pointing to line+col no in the config"
|
||||
actual: |
|
||||
[WARN ] --- [148:init_site()] unable to load timezone 'America/New_Yorkside'
|
||||
---
|
||||
name: Mismatched section tags
|
||||
enable: true
|
||||
should: error
|
||||
input: |
|
||||
<footer>
|
||||
<menu>
|
||||
<a class="goto-top opacity-0" href="#">{{> icons/chevron_up}}</a>
|
||||
{{#params.ocial}}
|
||||
<a href="{{url}}" target="_blank" rel="noopener noreferrer me" title="{{name}}">{{>* icon}}</a>
|
||||
{{/params.social}}
|
||||
</menu>
|
||||
<p>Proudly built with <a href="https://github.com/sbrow/thor/">Thor</a> and <a
|
||||
href="https://edwardtufte.github.io/tufte-css/">Tufte CSS</a>
|
||||
</p>
|
||||
<p><small>©</small> {{now | format "2006" }} {{params.author.name}}</p>
|
||||
</footer>
|
||||
expected: |
|
||||
Mismatched section: 'ocial' opened, 'social' closed
|
||||
--> <test>:4:5
|
||||
|
|
||||
4 | {{#params.ocial}}
|
||||
| ^^^^^ opened — did you mean 'social'?
|
||||
5 | <a href="{{url}}" target="_blank" rel="noopener noreferrer me" title="{{name}}">{{>* icon}}</a>
|
||||
6 | {{/params.social}}
|
||||
| ^^^^^^ expected {{/params.ocial}}, got {{/params.social}}
|
||||
|
|
||||
---
|
||||
name: Missing closing section
|
||||
enable: true
|
||||
should: error
|
||||
input: |
|
||||
<footer>
|
||||
<menu>
|
||||
<a class="goto-top opacity-0" href="#">{{> icons/chevron_up}}</a>
|
||||
{{#params.social}}
|
||||
<a href="{{url}}" target="_blank" rel="noopener noreferrer me" title="{{name}}">{{>* icon}}</a>
|
||||
<!-- {{/params.social}} -->
|
||||
</menu>
|
||||
<p>Proudly built with <a href="https://github.com/sbrow/thor/">Thor</a> and <a
|
||||
href="https://edwardtufte.github.io/tufte-css/">Tufte CSS</a>
|
||||
</p>
|
||||
<p><small>©</small> {{now | format "2006" }} {{params.author.name}}</p>
|
||||
</footer>
|
||||
expected: |
|
||||
Missing closing tag '{{/params.social}}'
|
||||
--> <test>:4:5
|
||||
|
|
||||
4 | {{#params.social}}
|
||||
| ^^^^^^^^^^^^^^^^^ opened
|
||||
5 | <a href="{{url}}" target="_blank" rel="noopener noreferrer me" title="{{name}}">{{>* icon}}</a>
|
||||
6 | <!-- {{/params.social}} -->
|
||||
| ^^^^^^^^^^^^^^^^^^ closing tag is commented out
|
||||
|
|
||||
---
|
||||
name: empty tag
|
||||
enable: true
|
||||
should: error
|
||||
input: |
|
||||
<footer>
|
||||
<menu>
|
||||
<a class="goto-top opacity-0" href="#">{{> icons/chevron_up}}</a>
|
||||
{{#params.social}}
|
||||
<a href="{{url}}" target="_blank" rel="noopener noreferrer me" title="{{name}}">{{>* icon}}</a>
|
||||
{{/params.social}}
|
||||
</menu>
|
||||
<p>Proudly built with <a href="https://github.com/sbrow/thor/">Thor</a> and <a
|
||||
href="https://edwardtufte.github.io/tufte-css/">Tufte CSS</a>
|
||||
</p>
|
||||
<p><small>©</small> {{}} {{params.author.name}}</p>
|
||||
</footer>
|
||||
expected: |
|
||||
Empty tag
|
||||
--> <test>:11:28
|
||||
|
|
||||
9 | href="https://edwardtufte.github.io/tufte-css/">Tufte CSS</a>
|
||||
10 | </p>
|
||||
11 | <p><small>©</small> {{}} {{params.author.name}}</p>
|
||||
| ^^^^ tag must contain a key
|
||||
12 | </footer>
|
||||
|
|
||||
---
|
||||
name: Missing pipe arguement
|
||||
enable: true
|
||||
should: error
|
||||
input: |
|
||||
<footer>
|
||||
<menu>
|
||||
<a class="goto-top opacity-0" href="#">{{> icons/chevron_up}}</a>
|
||||
{{#params.social}}
|
||||
<a href="{{url}}" target="_blank" rel="noopener noreferrer me" title="{{name}}">{{>* icon}}</a>
|
||||
{{/params.social}}
|
||||
</menu>
|
||||
<p>Proudly built with <a href="https://github.com/sbrow/thor/">Thor</a> and <a
|
||||
href="https://edwardtufte.github.io/tufte-css/">Tufte CSS</a>
|
||||
</p>
|
||||
<p><small>©</small> {{now | group_by }} {{params.author.name}}</p>
|
||||
</footer>
|
||||
expected: |
|
||||
group_by expects 1 argument, got 0
|
||||
--> <test>:11:36
|
||||
|
|
||||
9 | href="https://edwardtufte.github.io/tufte-css/">Tufte CSS</a>
|
||||
10 | </p>
|
||||
11 | <p><small>©</small> {{now | group_by }} {{params.author.name}}</p>
|
||||
| ^^^^^^^^^ missing argument
|
||||
12 | </footer>
|
||||
|
|
||||
---
|
||||
name: Double dot access
|
||||
enable: true
|
||||
should: error
|
||||
input: |
|
||||
<footer>
|
||||
<menu>
|
||||
<a class="goto-top opacity-0" href="#">{{> icons/chevron_up}}</a>
|
||||
{{#params.social}}
|
||||
<a href="{{url}}" target="_blank" rel="noopener noreferrer me" title="{{name}}">{{>* icon}}</a>
|
||||
{{/params.social}}
|
||||
</menu>
|
||||
<p>Proudly built with <a href="https://github.com/sbrow/thor/">Thor</a> and <a
|
||||
href="https://edwardtufte.github.io/tufte-css/">Tufte CSS</a>
|
||||
</p>
|
||||
<p><small>©</small> {{now | format "2006" }} {{params..name}}</p>
|
||||
</footer>
|
||||
expected: |
|
||||
Invalid key path: consecutive dots
|
||||
--> <test>:11:60
|
||||
|
|
||||
9 | href="https://edwardtufte.github.io/tufte-css/">Tufte CSS</a>
|
||||
10 | </p>
|
||||
11 | <p><small>©</small> {{now | format "2006" }} {{params..name}}</p>
|
||||
| ^^ missing path name
|
||||
12 | </footer>
|
||||
|
|
||||
---
|
||||
name: Too many opening braces
|
||||
enable: true
|
||||
should: error
|
||||
input: |
|
||||
<footer>
|
||||
<menu>
|
||||
<a class="goto-top opacity-0" href="#">{{> icons/chevron_up}}</a>
|
||||
{{#params.social}}
|
||||
<a href="{{url}}" target="_blank" rel="noopener noreferrer me" title="{{name}}">{{>* icon}}</a>
|
||||
{{/params.social}}
|
||||
</menu>
|
||||
<p>Proudly built with <a href="https://github.com/sbrow/thor/">Thor</a> and <a
|
||||
href="https://edwardtufte.github.io/tufte-css/">Tufte CSS</a>
|
||||
</p>
|
||||
<p><small>©</small> {{{{now | format "2006" }}} {{params.author.name}}</p>
|
||||
</footer>
|
||||
expected: |
|
||||
Too many opening braces
|
||||
--> <test>:11:28
|
||||
|
|
||||
9 | href="https://edwardtufte.github.io/tufte-css/">Tufte CSS</a>
|
||||
10 | </p>
|
||||
11 | <p><small>©</small> {{{{now | format "2006" }}} {{params.author.name}}</p>
|
||||
| ^^^^ expected {{{, got {{{{
|
||||
12 | </footer>
|
||||
|
|
||||
---
|
||||
name: Too many closing braces
|
||||
enable: true
|
||||
should: error
|
||||
input: |
|
||||
<footer>
|
||||
<menu>
|
||||
<a class="goto-top opacity-0" href="#">{{> icons/chevron_up}}</a>
|
||||
{{#params.social}}
|
||||
<a href="{{url}}" target="_blank" rel="noopener noreferrer me" title="{{name}}">{{>* icon}}</a>
|
||||
{{/params.social}}
|
||||
</menu>
|
||||
<p>Proudly built with <a href="https://github.com/sbrow/thor/">Thor</a> and <a
|
||||
href="https://edwardtufte.github.io/tufte-css/">Tufte CSS</a>
|
||||
</p>
|
||||
<p><small>©</small> {{now | format "2006" }}}} {{params.author.name}}</p>
|
||||
</footer>
|
||||
expected: |
|
||||
Too many closing braces
|
||||
--> <test>:11:50
|
||||
|
|
||||
9 | href="https://edwardtufte.github.io/tufte-css/">Tufte CSS</a>
|
||||
10 | </p>
|
||||
11 | <p><small>©</small> {{now | format "2006" }}}} {{params.author.name}}</p>
|
||||
| ^^^^ expected }}, got }}}
|
||||
12 | </footer>
|
||||
|
|
||||
---
|
||||
# TODO: Implement
|
||||
name: Frontmatter missing closing quote on key
|
||||
enable: false
|
||||
should: warn
|
||||
input: |
|
||||
{
|
||||
"title: Docs"
|
||||
}
|
||||
|
||||
[TOC]
|
||||
|
||||
## Introduction
|
||||
expected: 'TODO:'
|
||||
actual: |
|
||||
[ERROR] --- [42:parse_frontmatter()] failed to parse frontmatter JSON: Expected_Colon_After_Key
|
||||
---
|
||||
# TODO: Implement
|
||||
name: Fronmatter missing opening quote on value
|
||||
should: warn
|
||||
enable: false
|
||||
input: |
|
||||
{
|
||||
"title": Docs"
|
||||
}
|
||||
|
||||
[TOC]
|
||||
|
||||
## Introduction
|
||||
expected: 'detailed diagnostic pointing to the point of failure and suggesting the addition of a quote'
|
||||
actual: Nothing. The page compiles with no warnings or errors
|
||||
---
|
||||
name: No error when missing index page
|
||||
enable: true
|
||||
should: error
|
||||
expected: 'Your site has no index page! Please create an index.md or index.html file in ./content/'
|
||||
---
|
||||
# FIXME: Doesn't work properly
|
||||
name: format pipe with no date format set
|
||||
enable: true
|
||||
should: warn
|
||||
input: '{{ now | format }}'
|
||||
expected: |
|
||||
no date format configured — set date.format in thor.json or specify a format, e.g. {{key | format "2 Jan 2006"}}
|
||||
--> <test>:1:10
|
||||
|
|
||||
1 | {{now | format}}
|
||||
| ^^^^^^ defaulting to "2 Jan 2006"
|
||||
---
|
||||
# TODO: called First/last, but only tests first
|
||||
name: first/last with zero argument
|
||||
enable: true
|
||||
should: error
|
||||
input: |
|
||||
<ul>{{#items | first 0}}<li>{{.}}</li>{{/items}}</ul>
|
||||
expected: |
|
||||
argument must not be zero
|
||||
--> <test>:1:5
|
||||
|
|
||||
1 | <ul>{{#items | first 0}}<li>{{.}}</li>{{/items}}</ul>
|
||||
| ^^^^^^^
|
||||
|
|
||||
---
|
||||
# TODO: called First/last, but only tests first
|
||||
name: first/last with negative argument
|
||||
enable: true
|
||||
should: warn
|
||||
input: |
|
||||
<ul>{{#items | first -3}}<li>{{.}}</li>{{/items}}</ul>
|
||||
expected: |
|
||||
first -3 is equivalent to last 3
|
||||
--> <test>:1:5
|
||||
|
|
||||
1 | <ul>{{#items | first -3}}<li>{{.}}</li>{{/items}}</ul>
|
||||
| ^^^^^^^^ consider using the clearer form
|
||||
|
|
||||
---
|
||||
# TODO: called First/last, but only tests first
|
||||
name: first/last on string with no argument
|
||||
# enable: true
|
||||
input: '{{word | first}}'
|
||||
should: warn
|
||||
expected: |
|
||||
defaulting to n=1 for string
|
||||
--> <test>:1:1
|
||||
|
|
||||
1 | {{word | first}}
|
||||
| ^^^^^ consider specifying n explicitly
|
||||
|
|
||||
---
|
||||
name: "first succeeds on params.author.name"
|
||||
enable: true
|
||||
input: '{{ params.author.name | first 3 }}'
|
||||
should: ok
|
||||
expected: "foo"
|
||||
---
|
||||
# TODO: called First/last, but only tests first
|
||||
name: "first/last in partial"
|
||||
enable: true
|
||||
input: "{{> footer }}"
|
||||
should: error
|
||||
expected: |
|
||||
first -3 is equivalent to last 3
|
||||
--> /home/spencer/github.com/sbrow.github.io/layouts/partials/footer.html:1:1
|
||||
|
|
||||
1 | <footer>
|
||||
| ^ consider using the clearer form
|
||||
2 | <menu>
|
||||
3 | <a class="goto-top opacity-0" href="#">{{> icons/chevron_up}}</a>
|
||||
|
|
||||
---
|
||||
name: "Pipes are ignored in comments"
|
||||
enable: true
|
||||
should: ok
|
||||
input: 'Hello, {{! now | format "2006" }}'
|
||||
expected: 'Hello, '
|
||||
Reference in New Issue
Block a user