code.t 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. . tests/functions.sh
  2. title "code blocks"
  3. rc=0
  4. MARKDOWN_FLAGS=
  5. try 'format for code block html' \
  6. ' this is
  7. code' \
  8. '<pre><code>this is
  9. code
  10. </code></pre>'
  11. try 'mismatched backticks' '```tick``' '<p><code>`tick</code></p>'
  12. try 'mismatched backticks(2)' '``tick```' '<p>``tick```</p>'
  13. try 'unclosed single backtick' '`hi there' '<p>`hi there</p>'
  14. try 'unclosed double backtick' '``hi there' '<p>``hi there</p>'
  15. try 'triple backticks' '```hi there```' '<p><code>hi there</code></p>'
  16. try 'quadruple backticks' '````hi there````' '<p><code>hi there</code></p>'
  17. try 'remove space around code' '`` hi there ``' '<p><code>hi there</code></p>'
  18. try 'code containing backticks' '`` a```b ``' '<p><code>a```b</code></p>'
  19. try 'backslash before backtick' '`a\`' '<p><code>a\</code></p>'
  20. try '`>`' '`>`' '<p><code>&gt;</code></p>'
  21. try '`` ` ``' '`` ` ``' '<p><code>`</code></p>'
  22. try '````` ``` `' '````` ``` `' '<p><code>``</code> `</p>'
  23. try '````` ` ```' '````` ` ```' '<p><code>`` `</code></p>'
  24. try 'backslashes in code(1)' ' printf "%s: \n", $1;' \
  25. '<pre><code>printf "%s: \n", $1;
  26. </code></pre>'
  27. try 'backslashes in code(2)' '`printf "%s: \n", $1;`' \
  28. '<p><code>printf "%s: \n", $1;</code></p>'
  29. try 'fenced code disabled backtick' \
  30. '```
  31. unrecognized code!
  32. ```' \
  33. '<p>```</p>
  34. <p>unrecognized code!
  35. ```</p>'
  36. # no <pre/> proves it’s the inline variant of `code` delimitation
  37. try 'fenced code disabled backtick as inline code' \
  38. '```
  39. inline code?
  40. ```' \
  41. '<p><code>
  42. inline code?
  43. </code></p>'
  44. try 'fenced code disabled tilde' \
  45. '~~~
  46. unrecognized code!
  47. ~~~' \
  48. '<p>~~~</p>
  49. <p>unrecognized code!
  50. ~~~</p>'
  51. try -ffencedcode 'fenced code block with blank lines' \
  52. '~~~
  53. code!
  54. still code!
  55. ~~~' \
  56. '<pre><code>code!
  57. still code!
  58. </code></pre>'
  59. try -ffencedcode 'fenced code block' \
  60. '~~~
  61. code!
  62. ~~~' \
  63. '<pre><code>code!
  64. </code></pre>'
  65. try -ffencedcode 'fenced code block in list' \
  66. '1. ~~~
  67. code block
  68. ~~~' \
  69. '<ol>
  70. <li><pre><code>code block
  71. </code></pre></li>
  72. </ol>'
  73. try -ffencedcode 'fenced code block in blockquote' \
  74. '>~~~
  75. code
  76. ~~~' \
  77. '<blockquote><pre><code>code
  78. </code></pre></blockquote>'
  79. try -ffencedcode 'unterminated fenced code block' \
  80. '~~~
  81. code' \
  82. '<p>~~~
  83. code</p>'
  84. try -ffencedcode 'fenced code block with tildes' \
  85. '~~~~~
  86. ~~~
  87. code with tildes
  88. ~~~
  89. ~~~~~' \
  90. '<pre><code>~~~
  91. code with tildes
  92. ~~~
  93. </code></pre>'
  94. try -ffencedcode 'paragraph with trailing fenced block' \
  95. 'text text text
  96. text text text
  97. ~~~
  98. code code code?
  99. ~~~' \
  100. '<p>text text text
  101. text text text
  102. ~~~
  103. code code code?
  104. ~~~</p>'
  105. try -ffencedcode 'fenced code blocks with backtick delimiters' \
  106. '```
  107. code
  108. ```' \
  109. '<pre><code>code
  110. </code></pre>'
  111. try -ffencedcode 'fenced code block with mismatched delimters' \
  112. '```
  113. code
  114. ~~~' \
  115. '<p>```
  116. code
  117. ~~~</p>'
  118. try -ffencedcode 'fenced code block with lang attribute' \
  119. '```lang
  120. code
  121. ```' \
  122. '<pre><code class="lang">code
  123. </code></pre>'
  124. try -ffencedcode 'fenced code block with lang-name attribute' \
  125. '```lang-name
  126. code
  127. ```' \
  128. '<pre><code class="lang-name">code
  129. </code></pre>'
  130. try -ffencedcode 'fenced code block with lang_name attribute' \
  131. '```lang_name
  132. code
  133. ```' \
  134. '<pre><code class="lang_name">code
  135. </code></pre>'
  136. try -ffencedcode 'fenced code block with lang attribute and space' \
  137. '``` lang
  138. code
  139. ```' \
  140. '<pre><code class="lang">code
  141. </code></pre>'
  142. try -ffencedcode 'fenced code block with lang attribute and multiple spaces' \
  143. '``` lang
  144. code
  145. ```' \
  146. '<pre><code class="lang">code
  147. </code></pre>'
  148. try -ffencedcode 'fenced code block with lang-name attribute and space' \
  149. '``` lang-name
  150. code
  151. ```' \
  152. '<pre><code class="lang-name">code
  153. </code></pre>'
  154. try -ffencedcode 'fenced code block with lang_name attribute and space' \
  155. '``` lang_name
  156. code
  157. ```' \
  158. '<pre><code class="lang_name">code
  159. </code></pre>'
  160. summary $0
  161. exit $rc