djlint 1.30.0 → 1.30.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/package.json +3 -2
  2. package/.coveragerc +0 -9
  3. package/.editorconfig +0 -21
  4. package/.flake8 +0 -0
  5. package/.github/FUNDING.yml +0 -2
  6. package/.github/ISSUE_TEMPLATE/config.yml +0 -6
  7. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -19
  8. package/.github/ISSUE_TEMPLATE/formatter_but_report.md +0 -30
  9. package/.github/ISSUE_TEMPLATE/linter_bug_report.md +0 -34
  10. package/.github/ISSUE_TEMPLATE/translation.md +0 -14
  11. package/.github/config.yml +0 -4
  12. package/.github/pull_request_template.md +0 -10
  13. package/.github/workflows/cancel.yml +0 -17
  14. package/.github/workflows/demo.yml +0 -98
  15. package/.github/workflows/issues.yml +0 -23
  16. package/.github/workflows/linkcheck.yaml +0 -21
  17. package/.github/workflows/lint.yml +0 -25
  18. package/.github/workflows/release.yml +0 -57
  19. package/.github/workflows/test.yml +0 -85
  20. package/.pre-commit-config.yaml +0 -45
  21. package/.pre-commit-hooks.yaml +0 -71
  22. package/.prettierignore +0 -7
  23. package/.prettierrc +0 -11
  24. package/.releaserc +0 -16
  25. package/CHANGELOG.md +0 -13
  26. package/MANIFEST.in +0 -2
  27. package/build_demo.sh +0 -17
  28. package/docs/.eleventy.js +0 -425
  29. package/docs/.eleventyignore +0 -2
  30. package/docs/.prettierignore +0 -3
  31. package/docs/.prettierrc +0 -11
  32. package/docs/package.json +0 -73
  33. package/docs/readme.md +0 -17
  34. package/docs/src/_data/configuration.json +0 -646
  35. package/docs/src/_data/eleventyComputed.js +0 -22
  36. package/docs/src/_data/i18n/index.js +0 -159
  37. package/docs/src/_data/js.js +0 -7
  38. package/docs/src/_data/locales.js +0 -17
  39. package/docs/src/_data/site.json +0 -8
  40. package/docs/src/_includes/demo.njk +0 -157
  41. package/docs/src/_includes/docs_layout.njk +0 -34
  42. package/docs/src/_includes/foot.njk +0 -26
  43. package/docs/src/_includes/index.njk +0 -187
  44. package/docs/src/_includes/languages_layout.njk +0 -11
  45. package/docs/src/_includes/layout.njk +0 -111
  46. package/docs/src/_includes/nav.njk +0 -85
  47. package/docs/src/_utils/minify-html.js +0 -14
  48. package/docs/src/_utils/rollupper.js +0 -91
  49. package/docs/src/_utils/scripts.11ty.js +0 -27
  50. package/docs/src/demo.njk +0 -4
  51. package/docs/src/docs/best-practices.md +0 -78
  52. package/docs/src/docs/changelog.md +0 -452
  53. package/docs/src/docs/configuration.md +0 -145
  54. package/docs/src/docs/docs.json +0 -4
  55. package/docs/src/docs/formatter.md +0 -82
  56. package/docs/src/docs/getting-started.md +0 -126
  57. package/docs/src/docs/ignoring-code.md +0 -75
  58. package/docs/src/docs/integrations.md +0 -120
  59. package/docs/src/docs/languages/angular.md +0 -31
  60. package/docs/src/docs/languages/django.md +0 -40
  61. package/docs/src/docs/languages/golang.md +0 -31
  62. package/docs/src/docs/languages/handlebars.md +0 -31
  63. package/docs/src/docs/languages/jinja.md +0 -39
  64. package/docs/src/docs/languages/languages.json +0 -3
  65. package/docs/src/docs/languages/mustache.md +0 -31
  66. package/docs/src/docs/languages/nunjucks.md +0 -39
  67. package/docs/src/docs/languages/twig.md +0 -41
  68. package/docs/src/docs/linter.md +0 -199
  69. package/docs/src/fr/demo.njk +0 -4
  70. package/docs/src/fr/docs/best-practices.md +0 -78
  71. package/docs/src/fr/docs/changelog.md +0 -452
  72. package/docs/src/fr/docs/configuration.md +0 -144
  73. package/docs/src/fr/docs/docs.json +0 -3
  74. package/docs/src/fr/docs/formatter.md +0 -83
  75. package/docs/src/fr/docs/getting-started.md +0 -127
  76. package/docs/src/fr/docs/ignoring-code.md +0 -75
  77. package/docs/src/fr/docs/integrations.md +0 -100
  78. package/docs/src/fr/docs/languages/angular.md +0 -31
  79. package/docs/src/fr/docs/languages/django.md +0 -31
  80. package/docs/src/fr/docs/languages/golang.md +0 -31
  81. package/docs/src/fr/docs/languages/handlebars.md +0 -31
  82. package/docs/src/fr/docs/languages/jinja.md +0 -31
  83. package/docs/src/fr/docs/languages/languages.json +0 -3
  84. package/docs/src/fr/docs/languages/mustache.md +0 -31
  85. package/docs/src/fr/docs/languages/nunjucks.md +0 -31
  86. package/docs/src/fr/docs/languages/twig.md +0 -31
  87. package/docs/src/fr/docs/linter.md +0 -207
  88. package/docs/src/fr/fr.json +0 -4
  89. package/docs/src/fr/index.njk +0 -4
  90. package/docs/src/index.njk +0 -4
  91. package/docs/src/lib/generate-content-hash.js +0 -13
  92. package/docs/src/robots.txt +0 -4
  93. package/docs/src/ru/demo.njk +0 -4
  94. package/docs/src/ru/docs/best-practices.md +0 -78
  95. package/docs/src/ru/docs/changelog.md +0 -453
  96. package/docs/src/ru/docs/configuration.md +0 -142
  97. package/docs/src/ru/docs/docs.json +0 -3
  98. package/docs/src/ru/docs/formatter.md +0 -82
  99. package/docs/src/ru/docs/getting-started.md +0 -127
  100. package/docs/src/ru/docs/ignoring-code.md +0 -75
  101. package/docs/src/ru/docs/integrations.md +0 -100
  102. package/docs/src/ru/docs/languages/angular.md +0 -31
  103. package/docs/src/ru/docs/languages/django.md +0 -31
  104. package/docs/src/ru/docs/languages/golang.md +0 -31
  105. package/docs/src/ru/docs/languages/handlebars.md +0 -31
  106. package/docs/src/ru/docs/languages/jinja.md +0 -31
  107. package/docs/src/ru/docs/languages/languages.json +0 -3
  108. package/docs/src/ru/docs/languages/mustache.md +0 -31
  109. package/docs/src/ru/docs/languages/nunjucks.md +0 -31
  110. package/docs/src/ru/docs/languages/twig.md +0 -31
  111. package/docs/src/ru/docs/linter.md +0 -126
  112. package/docs/src/ru/index.njk +0 -4
  113. package/docs/src/ru/ru.json +0 -4
  114. package/docs/src/sitemap.njk +0 -16
  115. package/docs/src/static/css/site.scss +0 -467
  116. package/docs/src/static/font/fontawesome/stylesheet.scss +0 -78
  117. package/docs/src/static/img/apple-touch-icon.png +0 -0
  118. package/docs/src/static/img/demo-min.gif +0 -0
  119. package/docs/src/static/img/demo.gif +0 -0
  120. package/docs/src/static/img/demo.webm +0 -0
  121. package/docs/src/static/img/favicon-16x16.png +0 -0
  122. package/docs/src/static/img/favicon-32x32.png +0 -0
  123. package/docs/src/static/img/favicon.ico +0 -0
  124. package/docs/src/static/img/icon-square.indd +0 -0
  125. package/docs/src/static/img/icon-square.png +0 -0
  126. package/docs/src/static/img/icon.png +0 -0
  127. package/docs/src/static/img/logo-192x192.png +0 -0
  128. package/docs/src/static/img/logo-512x512.png +0 -0
  129. package/docs/src/static/img/logos/angular.png +0 -0
  130. package/docs/src/static/img/logos/django.png +0 -0
  131. package/docs/src/static/img/logos/golang.png +0 -0
  132. package/docs/src/static/img/logos/handlebars.png +0 -0
  133. package/docs/src/static/img/logos/jinja.png +0 -0
  134. package/docs/src/static/img/logos/mustache.png +0 -0
  135. package/docs/src/static/img/logos/nunjucks.png +0 -0
  136. package/docs/src/static/img/logos/twig.png +0 -0
  137. package/docs/src/static/img/old_demo.gif +0 -0
  138. package/docs/src/static/img/style.css +0 -122
  139. package/docs/src/static/js/animate.js +0 -69
  140. package/docs/src/static/js/editor.js +0 -171
  141. package/docs/src/static/js/hamburger.js +0 -19
  142. package/docs/src/static/js/modal.js +0 -47
  143. package/docs/src/static/js/worker.js +0 -142
  144. package/docs/src/static/py/EditorConfig-99-py3-none-any.whl +0 -0
  145. package/docs/src/static/py/PyYAML-99-py3-none-any.whl +0 -0
  146. package/docs/src/static/py/click-99-py3-none-any.whl +0 -0
  147. package/docs/src/static/py/colorama-99-py3-none-any.whl +0 -0
  148. package/docs/src/static/py/cssbeautifier-99-py3-none-any.whl +0 -0
  149. package/docs/src/static/py/djlint-99-py3-none-any.whl +0 -0
  150. package/docs/src/static/py/html_tag_names-99-py3-none-any.whl +0 -0
  151. package/docs/src/static/py/html_void_elements-99-py3-none-any.whl +0 -0
  152. package/docs/src/static/py/jsbeautifier-99-py3-none-any.whl +0 -0
  153. package/docs/src/static/py/json5-99-py3-none-any.whl +0 -0
  154. package/docs/src/static/py/pathspec-99-py3-none-any.whl +0 -0
  155. package/docs/src/static/py/regex-2023.5.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +0 -0
  156. package/docs/src/static/py/six-1.16.0-py2.py3-none-any.whl +0 -0
  157. package/docs/src/static/py/tomli-2.0.1-py3-none-any.whl +0 -0
  158. package/docs/src/static/py/tqdm-4.65.0-py3-none-any.whl +0 -0
  159. package/icon.xcf +0 -0
  160. package/poetry.lock +0 -835
  161. package/pyproject.toml +0 -100
  162. package/renovate.json +0 -44
  163. package/scripts/updateVersion.js +0 -16
  164. package/src/djlint/__init__.py +0 -451
  165. package/src/djlint/__main__.py +0 -4
  166. package/src/djlint/formatter/__init__.py +0 -1
  167. package/src/djlint/formatter/attributes.py +0 -212
  168. package/src/djlint/formatter/compress.py +0 -64
  169. package/src/djlint/formatter/condense.py +0 -221
  170. package/src/djlint/formatter/css.py +0 -60
  171. package/src/djlint/formatter/expand.py +0 -111
  172. package/src/djlint/formatter/indent.py +0 -418
  173. package/src/djlint/formatter/js.py +0 -58
  174. package/src/djlint/helpers.py +0 -321
  175. package/src/djlint/lint.py +0 -128
  176. package/src/djlint/output.py +0 -220
  177. package/src/djlint/reformat.py +0 -63
  178. package/src/djlint/rules/H025.py +0 -65
  179. package/src/djlint/rules.yaml +0 -279
  180. package/src/djlint/settings.py +0 -969
  181. package/src/djlint/src.py +0 -91
  182. package/tests/__init__.py +0 -0
  183. package/tests/conftest.py +0 -239
  184. package/tests/test_cli.py +0 -71
  185. package/tests/test_config/__init__.py +0 -0
  186. package/tests/test_config/test_blank_line_after_tag.py +0 -135
  187. package/tests/test_config/test_blank_line_before_tag.py +0 -141
  188. package/tests/test_config/test_close_void_tags.py +0 -31
  189. package/tests/test_config/test_custom_blocks.py +0 -56
  190. package/tests/test_config/test_custom_html.py +0 -45
  191. package/tests/test_config/test_djlintrc/.djlintrc +0 -38
  192. package/tests/test_config/test_djlintrc/__init__.py +0 -0
  193. package/tests/test_config/test_djlintrc/test_config.py +0 -44
  194. package/tests/test_config/test_djlintrc_custom/.djlint-cust +0 -38
  195. package/tests/test_config/test_djlintrc_custom/.djlintrc +0 -2
  196. package/tests/test_config/test_djlintrc_custom/__init__.py +0 -0
  197. package/tests/test_config/test_djlintrc_custom/test_config.py +0 -48
  198. package/tests/test_config/test_excludes/__init__.py +0 -0
  199. package/tests/test_config/test_excludes/excluded.html +0 -1
  200. package/tests/test_config/test_excludes/foo/excluded.html +0 -1
  201. package/tests/test_config/test_excludes/html.html +0 -1
  202. package/tests/test_config/test_excludes/pyproject.toml +0 -3
  203. package/tests/test_config/test_excludes/test_config.py +0 -30
  204. package/tests/test_config/test_extension/__init__.py +0 -0
  205. package/tests/test_config/test_extension/html.test +0 -1
  206. package/tests/test_config/test_extension/pyproject.toml +0 -3
  207. package/tests/test_config/test_extension/test_config.py +0 -27
  208. package/tests/test_config/test_files/.djlintrc_global +0 -9
  209. package/tests/test_config/test_files/test.html +0 -3
  210. package/tests/test_config/test_files/test_config.py +0 -123
  211. package/tests/test_config/test_files/test_two.html +0 -1
  212. package/tests/test_config/test_format_attribute_template_tags.py +0 -280
  213. package/tests/test_config/test_format_css.py +0 -197
  214. package/tests/test_config/test_format_js.py +0 -220
  215. package/tests/test_config/test_gitignore/__init__.py +0 -0
  216. package/tests/test_config/test_gitignore/html_one.html +0 -1
  217. package/tests/test_config/test_gitignore/html_two.html +0 -1
  218. package/tests/test_config/test_gitignore/test_config.py +0 -142
  219. package/tests/test_config/test_ignore/__init__.py +0 -0
  220. package/tests/test_config/test_ignore/html.html +0 -1
  221. package/tests/test_config/test_ignore/html_two.html +0 -12
  222. package/tests/test_config/test_ignore/pyproject.toml +0 -3
  223. package/tests/test_config/test_ignore/test_config.py +0 -32
  224. package/tests/test_config/test_ignore_blocks.py +0 -45
  225. package/tests/test_config/test_ignore_case.py +0 -39
  226. package/tests/test_config/test_indent.py +0 -63
  227. package/tests/test_config/test_linter_output_format/__init__.py +0 -0
  228. package/tests/test_config/test_linter_output_format/html-one.html +0 -1
  229. package/tests/test_config/test_linter_output_format/html-two.html +0 -1
  230. package/tests/test_config/test_linter_output_format/pyproject.toml +0 -3
  231. package/tests/test_config/test_linter_output_format/test_config.py +0 -34
  232. package/tests/test_config/test_max_attribute_length.py +0 -100
  233. package/tests/test_config/test_max_line_length.py +0 -94
  234. package/tests/test_config/test_per_file_ignores/__init__.py +0 -0
  235. package/tests/test_config/test_per_file_ignores/html.html +0 -2
  236. package/tests/test_config/test_per_file_ignores/pyproject.toml +0 -2
  237. package/tests/test_config/test_per_file_ignores/test_config.py +0 -25
  238. package/tests/test_config/test_pragmas/__init__.py +0 -0
  239. package/tests/test_config/test_pragmas/html_five.html +0 -2
  240. package/tests/test_config/test_pragmas/html_four.html +0 -5
  241. package/tests/test_config/test_pragmas/html_one.html +0 -1
  242. package/tests/test_config/test_pragmas/html_six.html +0 -2
  243. package/tests/test_config/test_pragmas/html_three.html +0 -4
  244. package/tests/test_config/test_pragmas/html_two.html +0 -2
  245. package/tests/test_config/test_pragmas/pyproject.toml +0 -3
  246. package/tests/test_config/test_pragmas/test_config.py +0 -142
  247. package/tests/test_config/test_preserve_blank_lines.py +0 -109
  248. package/tests/test_config/test_preserve_leading_space.py +0 -159
  249. package/tests/test_config/test_profile/__init__.py +0 -0
  250. package/tests/test_config/test_profile/html.html +0 -2
  251. package/tests/test_config/test_profile/pyproject.toml +0 -3
  252. package/tests/test_config/test_profile/test_config.py +0 -64
  253. package/tests/test_config/test_pyproject/__init__.py +0 -0
  254. package/tests/test_config/test_pyproject/blank.html +0 -0
  255. package/tests/test_config/test_pyproject/pyproject.toml +0 -36
  256. package/tests/test_config/test_pyproject/test_config.py +0 -44
  257. package/tests/test_django/__init__.py +0 -0
  258. package/tests/test_django/test_asset.py +0 -32
  259. package/tests/test_django/test_autoescape.py +0 -25
  260. package/tests/test_django/test_block.py +0 -29
  261. package/tests/test_django/test_blocktrans.py +0 -236
  262. package/tests/test_django/test_blocktrans_trimmed.py +0 -283
  263. package/tests/test_django/test_comments.py +0 -164
  264. package/tests/test_django/test_filter.py +0 -30
  265. package/tests/test_django/test_for.py +0 -34
  266. package/tests/test_django/test_if.py +0 -34
  267. package/tests/test_django/test_ifchanged.py +0 -37
  268. package/tests/test_django/test_include.py +0 -24
  269. package/tests/test_django/test_load.py +0 -24
  270. package/tests/test_django/test_quoted.py +0 -34
  271. package/tests/test_django/test_spaceless.py +0 -30
  272. package/tests/test_django/test_tag_spaces.py +0 -35
  273. package/tests/test_django/test_templatetag.py +0 -40
  274. package/tests/test_django/test_verbatim.py +0 -24
  275. package/tests/test_django/test_with.py +0 -32
  276. package/tests/test_djlint/-.html +0 -1
  277. package/tests/test_djlint/__init__.py +0 -0
  278. package/tests/test_djlint/bad.html +0 -6
  279. package/tests/test_djlint/bad.html.dj +0 -23
  280. package/tests/test_djlint/bad.html.dj2 +0 -2
  281. package/tests/test_djlint/multiple_files/a/a.html +0 -1
  282. package/tests/test_djlint/multiple_files/b/b1.html +0 -1
  283. package/tests/test_djlint/multiple_files/b/b2.html +0 -1
  284. package/tests/test_djlint/test_djlint.py +0 -242
  285. package/tests/test_golang/__init__.py +0 -0
  286. package/tests/test_golang/test_if.py +0 -24
  287. package/tests/test_golang/test_range.py +0 -24
  288. package/tests/test_handlebars/__init__.py +0 -0
  289. package/tests/test_handlebars/test_each.py +0 -34
  290. package/tests/test_handlebars/test_else.py +0 -24
  291. package/tests/test_handlebars/test_with.py +0 -24
  292. package/tests/test_html/__init__.py +0 -0
  293. package/tests/test_html/test_alpinejs.py +0 -65
  294. package/tests/test_html/test_attributes.py +0 -935
  295. package/tests/test_html/test_aurelia.py +0 -24
  296. package/tests/test_html/test_basics.py +0 -905
  297. package/tests/test_html/test_bracket_same_line.py +0 -177
  298. package/tests/test_html/test_case.py +0 -81
  299. package/tests/test_html/test_cdata.py +0 -34
  300. package/tests/test_html/test_comments.py +0 -333
  301. package/tests/test_html/test_css.py +0 -193
  302. package/tests/test_html/test_doctype_declarations.py +0 -202
  303. package/tests/test_html/test_ignored.py +0 -193
  304. package/tests/test_html/test_interpolation.py +0 -56
  305. package/tests/test_html/test_line_break_after_multiline_tag.py +0 -95
  306. package/tests/test_html/test_next_line_empty.py +0 -53
  307. package/tests/test_html/test_selfclosing.py +0 -55
  308. package/tests/test_html/test_single_attribute_per_line.py +0 -87
  309. package/tests/test_html/test_srcset.py +0 -43
  310. package/tests/test_html/test_svg.py +0 -104
  311. package/tests/test_html/test_symbol_entities.py +0 -34
  312. package/tests/test_html/test_tag_code.py +0 -24
  313. package/tests/test_html/test_tag_dd.py +0 -24
  314. package/tests/test_html/test_tag_details_summary.py +0 -24
  315. package/tests/test_html/test_tag_dt.py +0 -24
  316. package/tests/test_html/test_tag_fig_caption.py +0 -29
  317. package/tests/test_html/test_tag_hr.py +0 -29
  318. package/tests/test_html/test_tag_picture.py +0 -32
  319. package/tests/test_html/test_tag_pre.py +0 -45
  320. package/tests/test_html/test_tag_script.py +0 -516
  321. package/tests/test_html/test_tag_small.py +0 -24
  322. package/tests/test_html/test_tag_span.py +0 -119
  323. package/tests/test_html/test_tag_textarea.py +0 -82
  324. package/tests/test_html/test_tags.py +0 -842
  325. package/tests/test_html/test_text.py +0 -34
  326. package/tests/test_html/test_whitespace.py +0 -477
  327. package/tests/test_html/test_yaml.py +0 -156
  328. package/tests/test_jinja/__init__.py +0 -0
  329. package/tests/test_jinja/test_call.py +0 -34
  330. package/tests/test_jinja/test_parenthesis.py +0 -24
  331. package/tests/test_linter/__init__.py +0 -0
  332. package/tests/test_linter/test_custom_rules/.djlint_rules.yaml +0 -6
  333. package/tests/test_linter/test_custom_rules/__init__.py +0 -0
  334. package/tests/test_linter/test_custom_rules/html.html +0 -1
  335. package/tests/test_linter/test_custom_rules/pyproject.toml +0 -1
  336. package/tests/test_linter/test_custom_rules/test_linter.py +0 -29
  337. package/tests/test_linter/test_custom_rules_bad/.djlint_rules.yaml +0 -24
  338. package/tests/test_linter/test_custom_rules_bad/__init__.py +0 -0
  339. package/tests/test_linter/test_custom_rules_bad/html.html +0 -1
  340. package/tests/test_linter/test_custom_rules_bad/pyproject.toml +0 -1
  341. package/tests/test_linter/test_custom_rules_bad/test_linter.py +0 -29
  342. package/tests/test_linter/test_django_linter.py +0 -476
  343. package/tests/test_linter/test_h005.py +0 -45
  344. package/tests/test_linter/test_h006.py +0 -81
  345. package/tests/test_linter/test_h007.py +0 -45
  346. package/tests/test_linter/test_h008.py +0 -60
  347. package/tests/test_linter/test_h009.py +0 -45
  348. package/tests/test_linter/test_h010.py +0 -44
  349. package/tests/test_linter/test_h037.py +0 -150
  350. package/tests/test_linter/test_ignore_rules.py +0 -45
  351. package/tests/test_linter/test_jinja_linter.py +0 -227
  352. package/tests/test_linter/test_linter.py +0 -691
  353. package/tests/test_linter/test_nunjucks_linter.py +0 -59
  354. package/tests/test_linter/test_python_module_rules/.djlint_rules.yaml +0 -4
  355. package/tests/test_linter/test_python_module_rules/__init__.py +0 -0
  356. package/tests/test_linter/test_python_module_rules/html_bad.html +0 -3
  357. package/tests/test_linter/test_python_module_rules/html_ok.html +0 -3
  358. package/tests/test_linter/test_python_module_rules/my_module.py +0 -32
  359. package/tests/test_linter/test_python_module_rules/pyproject.toml +0 -1
  360. package/tests/test_linter/test_python_module_rules/test_linter.py +0 -26
  361. package/tests/test_nunjucks/__init__.py +0 -0
  362. package/tests/test_nunjucks/test_functions.py +0 -94
  363. package/tests/test_nunjucks/test_macros.py +0 -41
  364. package/tests/test_nunjucks/test_set.py +0 -206
  365. package/tests/test_nunjucks/test_spaceless.py +0 -24
  366. package/tests/test_twig/__init__.py +0 -0
  367. package/tests/test_twig/test_comments.py +0 -51
  368. package/tox.ini +0 -48
