mirror of
https://github.com/denoland/deno.git
synced 2024-11-24 15:19:26 -05:00
fix(fmt): --check was broken for CSS, YAML and HTML (#25848)
`deno fmt --check` was broken for CSS, YAML and HTML files. Before this PR, formatting any of these file types would return a string, even though the contract in `cli/tools/fmt.rs` is to only return a string if the formatting changed. This causes wrong flagging of these files as being badly formatted even though diffs showed nothing (because they were in fact formatted properly). Closes https://github.com/denoland/deno/issues/25840
This commit is contained in:
parent
7d7e541724
commit
3242550f5f
7 changed files with 82 additions and 24 deletions
|
@ -297,12 +297,7 @@ fn format_markdown(
|
|||
Ok(None)
|
||||
}
|
||||
}
|
||||
"yml" | "yaml" => pretty_yaml::format_text(
|
||||
text,
|
||||
&get_resolved_yaml_config(fmt_options),
|
||||
)
|
||||
.map(Some)
|
||||
.map_err(AnyError::from),
|
||||
"yml" | "yaml" => format_yaml(text, fmt_options),
|
||||
_ => {
|
||||
let mut codeblock_config =
|
||||
get_resolved_typescript_config(fmt_options);
|
||||
|
@ -339,13 +334,33 @@ pub fn format_css(
|
|||
file_text: &str,
|
||||
fmt_options: &FmtOptionsConfig,
|
||||
) -> Result<Option<String>, AnyError> {
|
||||
malva::format_text(
|
||||
let formatted_str = malva::format_text(
|
||||
file_text,
|
||||
malva::detect_syntax(file_path).unwrap_or(malva::Syntax::Css),
|
||||
&get_resolved_malva_config(fmt_options),
|
||||
)
|
||||
.map(Some)
|
||||
.map_err(AnyError::from)
|
||||
.map_err(AnyError::from)?;
|
||||
|
||||
Ok(if formatted_str == file_text {
|
||||
None
|
||||
} else {
|
||||
Some(formatted_str)
|
||||
})
|
||||
}
|
||||
|
||||
fn format_yaml(
|
||||
file_text: &str,
|
||||
fmt_options: &FmtOptionsConfig,
|
||||
) -> Result<Option<String>, AnyError> {
|
||||
let formatted_str =
|
||||
pretty_yaml::format_text(file_text, &get_resolved_yaml_config(fmt_options))
|
||||
.map_err(AnyError::from)?;
|
||||
|
||||
Ok(if formatted_str == file_text {
|
||||
None
|
||||
} else {
|
||||
Some(formatted_str)
|
||||
})
|
||||
}
|
||||
|
||||
pub fn format_html(
|
||||
|
@ -353,7 +368,7 @@ pub fn format_html(
|
|||
file_text: &str,
|
||||
fmt_options: &FmtOptionsConfig,
|
||||
) -> Result<Option<String>, AnyError> {
|
||||
markup_fmt::format_text(
|
||||
let format_result = markup_fmt::format_text(
|
||||
file_text,
|
||||
markup_fmt::detect_language(file_path)
|
||||
.unwrap_or(markup_fmt::Language::Html),
|
||||
|
@ -419,7 +434,6 @@ pub fn format_html(
|
|||
}
|
||||
},
|
||||
)
|
||||
.map(Some)
|
||||
.map_err(|error| match error {
|
||||
markup_fmt::FormatError::Syntax(error) => AnyError::from(error),
|
||||
markup_fmt::FormatError::External(errors) => {
|
||||
|
@ -438,6 +452,14 @@ pub fn format_html(
|
|||
.collect::<String>(),
|
||||
)
|
||||
}
|
||||
});
|
||||
|
||||
let formatted_str = format_result?;
|
||||
|
||||
Ok(if formatted_str == file_text {
|
||||
None
|
||||
} else {
|
||||
Some(formatted_str)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -469,12 +491,7 @@ pub fn format_file(
|
|||
Ok(None)
|
||||
}
|
||||
}
|
||||
"yml" | "yaml" => pretty_yaml::format_text(
|
||||
file_text,
|
||||
&get_resolved_yaml_config(fmt_options),
|
||||
)
|
||||
.map(Some)
|
||||
.map_err(AnyError::from),
|
||||
"yml" | "yaml" => format_yaml(file_text, fmt_options),
|
||||
"ipynb" => dprint_plugin_jupyter::format_text(
|
||||
file_text,
|
||||
|file_path: &Path, file_text: String| {
|
||||
|
|
|
@ -1,5 +1,13 @@
|
|||
{
|
||||
"tempDir": true,
|
||||
"args": "fmt",
|
||||
"tests": {
|
||||
"badly_formatted": {
|
||||
"args": "fmt badly_formatted.css",
|
||||
"output": "[WILDLINE]badly_formatted.css\nChecked 1 file\n"
|
||||
},
|
||||
"well_formatted": {
|
||||
"args": "fmt --check well_formatted.css",
|
||||
"output": "Checked 1 file\n"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
3
tests/specs/fmt/css/well_formatted.css
Normal file
3
tests/specs/fmt/css/well_formatted.css
Normal file
|
@ -0,0 +1,3 @@
|
|||
#app > .btn {
|
||||
color: #000;
|
||||
}
|
|
@ -1,5 +1,13 @@
|
|||
{
|
||||
"tempDir": true,
|
||||
"args": "fmt --unstable-html",
|
||||
"tests": {
|
||||
"badly_formatted": {
|
||||
"args": "fmt badly_formatted.html",
|
||||
"output": "[WILDLINE]badly_formatted.html\nChecked 1 file\n"
|
||||
},
|
||||
"well_formatted": {
|
||||
"args": "fmt --check well_formatted.html",
|
||||
"output": "Checked 1 file\n"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
11
tests/specs/fmt/html/well_formatted.html
Normal file
11
tests/specs/fmt/html/well_formatted.html
Normal file
|
@ -0,0 +1,11 @@
|
|||
<div class="container">content</div>
|
||||
|
||||
<script>
|
||||
let counter = 0;
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.container {
|
||||
padding: 8px;
|
||||
}
|
||||
</style>
|
|
@ -1,5 +1,13 @@
|
|||
{
|
||||
"tempDir": true,
|
||||
"args": "fmt",
|
||||
"tests": {
|
||||
"badly_formatted": {
|
||||
"args": "fmt badly_formatted.yml",
|
||||
"output": "[WILDLINE]badly_formatted.yml\nChecked 1 file\n"
|
||||
},
|
||||
"well_formatted": {
|
||||
"args": "fmt --check well_formatted.yml",
|
||||
"output": "Checked 1 file\n"
|
||||
}
|
||||
}
|
||||
}
|
3
tests/specs/fmt/yaml/well_formatted.yml
Normal file
3
tests/specs/fmt/yaml/well_formatted.yml
Normal file
|
@ -0,0 +1,3 @@
|
|||
- Test
|
||||
- Test
|
||||
- Test
|
Loading…
Reference in a new issue