diff --git a/Cargo.lock b/Cargo.lock index 8bb4d7c9403d..044d18c49d45 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -493,7 +493,6 @@ dependencies = [ "rustc-hash 2.1.1", "schemars", "serde", - "tracing", "unicode-width 0.1.12", ] @@ -810,6 +809,8 @@ dependencies = [ name = "biome_html_syntax" version = "0.5.7" dependencies = [ + "biome_html_factory", + "biome_html_parser", "biome_rowan", "biome_string_case", "camino", diff --git a/crates/biome_cli/tests/cases/html.rs b/crates/biome_cli/tests/cases/html.rs index d7a27a71318e..c82391a7d094 100644 --- a/crates/biome_cli/tests/cases/html.rs +++ b/crates/biome_cli/tests/cases/html.rs @@ -90,3 +90,96 @@ fn should_not_error_when_interpolation_is_enabled() { result, )); } + +#[test] +fn should_format_indent_embedded_languages() { + let fs = MemoryFileSystem::default(); + let mut console = BufferConsole::default(); + + let html_file = Utf8Path::new("file.html"); + fs.insert( + html_file.into(), + r#" + +"# + .as_bytes(), + ); + + fs.insert( + Utf8Path::new("biome.json").into(), + r#"{ + "html": { + "formatter": { + "enabled": true, + "indentScriptAndStyle": true + } + } +}"# + .as_bytes(), + ); + + let (fs, result) = run_cli( + fs, + &mut console, + Args::from(["format", "--write", html_file.as_str()].as_slice()), + ); + + assert!(result.is_ok(), "run_cli returned {result:?}"); + + assert_cli_snapshot(SnapshotPayload::new( + module_path!(), + "should_format_indent_embedded_languages", + fs, + console, + result, + )); +} + +#[test] +fn should_format_indent_embedded_languages_with_language_options() { + let fs = MemoryFileSystem::default(); + let mut console = BufferConsole::default(); + + let html_file = Utf8Path::new("file.html"); + fs.insert( + html_file.into(), + r#" + +"# + .as_bytes(), + ); + + fs.insert( + Utf8Path::new("biome.json").into(), + r#"{ + "html": { + "formatter": { + "enabled": true, + "indentScriptAndStyle": true + } + }, + "javascript": { + "formatter": { + "quoteStyle": "single" + } + } +}"# + .as_bytes(), + ); + + let (fs, result) = run_cli( + fs, + &mut console, + Args::from(["format", "--write", html_file.as_str()].as_slice()), + ); + + assert!(result.is_ok(), "run_cli returned {result:?}"); + + assert_cli_snapshot(SnapshotPayload::new( + module_path!(), + "should_format_indent_embedded_languages_with_language_options", + fs, + console, + result, + )); +} diff --git a/crates/biome_cli/tests/snapshots/main_cases_html/should_format_indent_embedded_languages.snap b/crates/biome_cli/tests/snapshots/main_cases_html/should_format_indent_embedded_languages.snap new file mode 100644 index 000000000000..5908c428fe34 --- /dev/null +++ b/crates/biome_cli/tests/snapshots/main_cases_html/should_format_indent_embedded_languages.snap @@ -0,0 +1,40 @@ +--- +source: crates/biome_cli/tests/snap_test.rs +expression: redactor(content) +--- +## `biome.json` + +```json +{ + "html": { + "formatter": { + "enabled": true, + "indentScriptAndStyle": true + } + } +} +``` + +## `file.html` + +```html + + + +``` + +# Emitted Messages + +```block +Formatted 1 file in