@@ -1,81 +0,0 @@
1
- """Test linter code H006.
2
-
3
- poetry run pytest tests/test_linter/test_h006.py
4
- """
5
- import pytest
6
-
7
- from src.djlint.lint import linter
8
- from tests.conftest import lint_printer
9
-
10
- test_data = [
11
- pytest.param(
12
- ('<img alt="test"/>'),
13
- (
14
- [
15
- {
16
- "code": "H006",
17
- "line": "1:0",
18
- "match": '<img alt="test"/>',
19
- "message": "Img tag should have height and width attributes.",
20
- }
21
- ]
22
- ),
23
- id="one",
24
- ),
25
- pytest.param(
26
- (
27
- '{# [INFO][JINJA] I use syntax "{% if <img alt=""\n'
28
- ' if I want that something happened solely if "img" exists in the content of my articles #}\n'
29
- "\n"
30
- ' <script src="script.js" defer></script>\n'
31
- ),
32
- ([]),
33
- id="partial ignored",
34
- ),
35
- pytest.param(
36
- ("<img><img>"),
37
- (
38
- [
39
- {
40
- "code": "H006",
41
- "line": "1:0",
42
- "match": "<img>",
43
- "message": "Img tag should have height and width attributes.",
44
- },
45
- {
46
- "code": "H006",
47
- "line": "1:5",
48
- "match": "<img>",
49
- "message": "Img tag should have height and width attributes.",
50
- },
51
- {
52
- "code": "H013",
53
- "line": "1:0",
54
- "match": "<img>",
55
- "message": "Img tag should have an alt attribute.",
56
- },
57
- {
58
- "code": "H013",
59
- "line": "1:5",
60
- "match": "<img>",
61
- "message": "Img tag should have an alt attribute.",
62
- },
63
- ]
64
- ),
65
- id="test empty with two blocks",
66
- ),
67
- ]
68
-
69
-
70
- @pytest.mark.parametrize(("source", "expected"), test_data)
71
- def test_base(source, expected, basic_config):
72
- filename = "test.html"
73
- output = linter(basic_config, source, filename, filename)
74
-
75
- lint_printer(source, expected, output[filename])
76
-
77
- mismatch = list(filter(lambda x: x not in expected, output[filename])) + list(
78
- filter(lambda x: x not in output[filename], expected)
79
- )
80
-
81
- assert len(mismatch) == 0
@@ -1,45 +0,0 @@
1
- """Test linter code H007.
2
-
3
- poetry run pytest tests/test_linter/test_h007.py
4
- """
5
- import pytest
6
-
7
- from src.djlint.lint import linter
8
- from tests.conftest import lint_printer
9
-
10
- test_data = [
11
- pytest.param(
12
- ('<html lang="en">'),
13
- (
14
- [
15
- {
16
- "code": "H007",
17
- "line": "1:0",
18
- "match": "<html",
19
- "message": "<!DOCTYPE ... > should be present before the html tag.",
20
- },
21
- {
22
- "code": "H025",
23
- "line": "1:0",
24
- "match": '<html lang="en">',
25
- "message": "Tag seems to be an orphan.",
26
- },
27
- ]
28
- ),
29
- id="one",
30
- ),
31
- ]
32
-
33
-
34
- @pytest.mark.parametrize(("source", "expected"), test_data)
35
- def test_base(source, expected, basic_config):
36
- filename = "test.html"
37
- output = linter(basic_config, source, filename, filename)
38
-
39
- lint_printer(source, expected, output[filename])
40
-
41
- mismatch = list(filter(lambda x: x not in expected, output[filename])) + list(
42
- filter(lambda x: x not in output[filename], expected)
43
- )
44
-
45
- assert len(mismatch) == 0
@@ -1,60 +0,0 @@
1
- """Test linter code H008.
2
-
3
- poetry run pytest tests/test_linter/test_h008.py
4
- """
5
- import pytest
6
-
7
- from src.djlint.lint import linter
8
- from tests.conftest import lint_printer
9
-
10
- test_data = [
11
- pytest.param(
12
- ("<div class='test'>"),
13
- (
14
- [
15
- {
16
- "code": "H008",
17
- "line": "1:0",
18
- "match": "<div class='test'",
19
- "message": "Attributes should be double quoted.",
20
- },
21
- {
22
- "code": "H025",
23
- "line": "1:0",
24
- "match": "<div class='test'>",
25
- "message": "Tag seems to be an orphan.",
26
- },
27
- ]
28
- ),
29
- id="one",
30
- ),
31
- pytest.param(
32
- (
33
- '<link rel="stylesheet" href="styles.css" media="print" onload="this.media=\'all\'" media='
34
- "/>"
35
- ),
36
- ([]),
37
- id="one",
38
- ),
39
- pytest.param(
40
- (
41
- '<link rel="stylesheet" href="styles.css" media="print" onload="this.media=\'all\'"/>'
42
- ),
43
- ([]),
44
- id="one",
45
- ),
46
- ]
47
-
48
-
49
- @pytest.mark.parametrize(("source", "expected"), test_data)
50
- def test_base(source, expected, basic_config):
51
- filename = "test.html"
52
- output = linter(basic_config, source, filename, filename)
53
-
54
- lint_printer(source, expected, output[filename])
55
-
56
- mismatch = list(filter(lambda x: x not in expected, output[filename])) + list(
57
- filter(lambda x: x not in output[filename], expected)
58
- )
59
-
60
- assert len(mismatch) == 0
@@ -1,45 +0,0 @@
1
- """Test linter code H009.
2
-
3
- poetry run pytest tests/test_linter/test_h009.py
4
- """
5
- import pytest
6
-
7
- from src.djlint.lint import linter
8
- from tests.conftest import lint_printer
9
-
10
- test_data = [
11
- pytest.param(
12
- ("<H1>h1</H1>"),
13
- (
14
- [
15
- {
16
- "code": "H009",
17
- "line": "1:1",
18
- "match": "H1",
19
- "message": "Tag names should be lowercase.",
20
- },
21
- {
22
- "code": "H009",
23
- "line": "1:7",
24
- "match": "/H1",
25
- "message": "Tag names should be lowercase.",
26
- },
27
- ]
28
- ),
29
- id="opening",
30
- ),
31
- ]
32
-
33
-
34
- @pytest.mark.parametrize(("source", "expected"), test_data)
35
- def test_base(source, expected, basic_config):
36
- filename = "test.html"
37
- output = linter(basic_config, source, filename, filename)
38
-
39
- lint_printer(source, expected, output[filename])
40
-
41
- mismatch = list(filter(lambda x: x not in expected, output[filename])) + list(
42
- filter(lambda x: x not in output[filename], expected)
43
- )
44
-
45
- assert len(mismatch) == 0
@@ -1,44 +0,0 @@
1
- """Test linter code H010.
2
-
3
- poetry run pytest tests/test_linter/test_h010.py
4
- """
5
- import pytest
6
-
7
- from src.djlint.lint import linter
8
- from tests.conftest import lint_printer
9
-
10
- test_data = [
11
- pytest.param(
12
- ('<img HEIGHT="12" Width="3" alT="none" />'),
13
- (
14
- [
15
- {
16
- "code": "H010",
17
- "line": "1:0",
18
- "match": "<img HEIGHT=",
19
- "message": "Attribute names should be lowercase.",
20
- }
21
- ]
22
- ),
23
- id="opening",
24
- ),
25
- pytest.param(
26
- ("<li>ID=username</li>"),
27
- ([]),
28
- id="opening",
29
- ),
30
- ]
31
-
32
-
33
- @pytest.mark.parametrize(("source", "expected"), test_data)
34
- def test_base(source, expected, basic_config):
35
- filename = "test.html"
36
- output = linter(basic_config, source, filename, filename)
37
-
38
- lint_printer(source, expected, output[filename])
39
-
40
- mismatch = list(filter(lambda x: x not in expected, output[filename])) + list(
41
- filter(lambda x: x not in output[filename], expected)
42
- )
43
-
44
- assert len(mismatch) == 0
@@ -1,150 +0,0 @@
1
- """Test twig comment tags.
2
-
3
- poetry run pytest tests/test_linter/test_h037.py
4
- """
5
- import pytest
6
-
7
- from src.djlint.lint import linter
8
- from tests.conftest import lint_printer
9
-
10
- test_data = [
11
- pytest.param(
12
- ('<br class="a" id="asdf" class="b" />'),
13
- (
14
- [
15
- {
16
- "code": "H037",
17
- "line": "1:4",
18
- "match": "class",
19
- "message": "Duplicate attribute found.",
20
- }
21
- ]
22
- ),
23
- id="one",
24
- ),
25
- pytest.param(
26
- ('<div data-class="a" id="asdf" data-class="b"></div>'),
27
- (
28
- [
29
- {
30
- "code": "H037",
31
- "line": "1:5",
32
- "match": "data-class",
33
- "message": "Duplicate attribute found.",
34
- }
35
- ]
36
- ),
37
- id="two",
38
- ),
39
- pytest.param(
40
- ('<div data-class="a" data=asdf class="b"></div>'),
41
- ([]),
42
- id="mismatch names",
43
- ),
44
- pytest.param(
45
- ('<svg -width="16" -width="2"></svg>'),
46
- (
47
- [
48
- {
49
- "code": "H037",
50
- "line": "1:5",
51
- "match": "-width",
52
- "message": "Duplicate attribute found.",
53
- }
54
- ]
55
- ),
56
- id="leading hyphen names",
57
- ),
58
- pytest.param(
59
- ('<svg width="16" stroke-width="2"></svg>'),
60
- ([]),
61
- id="mismatch hyphen names",
62
- ),
63
- pytest.param(
64
- (
65
- '<a href="" ></a><a href=""></a><a href=""></a><a href=""></a><a href=""></a><a href=""></a>'
66
- ),
67
- ([]),
68
- id="repeating tags",
69
- ),
70
- pytest.param(
71
- (
72
- '<img src="img.jpg" :src="isLoaded ? url : defaultValue" />\n'
73
- '<tbody class="bg-white" x-data="{ open{{ item.history_id }}: false }" x-bind:class="open{{ item.history_id }} ? \'bg-gray-50\' : '
74
- '">'
75
- ),
76
- (
77
- [
78
- {
79
- "code": "H006",
80
- "line": "1:0",
81
- "match": '<img src="img.jpg" :',
82
- "message": "Img tag should have height and width attributes.",
83
- },
84
- {
85
- "code": "H013",
86
- "line": "1:0",
87
- "match": '<img src="img.jpg" :',
88
- "message": "Img tag should have an alt attribute.",
89
- },
90
- {
91
- "code": "H025",
92
- "line": "2:0",
93
- "match": '<tbody class="bg-whi',
94
- "message": "Tag seems to be an orphan.",
95
- },
96
- ]
97
- ),
98
- id="apline tags no match",
99
- ),
100
- pytest.param(
101
- (
102
- '<img :src="img.jpg" :src="isLoaded ? url : defaultValue" />\n'
103
- '<tbody x-bind:class="bg-white" x-data="{ open{{ item.history_id }}: false }" x-bind:class="open{{ item.history_id }} ? \'bg-gray-50\' : '
104
- '">'
105
- ),
106
- (
107
- [
108
- {
109
- "code": "H006",
110
- "line": "1:0",
111
- "match": '<img :src="img.jpg" ',
112
- "message": "Img tag should have height and width attributes.",
113
- },
114
- {
115
- "code": "H013",
116
- "line": "1:0",
117
- "match": '<img :src="img.jpg" ',
118
- "message": "Img tag should have an alt attribute.",
119
- },
120
- {
121
- "code": "H025",
122
- "line": "2:0",
123
- "match": "<tbody x-bind:class=",
124
- "message": "Tag seems to be an orphan.",
125
- },
126
- {
127
- "code": "H037",
128
- "line": "1:5",
129
- "match": ":src",
130
- "message": "Duplicate attribute found.",
131
- },
132
- ]
133
- ),
134
- id="apline tags match",
135
- ),
136
- ]
137
-
138
-
139
- @pytest.mark.parametrize(("source", "expected"), test_data)
140
- def test_base(source, expected, basic_config):
141
- filename = "test.html"
142
- output = linter(basic_config, source, filename, filename)
143
-
144
- lint_printer(source, expected, output[filename])
145
-
146
- mismatch = list(filter(lambda x: x not in expected, output[filename])) + list(
147
- filter(lambda x: x not in output[filename], expected)
148
- )
149
-
150
- assert len(mismatch) == 0
@@ -1,45 +0,0 @@
1
- """Test linter code H005.
2
-
3
- poetry run pytest tests/test_linter/test_ignore_rules.py
4
- """
5
- import pytest
6
-
7
- from src.djlint.lint import linter
8
- from tests.conftest import lint_printer
9
-
10
- test_data = [
11
- pytest.param(
12
- ("<img>{# djlint:off H004,H006,H013 #}\n" "<img>\n"),
13
- (
14
- [
15
- {
16
- "code": "H006",
17
- "line": "1:0",
18
- "match": "<img>",
19
- "message": "Img tag should have height and width attributes.",
20
- },
21
- {
22
- "code": "H013",
23
- "line": "1:0",
24
- "match": "<img>",
25
- "message": "Img tag should have an alt attribute.",
26
- },
27
- ]
28
- ),
29
- id="one",
30
- ),
31
- ]
32
-
33
-
34
- @pytest.mark.parametrize(("source", "expected"), test_data)
35
- def test_base(source, expected, basic_config):
36
- filename = "test.html"
37
- output = linter(basic_config, source, filename, filename)
38
-
39
- lint_printer(source, expected, output[filename])
40
-
41
- mismatch = list(filter(lambda x: x not in expected, output[filename])) + list(
42
- filter(lambda x: x not in output[filename], expected)
43
- )
44
-
45
- assert len(mismatch) == 0