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,30 +0,0 @@
1
- """Test django spaceless tag.
2
-
3
- poetry run pytest tests/test_django/test_spaceless.py
4
- """
5
- import pytest
6
-
7
- from src.djlint.reformat import formatter
8
- from tests.conftest import printer
9
-
10
- test_data = [
11
- pytest.param(
12
- ('{% spaceless %}<p><a href="foo/">Foo</a></p>{% endspaceless %}'),
13
- (
14
- "{% spaceless %}\n"
15
- " <p>\n"
16
- ' <a href="foo/">Foo</a>\n'
17
- " </p>\n"
18
- "{% endspaceless %}\n"
19
- ),
20
- id="spaceless_tag",
21
- ),
22
- ]
23
-
24
-
25
- @pytest.mark.parametrize(("source", "expected"), test_data)
26
- def test_base(source, expected, django_config):
27
- output = formatter(django_config, source)
28
-
29
- printer(expected, source, output)
30
- assert expected == output
@@ -1,35 +0,0 @@
1
- """Test django spaceless tag.
2
-
3
- poetry run pytest tests/test_django/test_tag_spaces.py
4
- """
5
- import pytest
6
-
7
- from src.djlint.reformat import formatter
8
- from tests.conftest import config_builder, printer
9
-
10
- test_data = [
11
- pytest.param(
12
- ("{% a %}\n" "{%b %}{%+c%}{%-d+%}\n" "{#a}{{g {%a%}}}{%l{{q}}+%}"),
13
- (
14
- "{% a %}\n"
15
- "{% b %}{%+ c %}{%- d +%}\n"
16
- "{#a}{{ g {% a % }}}{% l{{ q }} +%}\n"
17
- ),
18
- ({}),
19
- id="messy stuff",
20
- ),
21
- pytest.param(
22
- ("{% a %}\n" "{%b%}{%c%}{%-d+%}\n" "{#a}{{g {%a%}}}{%l{{q}}+%}"),
23
- ("{% a %}\n" "{%b%}{%c%}{%-d+%}\n" "{#a}{{g {%a%}}}{%l{{q}}+%}\n"),
24
- ({"profile": "handlebars"}),
25
- id="messy stuff",
26
- ),
27
- ]
28
-
29
-
30
- @pytest.mark.parametrize(("source", "expected", "args"), test_data)
31
- def test_base(source, expected, args):
32
- output = formatter(config_builder(args), source)
33
-
34
- printer(expected, source, output)
35
- assert expected == output
@@ -1,40 +0,0 @@
1
- """Test django templatetags.
2
-
3
- poetry run pytest tests/test_django/test_templatetag.py
4
- """
5
- import pytest
6
-
7
- from src.djlint.reformat import formatter
8
- from tests.conftest import printer
9
-
10
- test_data = [
11
- pytest.param(
12
- ("{% if stuff %}\n{% endif %}"),
13
- ("{% if stuff %}{% endif %}\n"),
14
- id="tags_on_one_line",
15
- ),
16
- pytest.param(
17
- ("{% templatetag openblock %} url 'entry_list' {% templatetag closeblock %}"),
18
- ("{% templatetag openblock %} url 'entry_list' {% templatetag closeblock %}\n"),
19
- id="tags_random_text",
20
- ),
21
- pytest.param(
22
- (
23
- "{% if messages|length %}{% for message in messages %}{{ message }}{% endfor %}{% endif %}"
24
- ),
25
- (
26
- "{% if messages|length %}\n"
27
- " {% for message in messages %}{{ message }}{% endfor %}\n"
28
- "{% endif %}\n"
29
- ),
30
- id="single_liner",
31
- ),
32
- ]
33
-
34
-
35
- @pytest.mark.parametrize(("source", "expected"), test_data)
36
- def test_base(source, expected, django_config):
37
- output = formatter(django_config, source)
38
-
39
- printer(expected, source, output)
40
- assert expected == output
@@ -1,24 +0,0 @@
1
- """Test django verbatim tag.
2
-
3
- poetry run pytest tests/test_django/test_verbatim.py
4
- """
5
- import pytest
6
-
7
- from src.djlint.reformat import formatter
8
- from tests.conftest import printer
9
-
10
- test_data = [
11
- pytest.param(
12
- ("{% verbatim %}Still alive.{% endverbatim %}"),
13
- ("{% verbatim %}\n" " Still alive.\n" "{% endverbatim %}\n"),
14
- id="verbatim_tag",
15
- ),
16
- ]
17
-
18
-
19
- @pytest.mark.parametrize(("source", "expected"), test_data)
20
- def test_base(source, expected, django_config):
21
- output = formatter(django_config, source)
22
-
23
- printer(expected, source, output)
24
- assert expected == output
@@ -1,32 +0,0 @@
1
- """Test django with tag.
2
-
3
- poetry run pytest tests/test_django/test_with.py
4
- """
5
- import pytest
6
-
7
- from src.djlint.reformat import formatter
8
- from tests.conftest import printer
9
-
10
- test_data = [
11
- pytest.param(
12
- (
13
- "{% with total=business.employees.count %}{{ total }}<div>employee</div>{{ total|pluralize }}{% endwith %}"
14
- ),
15
- (
16
- "{% with total=business.employees.count %}\n"
17
- " {{ total }}\n"
18
- " <div>employee</div>\n"
19
- " {{ total|pluralize }}\n"
20
- "{% endwith %}\n"
21
- ),
22
- id="with_tag",
23
- ),
24
- ]
25
-
26
-
27
- @pytest.mark.parametrize(("source", "expected"), test_data)
28
- def test_base(source, expected, django_config):
29
- output = formatter(django_config, source)
30
-
31
- printer(expected, source, output)
32
- assert expected == output
@@ -1 +0,0 @@
1
- <div>
File without changes
@@ -1,6 +0,0 @@
1
- My first name is {{ htmlfirst_name }}. My last name is {{ last_name }}.
2
- {% extends 'base_generic.html" %}
3
- {% block body %}{% endblock %}
4
- <link rel="stylesheet" href="/static/css/nav.scss" type="text/x-scss" charset="utf-8"/>
5
- <script type="text/javascript" src="/static/lib/markdown-it/markdown-it.js"></script>
6
- <img src="/static/images/hi.jpg" alt="Hi!">
@@ -1,23 +0,0 @@
1
- {%this%}
2
- {{ is}}
3
-
4
- <a href="/junk"></a>
5
-
6
- <footer class="ft">
7
- &copy; {% now "Y" %} - {{settings.ORG_NAME }}
8
- </footer>
9
-
10
- <BODY>
11
- <P>This is a paragraph.</P>
12
-
13
-
14
- <a HREF="https://www.w3schools.com/html/">Visit our HTML tutorial</a>
15
-
16
- <table class=striped></table>
17
-
18
- </BODY>
19
-
20
- <img src="html5.gif">
21
- <link rel = "stylesheet" href = "styles.css">
22
-
23
- <div class="this is a really line long of random stuff... how long can we make it? hopefully over 99 chars long!"><p>close that div out!</p></div>
@@ -1,2 +0,0 @@
1
- {{test }}
2
- {% test%}
@@ -1 +0,0 @@
1
- {{fail}}
@@ -1 +0,0 @@
1
- {{fail}}
@@ -1 +0,0 @@
1
- {{fail}}
@@ -1,242 +0,0 @@
1
- """Djlint base tests.
2
-
3
- run::
4
-
5
- pytest tests/test_djlint/test_djlint.py --cov=src/djlint --cov-branch --cov-report xml:coverage.xml --cov-report term-missing
6
-
7
- pytest tests/test_djlint/test_djlint.py::test_hyphen_file
8
-
9
- or::
10
-
11
- tox
12
-
13
- """
14
- # pylint: disable=W1510
15
- import subprocess
16
- import sys
17
-
18
- try:
19
- from importlib import metadata
20
- except ImportError:
21
- # Running on pre-3.8 Python; use importlib-metadata package
22
- import importlib_metadata as metadata # type: ignore
23
-
24
-
25
- # pylint: disable=C0116
26
- from pathlib import Path
27
- from typing import TextIO
28
-
29
- from click.testing import CliRunner
30
-
31
- from src.djlint import main as djlint
32
- from tests.conftest import write_to_file
33
-
34
-
35
- def test_help(runner: CliRunner) -> None:
36
- result = runner.invoke(djlint, ["-h"])
37
- assert result.exit_code == 0
38
- assert "djLint · HTML template linter and formatter." in result.output
39
-
40
-
41
- def test_bad_args(runner: CliRunner) -> None:
42
- result = runner.invoke(djlint, ["-a"])
43
- assert result.exit_code == 2
44
- assert "Error: No such option: -a" in result.output
45
-
46
- result = runner.invoke(djlint, ["--aasdf"])
47
- assert result.exit_code == 2
48
- assert "Error: No such option: --aasdf" in result.output
49
-
50
-
51
- def test_nonexisting_file(runner: CliRunner) -> None:
52
- result = runner.invoke(djlint, ["not_a_file.html"])
53
- assert result.exit_code == 2
54
- assert "Path 'not_a_file.html' does not exist." in result.output
55
-
56
-
57
- def test_existing_file(runner: CliRunner) -> None:
58
- result = runner.invoke(djlint, ["tests/test_djlint/bad.html"])
59
- assert result.exit_code == 1
60
- assert str(Path("tests/test_djlint/bad.html")) in result.output
61
-
62
-
63
- def test_hyphen_file(runner: CliRunner) -> None:
64
- result = runner.invoke(djlint, ["tests/test_djlint/-.html"])
65
- assert result.exit_code == 1
66
- print(result.output)
67
- assert str(Path("tests/test_djlint/-.html")) in result.output
68
-
69
-
70
- def test_multiple_files(runner: CliRunner) -> None:
71
- result = runner.invoke(
72
- djlint,
73
- [
74
- "tests/test_djlint/multiple_files/a",
75
- "tests/test_djlint/multiple_files/b",
76
- "--check",
77
- ],
78
- )
79
- assert result.exit_code == 1
80
- assert "3 files would be updated." in result.output
81
-
82
-
83
- def test_bad_path(runner: CliRunner) -> None:
84
- result = runner.invoke(djlint, ["tests/nowhere"])
85
- assert result.exit_code == 2
86
- assert "does not exist." in result.output
87
-
88
-
89
- def test_good_path_with_e(runner: CliRunner) -> None:
90
- result = runner.invoke(djlint, ["tests/test_djlint/", "-e", "html"])
91
- assert result.exit_code == 1
92
- assert str(Path("tests/test_djlint/bad.html")) in result.output
93
-
94
-
95
- def test_good_path_with_extension(runner: CliRunner) -> None:
96
- result = runner.invoke(djlint, ["tests/test_djlint/", "--extension", "html*"])
97
- assert result.exit_code == 1
98
- assert str(Path("tests/test_djlint/bad.html")) in result.output
99
- assert str(Path("tests/test_djlint/bad.html.dj")) in result.output
100
-
101
-
102
- def test_good_path_with_bad_ext(runner: CliRunner) -> None:
103
- result = runner.invoke(djlint, ["tests/test_djlint/", "-e", "html.alphabet"])
104
- assert result.exit_code == 0
105
- assert "No files to check!" in result.output
106
-
107
-
108
- def test_empty_file(runner: CliRunner, tmp_file: TextIO) -> None:
109
- write_to_file(tmp_file.name, b"")
110
- result = runner.invoke(djlint, [tmp_file.name])
111
- assert result.exit_code == 0
112
-
113
-
114
- def test_stdin(runner: CliRunner) -> None:
115
- result = runner.invoke(djlint, ["-"], input='<div><p id="a"></p></div>')
116
- assert result.exit_code == 0
117
- assert "Linted 1 file" in result.output
118
-
119
- # check with multiple inputs
120
- result = runner.invoke(djlint, ["-", "-"], input='<div><p id="a"></p></div>')
121
- assert result.exit_code == 0
122
- assert "Linted 1 file" in result.output
123
-
124
- # check with reformat
125
- result = runner.invoke(djlint, ["-", "--reformat"], input="<div></div>")
126
- assert result.output == "<div></div>\n"
127
-
128
- # check with check
129
- result = runner.invoke(djlint, ["-", "--check"], input="<div></div>")
130
- assert result.output == "<div></div>\n"
131
-
132
-
133
- def test_stdin_non_ascii(runner: CliRunner) -> None:
134
- result = runner.invoke(djlint, ["-", "--reformat"], input="必須")
135
- assert result.output == "必須\n"
136
-
137
- result = runner.invoke(djlint, ["-", "--reformat"], input="Вход")
138
- assert result.output == "Вход\n"
139
-
140
- result = runner.invoke(djlint, ["-", "--reformat"], input="çéâêîôûàèìòùëïü")
141
- assert result.output == "çéâêîôûàèìòùëïü\n"
142
-
143
- result = runner.invoke(djlint, ["-", "--reformat"], input="😀😂🤣😆🥰")
144
- assert result.output == "😀😂🤣😆🥰\n"
145
-
146
-
147
- def test_check(runner: CliRunner, tmp_file: TextIO) -> None:
148
- write_to_file(tmp_file.name, b"<div></div>")
149
- result = runner.invoke(djlint, [tmp_file.name, "--check"])
150
- assert result.exit_code == 0
151
-
152
-
153
- def test_check_non_existing_file(runner: CliRunner) -> None:
154
- result = runner.invoke(djlint, ["tests/test_djlint/nothing.html", "--check"])
155
- assert result.exit_code == 2
156
-
157
-
158
- def test_check_non_existing_folder(runner: CliRunner) -> None:
159
- result = runner.invoke(djlint, ["tests/nothing", "--check"])
160
- assert result.exit_code == 2
161
-
162
-
163
- def test_check_reformatter_simple_error(runner: CliRunner, tmp_file: TextIO) -> None:
164
- write_to_file(tmp_file.name, b"<div><p>nice stuff here</p></div>")
165
- result = runner.invoke(djlint, [tmp_file.name, "--check"])
166
- assert result.exit_code == 1
167
- assert "1 file would be updated." in result.output
168
-
169
-
170
- def test_reformatter_simple_error(runner: CliRunner, tmp_file: TextIO) -> None:
171
- write_to_file(tmp_file.name, b"<div><p>nice stuff here</p></div>")
172
- result = runner.invoke(djlint, [tmp_file.name, "--reformat"])
173
- assert result.exit_code == 1
174
- assert "1 file was updated." in result.output
175
-
176
-
177
- def test_check_reformatter_simple_error_quiet(
178
- runner: CliRunner, tmp_file: TextIO
179
- ) -> None:
180
- write_to_file(tmp_file.name, b"<div><p>nice stuff here</p></div>")
181
- result = runner.invoke(djlint, [tmp_file.name, "--check", "--quiet"])
182
- assert result.exit_code == 1
183
- assert "1 file would be updated." not in result.output
184
-
185
-
186
- def test_check_reformatter_no_error(runner: CliRunner, tmp_file: TextIO) -> None:
187
- write_to_file(tmp_file.name, b"<div>\n <p>nice stuff here</p>\n</div>")
188
- result = runner.invoke(djlint, [tmp_file.name, "--check"])
189
- assert result.exit_code == 0
190
- assert "0 files would be updated." in result.output
191
-
192
-
193
- def test_warn(runner: CliRunner, tmp_file: TextIO) -> None:
194
- write_to_file(
195
- tmp_file.name, b"<div style='color:pink;'><p>nice stuff here</p></div>"
196
- )
197
- result = runner.invoke(djlint, [tmp_file.name, "--lint", "--warn"])
198
- assert result.exit_code == 0
199
-
200
-
201
- def test_version(runner: CliRunner) -> None:
202
- result = runner.invoke(djlint, ["--version"])
203
- assert metadata.version("djlint") in result.output
204
-
205
-
206
- def test_python_call() -> None:
207
- # give up fighting windows lol
208
- if sys.platform != "win32":
209
- py_sub = subprocess.run(
210
- ["python", "-m", "djlint", "-h"],
211
- stdout=subprocess.PIPE,
212
- stderr=subprocess.PIPE,
213
- )
214
- print(py_sub.stdout)
215
- print(py_sub.returncode)
216
- assert b"python -m djlint [OPTIONS] SRC ..." in py_sub.stdout
217
- assert py_sub.returncode == 0
218
-
219
- py_sub = subprocess.run(
220
- ["python", "-m", "djlint", "__init__", "-h"],
221
- stdout=subprocess.PIPE,
222
- stderr=subprocess.PIPE,
223
- )
224
- print(py_sub.stdout)
225
- print(py_sub.returncode)
226
- assert b"python -m djlint [OPTIONS] SRC ..." in py_sub.stdout
227
- assert py_sub.returncode == 0
228
-
229
-
230
- def test_line_ending(runner: CliRunner, tmp_file: TextIO) -> None:
231
- # write a windows line ending to file
232
- text_in = "<div></div>\r\n"
233
- with open(tmp_file.name, "w", encoding="utf8", newline="") as windows:
234
- windows.write(text_in)
235
-
236
- # make sure line ending was still there
237
- assert Path(tmp_file.name).read_bytes().decode("utf8") == text_in
238
-
239
- # check formatting
240
- result = runner.invoke(djlint, [tmp_file.name, "--check", "--quiet"])
241
-
242
- assert result.exit_code == 0
File without changes
@@ -1,24 +0,0 @@
1
- """Test golang if tag.
2
-
3
- poetry run pytest tests/test_golang/test_if.py
4
- """
5
- import pytest
6
-
7
- from src.djlint.reformat import formatter
8
- from tests.conftest import printer
9
-
10
- test_data = [
11
- pytest.param(
12
- ("{{ if .condition }} {{ else }} {{ end }}"),
13
- ("{{ if .condition }} {{ else }} {{ end }}\n"),
14
- id="if_tag",
15
- ),
16
- ]
17
-
18
-
19
- @pytest.mark.parametrize(("source", "expected"), test_data)
20
- def test_base(source, expected, basic_config):
21
- output = formatter(basic_config, source)
22
-
23
- printer(expected, source, output)
24
- assert expected == output
@@ -1,24 +0,0 @@
1
- """Test golang range tag.
2
-
3
- poetry run pytest tests/test_golang/test_range.py
4
- """
5
- import pytest
6
-
7
- from src.djlint.reformat import formatter
8
- from tests.conftest import printer
9
-
10
- test_data = [
11
- pytest.param(
12
- ("{{ range .Items }} {{ end }}"),
13
- ("{{ range .Items }} {{ end }}\n"),
14
- id="range_tag",
15
- ),
16
- ]
17
-
18
-
19
- @pytest.mark.parametrize(("source", "expected"), test_data)
20
- def test_base(source, expected, basic_config):
21
- output = formatter(basic_config, source)
22
-
23
- printer(expected, source, output)
24
- assert expected == output
File without changes
@@ -1,34 +0,0 @@
1
- """Test handlebars each tag.
2
-
3
- poetry run pytest tests/test_handlebars/test_each.py
4
- """
5
- import pytest
6
-
7
- from src.djlint.reformat import formatter
8
- from tests.conftest import printer
9
-
10
- test_data = [
11
- pytest.param(
12
- ("{{#each people}}{{print_person}} <p>and more long stuff</p>{{/each}}"),
13
- (
14
- "{{#each people }}\n"
15
- " {{print_person}}\n"
16
- " <p>and more long stuff</p>\n"
17
- "{{/each}}\n"
18
- ),
19
- id="each_tag",
20
- ),
21
- pytest.param(
22
- ('{{#each (cprFindConfigObj "inventoryCategories") as |category c | }}'),
23
- ('{{#each (cprFindConfigObj "inventoryCategories") as |category c | }}\n'),
24
- id="each_tag_with_pipe",
25
- ),
26
- ]
27
-
28
-
29
- @pytest.mark.parametrize(("source", "expected"), test_data)
30
- def test_base(source, expected, handlebars_config):
31
- output = formatter(handlebars_config, source)
32
-
33
- printer(expected, source, output)
34
- assert expected == output
@@ -1,24 +0,0 @@
1
- """Test handlebars else tag.
2
-
3
- poetry run pytest tests/test_handlebars/test_else.py
4
- """
5
- import pytest
6
-
7
- from src.djlint.reformat import formatter
8
- from tests.conftest import printer
9
-
10
- test_data = [
11
- pytest.param(
12
- ("{{^}}"),
13
- ("{{^}}\n"),
14
- id="else_tag",
15
- ),
16
- ]
17
-
18
-
19
- @pytest.mark.parametrize(("source", "expected"), test_data)
20
- def test_base(source, expected, handlebars_config):
21
- output = formatter(handlebars_config, source)
22
-
23
- printer(expected, source, output)
24
- assert expected == output
@@ -1,24 +0,0 @@
1
- """Test handlebars with tag.
2
-
3
- poetry run pytest tests/test_handlebars/test_with.py
4
- """
5
- import pytest
6
-
7
- from src.djlint.reformat import formatter
8
- from tests.conftest import printer
9
-
10
- test_data = [
11
- pytest.param(
12
- ("{{#with person}}<p>{{firstname}} {{lastname}}</p>{{/with}}"),
13
- ("{{#with person}}\n" " <p>{{firstname}} {{lastname}}</p>\n" "{{/with}}\n"),
14
- id="with_tag",
15
- ),
16
- ]
17
-
18
-
19
- @pytest.mark.parametrize(("source", "expected"), test_data)
20
- def test_base(source, expected, handlebars_config):
21
- output = formatter(handlebars_config, source)
22
-
23
- printer(expected, source, output)
24
- assert expected == output
File without changes
@@ -1,65 +0,0 @@
1
- """Test for alpine.js.
2
-
3
- poetry run pytest tests/test_html/test_alpinejs.py
4
- """
5
- import pytest
6
-
7
- from src.djlint.reformat import formatter
8
- from tests.conftest import printer
9
-
10
- test_data = [
11
- pytest.param(
12
- (
13
- "<div\n"
14
- ' id="collapse"\n'
15
- ' x-data="{ show: true }"\n'
16
- ' x-show="show"\n'
17
- " x-transition.duration.500ms\n"
18
- ' :disabled="!$store.userPreferences.deleteConfirm"\n'
19
- ' @click="clicked=true"\n'
20
- "></div>\n"
21
- ),
22
- (
23
- '<div id="collapse"\n'
24
- ' x-data="{ show: true }"\n'
25
- ' x-show="show"\n'
26
- " x-transition.duration.500ms\n"
27
- ' :disabled="!$store.userPreferences.deleteConfirm"\n'
28
- ' @click="clicked=true"></div>\n'
29
- ),
30
- id="alpine_js",
31
- ),
32
- pytest.param(
33
- (
34
- '<html lang="en">\n'
35
- " <body>\n"
36
- " <!-- x-data , x-text , x-html -->\n"
37
- " <div x-data=\"{key: ' value', message:'hello <b>world</b> '}\">\n"
38
- ' <p x-text="key"></p>\n'
39
- ' <p x-html="message"></p>\n'
40
- " </div>\n"
41
- " </body>\n"
42
- "</html>\n\n"
43
- ),
44
- (
45
- '<html lang="en">\n'
46
- " <body>\n"
47
- " <!-- x-data , x-text , x-html -->\n"
48
- " <div x-data=\"{key: ' value', message:'hello <b>world</b> '}\">\n"
49
- ' <p x-text="key"></p>\n'
50
- ' <p x-html="message"></p>\n'
51
- " </div>\n"
52
- " </body>\n"
53
- "</html>\n"
54
- ),
55
- id="alpine_nested_html",
56
- ),
57
- ]
58
-
59
-
60
- @pytest.mark.parametrize(("source", "expected"), test_data)
61
- def test_base(source, expected, basic_config):
62
- output = formatter(basic_config, source)
63
-
64
- printer(expected, source, output)
65
- assert expected == output