rumdl 0.0.124__tar.gz → 0.0.125__tar.gz
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.
Potentially problematic release.
This version of rumdl might be problematic. Click here for more details.
- {rumdl-0.0.124 → rumdl-0.0.125}/CHANGELOG.md +23 -1
- {rumdl-0.0.124 → rumdl-0.0.125}/Cargo.lock +1 -1
- {rumdl-0.0.124 → rumdl-0.0.125}/Cargo.toml +1 -1
- {rumdl-0.0.124 → rumdl-0.0.125}/PKG-INFO +4 -1
- {rumdl-0.0.124 → rumdl-0.0.125}/README.md +3 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/scripts/pre-release.sh +20 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/lint_context.rs +1 -1
- {rumdl-0.0.124 → rumdl-0.0.125}/src/main.rs +71 -31
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md029_ordered_list_prefix.rs +49 -130
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/cli_integration_tests.rs +107 -0
- rumdl-0.0.125/tests/rules/md029_fix_test.rs +170 -0
- rumdl-0.0.125/tests/rules/md029_markdownlint_parity_test.rs +229 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md029_test.rs +18 -16
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/mod.rs +2 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/.config/nextest.toml +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/.mise.toml +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/.pre-commit-config.yaml +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/.rumdl.toml +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/.rustfmt.toml +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/LICENSE +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/MANIFEST.in +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/Makefile +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/assets/logo.png +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/benches/fix_performance.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/benches/range_performance.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/benches/range_utils_benchmark.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/benches/rule_performance.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/benches/simple_fix_bench.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/benchmark/bin/bench_lint_context.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/benchmark/bin/benchmark.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/benchmark/bin/benchmark_rule.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/benchmark/bin/file_parallel_benchmark.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/benchmark/bin/measure_code_span_performance.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/RULES.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/global-settings.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md001.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md002.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md003.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md004.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md005.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md006.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md007.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md009.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md010.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md011.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md012.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md013.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md014.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md018.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md019.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md020.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md021.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md022.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md023.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md024.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md025.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md026.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md027.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md028.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md029.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md030.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md031.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md032.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md033.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md034.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md035.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md036.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md037.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md038.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md039.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md040.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md041.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md042.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md043.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md044.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md045.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md046.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md047.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md048.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md049.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md050.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md051.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md052.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md053.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md054.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md055.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md056.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md057.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/md058.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/docs/vscode-extension.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/parity_check.py +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/pyproject.toml +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/python/MANIFEST.in +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/python/PYTHON-README.md +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/python/rumdl/__init__.py +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/python/rumdl/__main__.py +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/python/rumdl/py.typed +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/rumdl.toml.example +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/rust-toolchain.toml +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/scripts/extract-changelog.sh +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/scripts/generate-downloads-table.sh +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/scripts/prepare-release.sh +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/scripts/setup-pre-commit.sh +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/scripts/update-pre-commit-docs.sh +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/exit_codes.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/inline_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/lib.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/lsp/mod.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/lsp/server.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/lsp/types.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/markdownlint_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/output/formatters/azure.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/output/formatters/concise.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/output/formatters/github.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/output/formatters/gitlab.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/output/formatters/grouped.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/output/formatters/json.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/output/formatters/json_lines.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/output/formatters/junit.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/output/formatters/mod.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/output/formatters/pylint.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/output/formatters/sarif.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/output/formatters/text.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/output/mod.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/parallel.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/performance.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/profiling.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/python.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rule.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rule_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rule_config_serde.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/blockquote_utils.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/code_block_utils.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/code_fence_utils.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/emphasis_style.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/front_matter_utils.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/heading_utils.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/list_utils.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md001_heading_increment.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md002_first_heading_h1/md002_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md002_first_heading_h1.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md003_heading_style/md003_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md003_heading_style.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md004_unordered_list_style/md004_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md004_unordered_list_style.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md005_list_indent.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md006_start_bullets.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md007_ul_indent/md007_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md007_ul_indent.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md009_trailing_spaces/md009_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md009_trailing_spaces.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md010_no_hard_tabs/md010_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md010_no_hard_tabs.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md011_no_reversed_links.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md012_no_multiple_blanks/md012_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md012_no_multiple_blanks.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md013_line_length/md013_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md013_line_length.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md014_commands_show_output/md014_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md014_commands_show_output.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md018_no_missing_space_atx.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md019_no_multiple_space_atx.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md020_no_missing_space_closed_atx.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md021_no_multiple_space_closed_atx.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md022_blanks_around_headings/md022_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md022_blanks_around_headings.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md023_heading_start_left.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md024_no_duplicate_heading/md024_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md024_no_duplicate_heading.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md025_single_title/md025_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md025_single_title.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md026_no_trailing_punctuation/md026_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md026_no_trailing_punctuation.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md027_multiple_spaces_blockquote.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md028_no_blanks_blockquote.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md029_ordered_list_prefix/md029_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md030_list_marker_space/md030_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md030_list_marker_space.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md031_blanks_around_fences.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md032_blanks_around_lists.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md033_no_inline_html/md033_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md033_no_inline_html.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md034_no_bare_urls.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md035_hr_style/md035_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md035_hr_style.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md036_no_emphasis_only_first/md036_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md036_no_emphasis_only_first.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md037_spaces_around_emphasis.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md038_no_space_in_code.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md039_no_space_in_links.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md040_fenced_code_language.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md041_first_line_heading.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md042_no_empty_links.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md043_required_headings.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md044_proper_names/md044_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md044_proper_names.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md045_no_alt_text/md045_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md045_no_alt_text.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md046_code_block_style/md046_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md046_code_block_style.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md047_single_trailing_newline.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md048_code_fence_style/md048_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md048_code_fence_style.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md049_emphasis_style/md049_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md049_emphasis_style.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md050_strong_style/md050_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md050_strong_style.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md051_link_fragments.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md052_reference_links_images.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md053_link_image_reference_definitions.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md054_link_image_style/md054_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md054_link_image_style.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md055_table_pipe_style/md055_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md055_table_pipe_style.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md056_table_column_count.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md057_existing_relative_links/md057_config.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md057_existing_relative_links.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/md058_blanks_around_tables.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/mod.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/rules/strong_style.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/anchor_styles/github.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/anchor_styles/jekyll.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/anchor_styles/kramdown.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/anchor_styles/kramdown_gfm.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/anchor_styles/mod.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/ast_utils.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/code_block_utils.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/document_structure.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/early_returns.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/element_cache.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/emphasis_utils.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/fix_utils.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/header_id_utils.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/kramdown_utils.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/markdown_elements.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/mod.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/range_utils.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/regex_cache.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/skip_context.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/string_interner.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/table_utils.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/utils/text_reflow.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/src/vscode.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/advanced_integration_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/character_ranges/additional_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/character_ranges/basic_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/character_ranges/comprehensive_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/character_ranges/extended_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/character_ranges/mod.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/character_ranges/unicode_utils.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/cli_duplication_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/cli_explain_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/cli_flag_precedence_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/cli_lsp_fix_consistency.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/cli_statistics_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/common/cli_test_utils.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/common/fixtures.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/common/mod.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/common/test_utils.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/commonmark_compliance_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/comprehensive_integration_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/comprehensive_output_format_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/config_application_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/config_file_command_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/config_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/config_upward_traversal_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/configuration_inheritance_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/consistency_regression_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/cross_platform_compatibility_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/deeply_nested_lists_performance_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/escaped_brackets_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/final_confidence_assessment.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/fixable_unfixable_config_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/init_command_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/init_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/inline_config_blocks_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/inline_config_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/integration_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/json_output_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/kramdown_integration_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/lib.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/lsp_editor_integration_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/lsp_integration_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/lsp_memory_leak_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/lsp_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/malformed_markdown_stress_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/markdownlint_cli_integration.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/markdownlint_config_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/markdownlintignore_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/md013_reflow_integration_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/md051_issue_39_regression_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/nested_code_block_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/output_format_integration_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/output_format_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/perf_check.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/performance_validation_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/pyproject_config_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/python_bindings_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/real_world_repository_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/regression_prevention_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/emphasis_edge_cases_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/heading_edge_cases_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/inline_content_edge_cases_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/link_edge_cases_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/list_rules_integration_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md001_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md001_unicode_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md002_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md003_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md004_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md005_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md005_unicode_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md006_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md006_unicode_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md007_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md009_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md010_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md011_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md012_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md013_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md014_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md018_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md019_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md020_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md021_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md022_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md023_extended_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md023_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md024_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md025_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md026_kramdown_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md026_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md027_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md028_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md029_code_block_separation_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md029_issue42_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md029_pathological_edge_cases_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md029_unicode_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md030_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md031_kramdown_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md031_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md032_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md033_extended_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md033_kramdown_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md033_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md034_ipv6_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md034_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md035_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md036_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md037_kramdown_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md037_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md038_nested_backticks_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md038_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md039_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md040_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md041_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md042_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md043_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md044_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md045_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md046_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md047_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md048_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md049_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md050_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md051_comprehensive_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md051_critical_edge_cases_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md051_edge_cases_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md051_issue_39_regression_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md051_performance_edge_cases_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md051_property_based_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md051_regression_prevention_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md051_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md051_unicode_security_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md052_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md053_additional_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md053_proptest.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md053_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md054_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md054_unicode_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md055_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md056_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md057_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md058_kramdown_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules/md058_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/rules_mod_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/skip_context_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/test_underscore_edge_cases.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/thread_safety_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/unfixable_rules_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/unicode_edge_case_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/utils/blockquote_utils_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/utils/code_block_utils_extended_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/utils/code_block_utils_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/utils/core_utils_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/utils/front_matter_utils_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/utils/line_index_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/utils/mod.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/utils_markdown_edge_cases.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/utils_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/vscode_extension_fixes.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/vscode_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/vscode_tests.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/vscode_windows_comprehensive_test.rs +0 -0
- {rumdl-0.0.124 → rumdl-0.0.125}/tests/vscode_windows_test.rs +0 -0
|
@@ -7,6 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.0.125] - 2025-08-22
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **CLI**: Added `--stdin-filename` flag for better stdin processing
|
|
14
|
+
- Specify filename when reading from stdin for better error messages
|
|
15
|
+
- Enables MD057 (relative link checking) to work correctly with stdin
|
|
16
|
+
- Provides proper filename context in all output formats
|
|
17
|
+
- Improves editor integration capabilities
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
- **CLI**: Fixed `rumdl fmt -` to output original content when no issues found
|
|
21
|
+
- Previously incorrectly output "No issues found in stdin" message
|
|
22
|
+
- Now correctly outputs the original content unchanged
|
|
23
|
+
- **MD029**: Corrected list continuity detection and fix functionality
|
|
24
|
+
- Improved handling of sublists and indented content
|
|
25
|
+
- Better markdownlint compatibility
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
- **Build**: Added mise version validation to pre-release checks
|
|
29
|
+
- Prevents CI failures from non-existent mise versions
|
|
30
|
+
|
|
10
31
|
## [0.0.124] - 2025-08-22
|
|
11
32
|
|
|
12
33
|
### Added
|
|
@@ -436,7 +457,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
436
457
|
|
|
437
458
|
- Initial implementation of remaining rules for markdownlint parity
|
|
438
459
|
|
|
439
|
-
[Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.
|
|
460
|
+
[Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.125...HEAD
|
|
461
|
+
[0.0.125]: https://github.com/rvben/rumdl/compare/v0.0.124...v0.0.125
|
|
440
462
|
[0.0.124]: https://github.com/rvben/rumdl/compare/v0.0.123...v0.0.124
|
|
441
463
|
[0.0.123]: https://github.com/rvben/rumdl/compare/v0.0.122...v0.0.123
|
|
442
464
|
[0.0.122]: https://github.com/rvben/rumdl/compare/v0.0.121...v0.0.122
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rumdl
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.125
|
|
4
4
|
Classifier: Development Status :: 4 - Beta
|
|
5
5
|
Classifier: Environment :: Console
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -264,6 +264,9 @@ echo "# Title " | rumdl fmt -
|
|
|
264
264
|
|
|
265
265
|
# Format clipboard content (macOS example)
|
|
266
266
|
pbpaste | rumdl fmt - | pbcopy
|
|
267
|
+
|
|
268
|
+
# Provide filename context for better error messages (useful for editor integrations)
|
|
269
|
+
cat README.md | rumdl check - --stdin-filename README.md
|
|
267
270
|
```
|
|
268
271
|
|
|
269
272
|
### Editor Integration
|
|
@@ -235,6 +235,9 @@ echo "# Title " | rumdl fmt -
|
|
|
235
235
|
|
|
236
236
|
# Format clipboard content (macOS example)
|
|
237
237
|
pbpaste | rumdl fmt - | pbcopy
|
|
238
|
+
|
|
239
|
+
# Provide filename context for better error messages (useful for editor integrations)
|
|
240
|
+
cat README.md | rumdl check - --stdin-filename README.md
|
|
238
241
|
```
|
|
239
242
|
|
|
240
243
|
### Editor Integration
|
|
@@ -134,6 +134,26 @@ fi
|
|
|
134
134
|
echo "12. Testing cargo publish (dry run)..."
|
|
135
135
|
run_check "Cargo publish dry-run" "cargo publish --dry-run --locked"
|
|
136
136
|
|
|
137
|
+
# 13. Check mise version in GitHub Actions workflow
|
|
138
|
+
echo "13. Checking mise version in CI workflow..."
|
|
139
|
+
MISE_VERSION=$(grep -A2 "mise-action@v2" .github/workflows/release.yml | grep "version:" | sed 's/.*version: *//' | tr -d ' ')
|
|
140
|
+
if [ -n "$MISE_VERSION" ]; then
|
|
141
|
+
echo -n "Verifying mise version $MISE_VERSION exists... "
|
|
142
|
+
# Check if the release exists on GitHub
|
|
143
|
+
if curl -s -f "https://api.github.com/repos/jdx/mise/releases/tags/v${MISE_VERSION}" > /dev/null 2>&1; then
|
|
144
|
+
echo -e "${GREEN}✓${NC} mise version $MISE_VERSION exists"
|
|
145
|
+
else
|
|
146
|
+
echo -e "${RED}✗${NC}"
|
|
147
|
+
echo -e "${RED}mise version $MISE_VERSION does not exist on GitHub!${NC}"
|
|
148
|
+
echo "Check available versions at: https://github.com/jdx/mise/releases"
|
|
149
|
+
LATEST_MISE=$(curl -s https://api.github.com/repos/jdx/mise/releases/latest | grep '"tag_name"' | cut -d'"' -f4 | sed 's/^v//')
|
|
150
|
+
echo "Latest available version: $LATEST_MISE"
|
|
151
|
+
FAILED=1
|
|
152
|
+
fi
|
|
153
|
+
else
|
|
154
|
+
echo -e "${YELLOW}⚠${NC} No explicit mise version found in workflow (will use latest)"
|
|
155
|
+
fi
|
|
156
|
+
|
|
137
157
|
echo ""
|
|
138
158
|
echo "====================================="
|
|
139
159
|
if [ $FAILED -eq 0 ]; then
|
|
@@ -2300,7 +2300,7 @@ fn has_meaningful_content_between(current: &ListBlock, next: &ListBlock, lines:
|
|
|
2300
2300
|
|
|
2301
2301
|
// Check if this code block is properly indented as list continuation
|
|
2302
2302
|
let min_continuation_indent = if current.is_ordered {
|
|
2303
|
-
current.nesting_level + current.max_marker_width
|
|
2303
|
+
current.nesting_level + current.max_marker_width + 1 // +1 for space after marker
|
|
2304
2304
|
} else {
|
|
2305
2305
|
current.nesting_level + 2
|
|
2306
2306
|
};
|
|
@@ -279,6 +279,10 @@ struct CheckArgs {
|
|
|
279
279
|
#[arg(long, help = "Read from stdin instead of files")]
|
|
280
280
|
stdin: bool,
|
|
281
281
|
|
|
282
|
+
/// Filename to use for stdin input (for context and error messages)
|
|
283
|
+
#[arg(long, help = "Filename to use when reading from stdin (e.g., README.md)")]
|
|
284
|
+
stdin_filename: Option<String>,
|
|
285
|
+
|
|
282
286
|
/// Output linting results to stderr instead of stdout
|
|
283
287
|
#[arg(long, help = "Output diagnostics to stderr instead of stdout")]
|
|
284
288
|
stderr: bool,
|
|
@@ -1824,6 +1828,17 @@ fn process_stdin(rules: &[Box<dyn Rule>], args: &CheckArgs, config: &rumdl_confi
|
|
|
1824
1828
|
exit::violations_found();
|
|
1825
1829
|
}
|
|
1826
1830
|
|
|
1831
|
+
// Determine the filename to use for display and context
|
|
1832
|
+
let display_filename = args.stdin_filename.as_deref().unwrap_or("<stdin>");
|
|
1833
|
+
|
|
1834
|
+
// Set RUMDL_FILE_PATH if stdin-filename is provided
|
|
1835
|
+
// This allows rules like MD057 to know the file location for relative path checking
|
|
1836
|
+
if let Some(ref filename) = args.stdin_filename {
|
|
1837
|
+
unsafe {
|
|
1838
|
+
std::env::set_var("RUMDL_FILE_PATH", filename);
|
|
1839
|
+
}
|
|
1840
|
+
}
|
|
1841
|
+
|
|
1827
1842
|
// Create a lint context for the stdin content
|
|
1828
1843
|
let ctx = LintContext::new(&content);
|
|
1829
1844
|
let mut all_warnings = Vec::new();
|
|
@@ -1854,37 +1869,49 @@ fn process_stdin(rules: &[Box<dyn Rule>], args: &CheckArgs, config: &rumdl_confi
|
|
|
1854
1869
|
let has_issues = !all_warnings.is_empty();
|
|
1855
1870
|
|
|
1856
1871
|
// Apply fixes if requested
|
|
1857
|
-
if args._fix
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1872
|
+
if args._fix {
|
|
1873
|
+
if has_issues {
|
|
1874
|
+
let mut fixed_content = content.clone();
|
|
1875
|
+
let warnings_fixed = apply_fixes_stdin(rules, &all_warnings, &mut fixed_content, quiet, config);
|
|
1876
|
+
|
|
1877
|
+
// Output the fixed content to stdout
|
|
1878
|
+
print!("{fixed_content}");
|
|
1879
|
+
|
|
1880
|
+
// Re-check the fixed content to see if any issues remain
|
|
1881
|
+
let fixed_ctx = LintContext::new(&fixed_content);
|
|
1882
|
+
let mut remaining_warnings = Vec::new();
|
|
1883
|
+
for rule in rules {
|
|
1884
|
+
if let Ok(warnings) = rule.check(&fixed_ctx) {
|
|
1885
|
+
remaining_warnings.extend(warnings);
|
|
1886
|
+
}
|
|
1870
1887
|
}
|
|
1871
|
-
}
|
|
1872
1888
|
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1889
|
+
// Only show diagnostics to stderr if not in quiet mode
|
|
1890
|
+
if !quiet && !remaining_warnings.is_empty() {
|
|
1891
|
+
let formatter = output_format.create_formatter();
|
|
1892
|
+
let formatted = formatter.format_warnings(&remaining_warnings, display_filename);
|
|
1893
|
+
eprintln!("{formatted}");
|
|
1894
|
+
eprintln!(
|
|
1895
|
+
"\n{} issue(s) fixed, {} issue(s) remaining",
|
|
1896
|
+
warnings_fixed,
|
|
1897
|
+
remaining_warnings.len()
|
|
1898
|
+
);
|
|
1899
|
+
}
|
|
1900
|
+
|
|
1901
|
+
// Exit with success if all issues were fixed, error if issues remain
|
|
1902
|
+
if !remaining_warnings.is_empty() {
|
|
1903
|
+
exit::violations_found();
|
|
1904
|
+
}
|
|
1905
|
+
} else {
|
|
1906
|
+
// No issues found, output the original content unchanged
|
|
1907
|
+
print!("{content}");
|
|
1883
1908
|
}
|
|
1884
1909
|
|
|
1885
|
-
//
|
|
1886
|
-
if
|
|
1887
|
-
|
|
1910
|
+
// Clean up environment variable
|
|
1911
|
+
if args.stdin_filename.is_some() {
|
|
1912
|
+
unsafe {
|
|
1913
|
+
std::env::remove_var("RUMDL_FILE_PATH");
|
|
1914
|
+
}
|
|
1888
1915
|
}
|
|
1889
1916
|
return;
|
|
1890
1917
|
}
|
|
@@ -1895,7 +1922,7 @@ fn process_stdin(rules: &[Box<dyn Rule>], args: &CheckArgs, config: &rumdl_confi
|
|
|
1895
1922
|
output_format,
|
|
1896
1923
|
OutputFormat::Json | OutputFormat::GitLab | OutputFormat::Sarif | OutputFormat::Junit
|
|
1897
1924
|
) {
|
|
1898
|
-
let file_warnings = vec![(
|
|
1925
|
+
let file_warnings = vec![(display_filename.to_string(), all_warnings)];
|
|
1899
1926
|
let output = match output_format {
|
|
1900
1927
|
OutputFormat::Json => rumdl::output::formatters::json::format_all_warnings_as_json(&file_warnings),
|
|
1901
1928
|
OutputFormat::GitLab => rumdl::output::formatters::gitlab::format_gitlab_report(&file_warnings),
|
|
@@ -1911,7 +1938,7 @@ fn process_stdin(rules: &[Box<dyn Rule>], args: &CheckArgs, config: &rumdl_confi
|
|
|
1911
1938
|
// Use formatter for line-by-line output
|
|
1912
1939
|
let formatter = output_format.create_formatter();
|
|
1913
1940
|
if !all_warnings.is_empty() {
|
|
1914
|
-
let formatted = formatter.format_warnings(&all_warnings,
|
|
1941
|
+
let formatted = formatter.format_warnings(&all_warnings, display_filename);
|
|
1915
1942
|
output_writer.writeln(&formatted).unwrap_or_else(|e| {
|
|
1916
1943
|
eprintln!("Error writing output: {e}");
|
|
1917
1944
|
});
|
|
@@ -1921,14 +1948,27 @@ fn process_stdin(rules: &[Box<dyn Rule>], args: &CheckArgs, config: &rumdl_confi
|
|
|
1921
1948
|
if !quiet {
|
|
1922
1949
|
if has_issues {
|
|
1923
1950
|
output_writer
|
|
1924
|
-
.writeln(&format!(
|
|
1951
|
+
.writeln(&format!(
|
|
1952
|
+
"\nFound {} issue(s) in {}",
|
|
1953
|
+
all_warnings.len(),
|
|
1954
|
+
display_filename
|
|
1955
|
+
))
|
|
1925
1956
|
.ok();
|
|
1926
1957
|
} else {
|
|
1927
|
-
output_writer
|
|
1958
|
+
output_writer
|
|
1959
|
+
.writeln(&format!("No issues found in {display_filename}"))
|
|
1960
|
+
.ok();
|
|
1928
1961
|
}
|
|
1929
1962
|
}
|
|
1930
1963
|
}
|
|
1931
1964
|
|
|
1965
|
+
// Clean up environment variable
|
|
1966
|
+
if args.stdin_filename.is_some() {
|
|
1967
|
+
unsafe {
|
|
1968
|
+
std::env::remove_var("RUMDL_FILE_PATH");
|
|
1969
|
+
}
|
|
1970
|
+
}
|
|
1971
|
+
|
|
1932
1972
|
// Exit with error code if issues found
|
|
1933
1973
|
if has_issues {
|
|
1934
1974
|
exit::violations_found();
|
|
@@ -5,17 +5,11 @@ use crate::rule::{Fix, LintError, LintResult, LintWarning, Rule, RuleCategory, S
|
|
|
5
5
|
use crate::rule_config_serde::RuleConfig;
|
|
6
6
|
use crate::utils::document_structure::{DocumentStructure, DocumentStructureExtensions};
|
|
7
7
|
use crate::utils::regex_cache::ORDERED_LIST_MARKER_REGEX;
|
|
8
|
-
use lazy_static::lazy_static;
|
|
9
|
-
use regex::Regex;
|
|
10
8
|
use toml;
|
|
11
9
|
|
|
12
10
|
mod md029_config;
|
|
13
11
|
pub use md029_config::{ListStyle, MD029Config};
|
|
14
12
|
|
|
15
|
-
lazy_static! {
|
|
16
|
-
static ref FIX_LINE_REGEX: Regex = Regex::new(r"^(\s*)\d+(\.\s.*)$").unwrap();
|
|
17
|
-
}
|
|
18
|
-
|
|
19
13
|
#[derive(Debug, Clone, Default)]
|
|
20
14
|
pub struct MD029OrderedListPrefix {
|
|
21
15
|
config: MD029Config,
|
|
@@ -32,13 +26,6 @@ impl MD029OrderedListPrefix {
|
|
|
32
26
|
Self { config }
|
|
33
27
|
}
|
|
34
28
|
|
|
35
|
-
#[inline]
|
|
36
|
-
fn get_list_number(line: &str) -> Option<usize> {
|
|
37
|
-
ORDERED_LIST_MARKER_REGEX
|
|
38
|
-
.captures(line)
|
|
39
|
-
.and_then(|cap| cap[2].parse::<usize>().ok())
|
|
40
|
-
}
|
|
41
|
-
|
|
42
29
|
#[inline]
|
|
43
30
|
fn parse_marker_number(marker: &str) -> Option<usize> {
|
|
44
31
|
// Handle marker format like "1." or "1"
|
|
@@ -59,13 +46,6 @@ impl MD029OrderedListPrefix {
|
|
|
59
46
|
ListStyle::Ordered0 => index,
|
|
60
47
|
}
|
|
61
48
|
}
|
|
62
|
-
|
|
63
|
-
#[inline]
|
|
64
|
-
fn fix_line(&self, line: &str, expected_num: usize) -> String {
|
|
65
|
-
FIX_LINE_REGEX
|
|
66
|
-
.replace(line, format!("${{1}}{}{}", expected_num, "$2"))
|
|
67
|
-
.to_string()
|
|
68
|
-
}
|
|
69
49
|
}
|
|
70
50
|
|
|
71
51
|
impl Rule for MD029OrderedListPrefix {
|
|
@@ -158,121 +138,53 @@ impl Rule for MD029OrderedListPrefix {
|
|
|
158
138
|
}
|
|
159
139
|
|
|
160
140
|
fn fix(&self, ctx: &crate::lint_context::LintContext) -> Result<String, LintError> {
|
|
161
|
-
|
|
162
|
-
let
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
let trimmed = line.trim();
|
|
169
|
-
|
|
170
|
-
// Track code fences
|
|
171
|
-
if trimmed.starts_with("```") || trimmed.starts_with("~~~") {
|
|
172
|
-
in_code_fence = !in_code_fence;
|
|
173
|
-
result.push_str(line);
|
|
174
|
-
result.push('\n');
|
|
175
|
-
continue;
|
|
176
|
-
}
|
|
141
|
+
// Use the same logic as check() - just apply the fixes from warnings
|
|
142
|
+
let warnings = self.check(ctx)?;
|
|
143
|
+
|
|
144
|
+
if warnings.is_empty() {
|
|
145
|
+
// No changes needed
|
|
146
|
+
return Ok(ctx.content.to_string());
|
|
147
|
+
}
|
|
177
148
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
149
|
+
// Collect fixes and sort by position
|
|
150
|
+
// Only apply MD029 fixes (numbering), not MD029-style fixes (indentation)
|
|
151
|
+
let mut fixes: Vec<&Fix> = Vec::new();
|
|
152
|
+
for warning in &warnings {
|
|
153
|
+
// Skip MD029-style warnings (lazy continuation indentation)
|
|
154
|
+
if warning.rule_name == Some("MD029-style") {
|
|
182
155
|
continue;
|
|
183
156
|
}
|
|
184
|
-
if let Some(
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
result.push('\n');
|
|
202
|
-
*idx += 1;
|
|
203
|
-
continue;
|
|
204
|
-
}
|
|
205
|
-
// New deeper indent or first item
|
|
206
|
-
indent_stack.push((indent, 0));
|
|
207
|
-
let expected_num = self.get_expected_number(0);
|
|
208
|
-
let fixed_line = self.fix_line(line, expected_num);
|
|
209
|
-
result.push_str(&fixed_line);
|
|
210
|
-
result.push('\n');
|
|
211
|
-
// Increment the new top
|
|
212
|
-
if let Some(&mut (_, ref mut idx)) = indent_stack.last_mut() {
|
|
213
|
-
*idx += 1;
|
|
214
|
-
}
|
|
215
|
-
} else if !line.trim().is_empty() {
|
|
216
|
-
// Check if the line is indented enough to be part of a list item
|
|
217
|
-
let line_indent = line.chars().take_while(|c| c.is_whitespace()).count();
|
|
218
|
-
let is_continuation = indent_stack
|
|
219
|
-
.last()
|
|
220
|
-
.map(|&(list_indent, _)| {
|
|
221
|
-
// Allow lazy continuation (0-2 spaces) or proper continuation (3+ spaces)
|
|
222
|
-
line_indent <= 2 || line_indent >= list_indent + 3
|
|
223
|
-
})
|
|
224
|
-
.unwrap_or(false);
|
|
225
|
-
|
|
226
|
-
if is_continuation {
|
|
227
|
-
if line_indent <= 2 && !indent_stack.is_empty() {
|
|
228
|
-
// Check if this line is itself a list item or heading
|
|
229
|
-
let trimmed = line.trim();
|
|
230
|
-
let is_list_item = trimmed.starts_with("* ")
|
|
231
|
-
|| trimmed.starts_with("- ")
|
|
232
|
-
|| trimmed.starts_with("+ ")
|
|
233
|
-
|| (trimmed.len() > 2
|
|
234
|
-
&& trimmed.chars().next().unwrap().is_ascii_digit()
|
|
235
|
-
&& trimmed.contains(". "));
|
|
236
|
-
|
|
237
|
-
// Check if this is a heading (ATX style)
|
|
238
|
-
let is_heading = trimmed.starts_with('#')
|
|
239
|
-
&& trimmed.len() > 1
|
|
240
|
-
&& (trimmed.chars().nth(1) == Some(' ') || trimmed.chars().nth(1) == Some('#'));
|
|
241
|
-
|
|
242
|
-
if !is_list_item && !is_heading {
|
|
243
|
-
// This is a lazy continuation - fix it by adding proper indentation
|
|
244
|
-
let (list_indent, _) = indent_stack.last().unwrap();
|
|
245
|
-
let proper_indent = " ".repeat(list_indent + 3);
|
|
246
|
-
result.push_str(&proper_indent);
|
|
247
|
-
result.push_str(line.trim_start());
|
|
248
|
-
result.push('\n');
|
|
249
|
-
} else {
|
|
250
|
-
// This is a list item or heading, not a continuation - it breaks the list
|
|
251
|
-
indent_stack.clear();
|
|
252
|
-
result.push_str(line);
|
|
253
|
-
result.push('\n');
|
|
254
|
-
}
|
|
255
|
-
} else {
|
|
256
|
-
// This line is properly indented
|
|
257
|
-
result.push_str(line);
|
|
258
|
-
result.push('\n');
|
|
259
|
-
}
|
|
260
|
-
} else {
|
|
261
|
-
// Non-list, non-blank line breaks the list
|
|
262
|
-
indent_stack.clear();
|
|
263
|
-
result.push_str(line);
|
|
264
|
-
result.push('\n');
|
|
265
|
-
}
|
|
266
|
-
} else {
|
|
267
|
-
// Blank line - don't clear the stack, as lists can have blank lines within them
|
|
268
|
-
result.push_str(line);
|
|
269
|
-
result.push('\n');
|
|
157
|
+
if let Some(ref fix) = warning.fix {
|
|
158
|
+
fixes.push(fix);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
fixes.sort_by_key(|f| f.range.start);
|
|
162
|
+
|
|
163
|
+
let mut result = String::new();
|
|
164
|
+
let mut last_pos = 0;
|
|
165
|
+
let content_bytes = ctx.content.as_bytes();
|
|
166
|
+
|
|
167
|
+
for fix in fixes {
|
|
168
|
+
// Add content before the fix
|
|
169
|
+
if last_pos < fix.range.start {
|
|
170
|
+
let chunk = &content_bytes[last_pos..fix.range.start];
|
|
171
|
+
result.push_str(
|
|
172
|
+
std::str::from_utf8(chunk).map_err(|_| LintError::InvalidInput("Invalid UTF-8".to_string()))?,
|
|
173
|
+
);
|
|
270
174
|
}
|
|
175
|
+
// Add the replacement
|
|
176
|
+
result.push_str(&fix.replacement);
|
|
177
|
+
last_pos = fix.range.end;
|
|
271
178
|
}
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
179
|
+
|
|
180
|
+
// Add remaining content
|
|
181
|
+
if last_pos < content_bytes.len() {
|
|
182
|
+
let chunk = &content_bytes[last_pos..];
|
|
183
|
+
result.push_str(
|
|
184
|
+
std::str::from_utf8(chunk).map_err(|_| LintError::InvalidInput("Invalid UTF-8".to_string()))?,
|
|
185
|
+
);
|
|
275
186
|
}
|
|
187
|
+
|
|
276
188
|
Ok(result)
|
|
277
189
|
}
|
|
278
190
|
|
|
@@ -671,7 +583,14 @@ impl MD029OrderedListPrefix {
|
|
|
671
583
|
if actual_num != expected_num {
|
|
672
584
|
// Calculate byte position for the fix
|
|
673
585
|
let marker_start = line_info.byte_offset + list_item.marker_column;
|
|
674
|
-
|
|
586
|
+
// Use the actual marker length (e.g., "05" is 2 chars, not 1)
|
|
587
|
+
let number_len = if let Some(dot_pos) = list_item.marker.find('.') {
|
|
588
|
+
dot_pos // Length up to the dot
|
|
589
|
+
} else if let Some(paren_pos) = list_item.marker.find(')') {
|
|
590
|
+
paren_pos // Length up to the paren
|
|
591
|
+
} else {
|
|
592
|
+
list_item.marker.len() // Fallback to full marker length
|
|
593
|
+
};
|
|
675
594
|
|
|
676
595
|
warnings.push(LintWarning {
|
|
677
596
|
rule_name: Some(self.name()),
|
|
@@ -1255,6 +1255,38 @@ fn test_stdin_check_without_fix() {
|
|
|
1255
1255
|
assert!(!output.status.success());
|
|
1256
1256
|
}
|
|
1257
1257
|
|
|
1258
|
+
#[test]
|
|
1259
|
+
fn test_stdin_formatting_no_issues() {
|
|
1260
|
+
let rumdl_exe = env!("CARGO_BIN_EXE_rumdl");
|
|
1261
|
+
|
|
1262
|
+
// Test that formatting mode outputs the original content when there are no issues
|
|
1263
|
+
// This was a bug where it would output "No issues found in stdin" instead
|
|
1264
|
+
let input = "# Clean Markdown\n\nThis markdown has no issues.\n";
|
|
1265
|
+
let mut cmd = Command::new(rumdl_exe);
|
|
1266
|
+
cmd.arg("fmt").arg("-").arg("--quiet");
|
|
1267
|
+
cmd.stdin(std::process::Stdio::piped());
|
|
1268
|
+
cmd.stdout(std::process::Stdio::piped());
|
|
1269
|
+
cmd.stderr(std::process::Stdio::piped());
|
|
1270
|
+
|
|
1271
|
+
let mut child = cmd.spawn().expect("Failed to spawn command");
|
|
1272
|
+
|
|
1273
|
+
// Write input to stdin
|
|
1274
|
+
use std::io::Write;
|
|
1275
|
+
let mut stdin = child.stdin.take().expect("Failed to open stdin");
|
|
1276
|
+
stdin.write_all(input.as_bytes()).expect("Failed to write to stdin");
|
|
1277
|
+
drop(stdin);
|
|
1278
|
+
|
|
1279
|
+
let output = child.wait_with_output().expect("Failed to wait for command");
|
|
1280
|
+
let stdout = String::from_utf8_lossy(&output.stdout);
|
|
1281
|
+
let stderr = String::from_utf8_lossy(&output.stderr);
|
|
1282
|
+
|
|
1283
|
+
// Should output the original content unchanged
|
|
1284
|
+
assert_eq!(stdout, input, "fmt should output original content when no issues found");
|
|
1285
|
+
// No errors should be on stderr in quiet mode
|
|
1286
|
+
assert_eq!(stderr, "");
|
|
1287
|
+
assert!(output.status.success());
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1258
1290
|
#[test]
|
|
1259
1291
|
fn test_stdin_dash_syntax() {
|
|
1260
1292
|
let rumdl_exe = env!("CARGO_BIN_EXE_rumdl");
|
|
@@ -1287,6 +1319,81 @@ fn test_stdin_dash_syntax() {
|
|
|
1287
1319
|
assert!(stderr.contains("Found 3 issue(s)"));
|
|
1288
1320
|
}
|
|
1289
1321
|
|
|
1322
|
+
#[test]
|
|
1323
|
+
fn test_stdin_filename_flag() {
|
|
1324
|
+
let rumdl_exe = env!("CARGO_BIN_EXE_rumdl");
|
|
1325
|
+
|
|
1326
|
+
// Test that --stdin-filename changes the displayed filename in error messages
|
|
1327
|
+
let input = "# Test \n\nTest paragraph ";
|
|
1328
|
+
let mut cmd = Command::new(rumdl_exe);
|
|
1329
|
+
cmd.arg("check").arg("-").arg("--stdin-filename").arg("test-file.md");
|
|
1330
|
+
cmd.stdin(std::process::Stdio::piped());
|
|
1331
|
+
cmd.stdout(std::process::Stdio::piped());
|
|
1332
|
+
cmd.stderr(std::process::Stdio::piped());
|
|
1333
|
+
|
|
1334
|
+
let mut child = cmd.spawn().expect("Failed to spawn command");
|
|
1335
|
+
|
|
1336
|
+
// Write input to stdin
|
|
1337
|
+
use std::io::Write;
|
|
1338
|
+
let mut stdin = child.stdin.take().expect("Failed to open stdin");
|
|
1339
|
+
stdin.write_all(input.as_bytes()).expect("Failed to write to stdin");
|
|
1340
|
+
drop(stdin);
|
|
1341
|
+
|
|
1342
|
+
let output = child.wait_with_output().expect("Failed to wait for command");
|
|
1343
|
+
let stdout = String::from_utf8_lossy(&output.stdout);
|
|
1344
|
+
let stderr = String::from_utf8_lossy(&output.stderr);
|
|
1345
|
+
|
|
1346
|
+
// Should not output content to stdout in check mode
|
|
1347
|
+
assert_eq!(stdout, "");
|
|
1348
|
+
// Should show the custom filename in error messages
|
|
1349
|
+
assert!(
|
|
1350
|
+
stderr.contains("test-file.md:1:"),
|
|
1351
|
+
"Error message should contain custom filename"
|
|
1352
|
+
);
|
|
1353
|
+
assert!(
|
|
1354
|
+
stderr.contains("test-file.md:3:"),
|
|
1355
|
+
"Error message should contain custom filename for line 3"
|
|
1356
|
+
);
|
|
1357
|
+
assert!(stderr.contains("in test-file.md"), "Summary should use custom filename");
|
|
1358
|
+
// Should still detect the issues
|
|
1359
|
+
assert!(stderr.contains("MD009"));
|
|
1360
|
+
}
|
|
1361
|
+
|
|
1362
|
+
#[test]
|
|
1363
|
+
fn test_stdin_filename_in_fmt_mode() {
|
|
1364
|
+
let rumdl_exe = env!("CARGO_BIN_EXE_rumdl");
|
|
1365
|
+
|
|
1366
|
+
// Test that --stdin-filename also works in fmt mode
|
|
1367
|
+
let input = "# Clean Markdown\n\nNo issues here.\n";
|
|
1368
|
+
let mut cmd = Command::new(rumdl_exe);
|
|
1369
|
+
cmd.arg("fmt")
|
|
1370
|
+
.arg("-")
|
|
1371
|
+
.arg("--stdin-filename")
|
|
1372
|
+
.arg("custom-file.md")
|
|
1373
|
+
.arg("--quiet");
|
|
1374
|
+
cmd.stdin(std::process::Stdio::piped());
|
|
1375
|
+
cmd.stdout(std::process::Stdio::piped());
|
|
1376
|
+
cmd.stderr(std::process::Stdio::piped());
|
|
1377
|
+
|
|
1378
|
+
let mut child = cmd.spawn().expect("Failed to spawn command");
|
|
1379
|
+
|
|
1380
|
+
// Write input to stdin
|
|
1381
|
+
use std::io::Write;
|
|
1382
|
+
let mut stdin = child.stdin.take().expect("Failed to open stdin");
|
|
1383
|
+
stdin.write_all(input.as_bytes()).expect("Failed to write to stdin");
|
|
1384
|
+
drop(stdin);
|
|
1385
|
+
|
|
1386
|
+
let output = child.wait_with_output().expect("Failed to wait for command");
|
|
1387
|
+
let stdout = String::from_utf8_lossy(&output.stdout);
|
|
1388
|
+
let stderr = String::from_utf8_lossy(&output.stderr);
|
|
1389
|
+
|
|
1390
|
+
// In fmt mode with no issues, should output the original content
|
|
1391
|
+
assert_eq!(stdout, input, "Should output original content");
|
|
1392
|
+
// No errors should be on stderr in quiet mode
|
|
1393
|
+
assert_eq!(stderr, "");
|
|
1394
|
+
assert!(output.status.success());
|
|
1395
|
+
}
|
|
1396
|
+
|
|
1290
1397
|
#[test]
|
|
1291
1398
|
fn test_fmt_dash_syntax() {
|
|
1292
1399
|
let rumdl_exe = env!("CARGO_BIN_EXE_rumdl");
|