diff options
author | s9105947 <80697868+s9105947@users.noreply.github.com> | 2022-03-22 08:36:44 +0000 |
---|---|---|
committer | s9105947 <80697868+s9105947@users.noreply.github.com> | 2022-03-22 08:44:01 +0000 |
commit | faa9f2764ee5ec6c296a62b05b7e3a1b0f9e1d3b (patch) | |
tree | a46dbf918ee6aa035702b40f9f7d48615ec3019d | |
parent | b2aeb3c283de931a7004b5f7a2cb394b89382369 (diff) | |
download | mustache-spec-faa9f2764ee5ec6c296a62b05b7e3a1b0f9e1d3b.tar.gz |
add test: comment content colliding with variable
Currently, an implementation treating comments as undefined variables
successfully passes all tests, because both undefined variables and
comments render to empty string.
This clarifies the behavior: A comment MUST NOT render into anything,
under any circumstances. This includes the case where a variable with
the same name as the comment content is defined.
The test data is designed in a way to trigger any possible name
collision, including white spaces, a leading exclamation mark (!).
-rw-r--r-- | specs/comments.json | 12 | ||||
-rw-r--r-- | specs/comments.yml | 6 |
2 files changed, 18 insertions, 0 deletions
diff --git a/specs/comments.json b/specs/comments.json index 60a4929..924ed46 100644 --- a/specs/comments.json +++ b/specs/comments.json @@ -89,6 +89,18 @@ }, "template": "12345 {{! Comment Block! }} 67890", "expected": "12345 67890" + }, + { + "name": "Variable Name Collision", + "desc": "Comments must never render, even if variable with same name exists.", + "data": { + "! comment": 1, + "! comment ": 2, + "!comment": 3, + "comment": 4 + }, + "template": "comments never show: >{{! comment }}<", + "expected": "comments never show: ><" } ] } diff --git a/specs/comments.yml b/specs/comments.yml index 7b14c7f..3bad09f 100644 --- a/specs/comments.yml +++ b/specs/comments.yml @@ -101,3 +101,9 @@ tests: data: { } template: '12345 {{! Comment Block! }} 67890' expected: '12345 67890' + + - name: Variable Name Collision + desc: Comments must never render, even if variable with same name exists. + data: { '! comment': 1, '! comment ': 2, '!comment': 3, 'comment': 4} + template: 'comments never show: >{{! comment }}<' + expected: 'comments never show: ><' |