From ac93a779e79da589aae39912dfe819064a86e553 Mon Sep 17 00:00:00 2001 From: Kevin Amado Date: Sat, 23 Nov 2024 14:39:03 -0700 Subject: [PATCH] feat: rebase Vladimir's pr --- src/alejandra/src/builder.rs | 11 ++++-- src/alejandra/src/config.rs | 17 ++++++++- src/alejandra/src/format.rs | 3 +- .../tests/cases/{ => default}/apply/in.nix | 0 .../tests/cases/{ => default}/apply/out.nix | 0 .../tests/cases/{ => default}/assert/in.nix | 0 .../tests/cases/{ => default}/assert/out.nix | 0 .../tests/cases/{ => default}/attr_set/in.nix | 0 .../cases/{ => default}/attr_set/out.nix | 0 .../tests/cases/{ => default}/bin_op/in.nix | 0 .../tests/cases/{ => default}/bin_op/out.nix | 0 .../tests/cases/{ => default}/comment/in.nix | 0 .../tests/cases/{ => default}/comment/out.nix | 0 .../tests/cases/{ => default}/dynamic/in.nix | 0 .../tests/cases/{ => default}/dynamic/out.nix | 0 .../tests/cases/{ => default}/error/in.nix | 0 .../tests/cases/{ => default}/error/out.nix | 0 .../tests/cases/{ => default}/idioms/in.nix | 0 .../tests/cases/{ => default}/idioms/out.nix | 0 .../cases/{ => default}/idioms_lib_1/in.nix | 0 .../cases/{ => default}/idioms_lib_1/out.nix | 0 .../cases/{ => default}/idioms_lib_2/in.nix | 0 .../cases/{ => default}/idioms_lib_2/out.nix | 0 .../cases/{ => default}/idioms_nixos_1/in.nix | 0 .../{ => default}/idioms_nixos_1/out.nix | 0 .../cases/{ => default}/idioms_pkgs_1/in.nix | 0 .../cases/{ => default}/idioms_pkgs_1/out.nix | 0 .../cases/{ => default}/idioms_pkgs_2/in.nix | 0 .../cases/{ => default}/idioms_pkgs_2/out.nix | 0 .../cases/{ => default}/idioms_pkgs_3/in.nix | 0 .../cases/{ => default}/idioms_pkgs_3/out.nix | 0 .../tests/cases/{ => default}/if_else/in.nix | 0 .../tests/cases/{ => default}/if_else/out.nix | 0 .../tests/cases/{ => default}/inherit/in.nix | 0 .../tests/cases/{ => default}/inherit/out.nix | 0 .../inherit_blank_trailing/in.nix | 0 .../inherit_blank_trailing/out.nix | 0 .../{ => default}/inherit_comment/in.nix | 0 .../{ => default}/inherit_comment/out.nix | 0 .../cases/{ => default}/inherit_from/in.nix | 0 .../cases/{ => default}/inherit_from/out.nix | 0 .../cases/{ => default}/key_value/in.nix | 0 .../cases/{ => default}/key_value/out.nix | 0 .../tests/cases/{ => default}/lambda/in.nix | 0 .../tests/cases/{ => default}/lambda/out.nix | 0 .../tests/cases/{ => default}/let_in/in.nix | 0 .../tests/cases/{ => default}/let_in/out.nix | 0 .../tests/cases/{ => default}/lists/in.nix | 0 .../tests/cases/{ => default}/lists/out.nix | 0 .../cases/{ => default}/monsters_1/in.nix | 0 .../cases/{ => default}/monsters_1/out.nix | 0 .../cases/{ => default}/monsters_2/in.nix | 0 .../cases/{ => default}/monsters_2/out.nix | 0 .../cases/{ => default}/monsters_3/in.nix | 0 .../cases/{ => default}/monsters_3/out.nix | 0 .../cases/{ => default}/monsters_4/in.nix | 0 .../cases/{ => default}/monsters_4/out.nix | 0 .../cases/{ => default}/monsters_5/in.nix | 0 .../cases/{ => default}/monsters_5/out.nix | 0 .../cases/{ => default}/or_default/in.nix | 0 .../cases/{ => default}/or_default/out.nix | 0 .../tests/cases/{ => default}/paren/in.nix | 0 .../tests/cases/{ => default}/paren/out.nix | 0 .../tests/cases/{ => default}/pat_bind/in.nix | 0 .../cases/{ => default}/pat_bind/out.nix | 0 .../tests/cases/{ => default}/pattern/in.nix | 0 .../tests/cases/{ => default}/pattern/out.nix | 0 .../tests/cases/{ => default}/root/in.nix | 0 .../tests/cases/{ => default}/root/out.nix | 0 .../tests/cases/{ => default}/select/in.nix | 0 .../tests/cases/{ => default}/select/out.nix | 0 .../tests/cases/{ => default}/string/in.nix | 0 .../tests/cases/{ => default}/string/out.nix | 0 .../{ => default}/string_interpol/in.nix | 0 .../{ => default}/string_interpol/out.nix | 0 .../tests/cases/{ => default}/with/in.nix | 0 .../tests/cases/{ => default}/with/out.nix | 0 .../indentation-tabs}/apply/in.nix | 0 .../indentation-tabs}/apply/out.nix | 0 .../indentation-tabs/attr-set}/in.nix | 0 .../indentation-tabs/attr-set}/out.nix | 0 .../indentation-tabs}/list/in.nix | 0 .../indentation-tabs}/list/out.nix | 0 src/alejandra/tests/fmt.rs | 37 ++++++++++++------- 84 files changed, 48 insertions(+), 20 deletions(-) rename src/alejandra/tests/cases/{ => default}/apply/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/apply/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/assert/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/assert/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/attr_set/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/attr_set/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/bin_op/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/bin_op/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/comment/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/comment/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/dynamic/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/dynamic/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/error/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/error/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/idioms/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/idioms/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/idioms_lib_1/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/idioms_lib_1/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/idioms_lib_2/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/idioms_lib_2/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/idioms_nixos_1/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/idioms_nixos_1/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/idioms_pkgs_1/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/idioms_pkgs_1/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/idioms_pkgs_2/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/idioms_pkgs_2/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/idioms_pkgs_3/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/idioms_pkgs_3/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/if_else/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/if_else/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/inherit/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/inherit/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/inherit_blank_trailing/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/inherit_blank_trailing/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/inherit_comment/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/inherit_comment/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/inherit_from/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/inherit_from/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/key_value/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/key_value/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/lambda/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/lambda/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/let_in/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/let_in/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/lists/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/lists/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/monsters_1/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/monsters_1/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/monsters_2/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/monsters_2/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/monsters_3/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/monsters_3/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/monsters_4/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/monsters_4/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/monsters_5/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/monsters_5/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/or_default/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/or_default/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/paren/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/paren/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/pat_bind/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/pat_bind/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/pattern/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/pattern/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/root/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/root/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/select/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/select/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/string/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/string/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/string_interpol/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/string_interpol/out.nix (100%) rename src/alejandra/tests/cases/{ => default}/with/in.nix (100%) rename src/alejandra/tests/cases/{ => default}/with/out.nix (100%) rename src/alejandra/tests/{indent => cases/indentation-tabs}/apply/in.nix (100%) rename src/alejandra/tests/{indent => cases/indentation-tabs}/apply/out.nix (100%) rename src/alejandra/tests/{indent/attr_set => cases/indentation-tabs/attr-set}/in.nix (100%) rename src/alejandra/tests/{indent/attr_set => cases/indentation-tabs/attr-set}/out.nix (100%) rename src/alejandra/tests/{indent => cases/indentation-tabs}/list/in.nix (100%) rename src/alejandra/tests/{indent => cases/indentation-tabs}/list/out.nix (100%) diff --git a/src/alejandra/src/builder.rs b/src/alejandra/src/builder.rs index a455464..f8fb830 100644 --- a/src/alejandra/src/builder.rs +++ b/src/alejandra/src/builder.rs @@ -1,4 +1,5 @@ use crate::config::Config; +use crate::config::Indentation; #[derive(PartialEq)] pub(crate) enum Step { @@ -15,14 +16,13 @@ pub(crate) enum Step { #[derive(Clone)] pub(crate) struct BuildCtx { - pub _config: Config, + pub config: Config, pub force_wide: bool, pub force_wide_success: bool, pub indentation: usize, pub pos_old: crate::position::Position, pub path: String, pub vertical: bool, - pub indent: String, } pub(crate) fn build( @@ -100,7 +100,12 @@ fn build_step( add_token( builder, rnix::SyntaxKind::TOKEN_WHITESPACE, - &build_ctx.indent.repeat(build_ctx.indentation), + &match build_ctx.config.indentation { + Indentation::FourSpaces => " ", + Indentation::Tabs => "\t", + Indentation::TwoSpaces => " ", + } + .repeat(build_ctx.indentation), ); } } diff --git a/src/alejandra/src/config.rs b/src/alejandra/src/config.rs index 1786994..3fd03ed 100644 --- a/src/alejandra/src/config.rs +++ b/src/alejandra/src/config.rs @@ -2,4 +2,19 @@ use serde::Deserialize; /// Configuration used by the formatter #[derive(Clone, Copy, Default, Deserialize)] -pub struct Config {} +pub struct Config { + /// Indentation to use + pub indentation: Indentation, +} + +#[derive(Clone, Copy, Default, Deserialize)] +/// Indentation options +pub enum Indentation { + /// Four spaces + FourSpaces, + /// Tabs + Tabs, + #[default] + /// Two spaces + TwoSpaces, +} diff --git a/src/alejandra/src/format.rs b/src/alejandra/src/format.rs index 3bec33e..dd3e89a 100644 --- a/src/alejandra/src/format.rs +++ b/src/alejandra/src/format.rs @@ -32,14 +32,13 @@ pub fn in_memory( } let mut build_ctx = crate::builder::BuildCtx { - _config: config, + config, force_wide: false, force_wide_success: true, indentation: 0, path, pos_old: crate::position::Position::default(), vertical: true, - indent, }; let after = crate::builder::build(&mut build_ctx, ast.node().into()) diff --git a/src/alejandra/tests/cases/apply/in.nix b/src/alejandra/tests/cases/default/apply/in.nix similarity index 100% rename from src/alejandra/tests/cases/apply/in.nix rename to src/alejandra/tests/cases/default/apply/in.nix diff --git a/src/alejandra/tests/cases/apply/out.nix b/src/alejandra/tests/cases/default/apply/out.nix similarity index 100% rename from src/alejandra/tests/cases/apply/out.nix rename to src/alejandra/tests/cases/default/apply/out.nix diff --git a/src/alejandra/tests/cases/assert/in.nix b/src/alejandra/tests/cases/default/assert/in.nix similarity index 100% rename from src/alejandra/tests/cases/assert/in.nix rename to src/alejandra/tests/cases/default/assert/in.nix diff --git a/src/alejandra/tests/cases/assert/out.nix b/src/alejandra/tests/cases/default/assert/out.nix similarity index 100% rename from src/alejandra/tests/cases/assert/out.nix rename to src/alejandra/tests/cases/default/assert/out.nix diff --git a/src/alejandra/tests/cases/attr_set/in.nix b/src/alejandra/tests/cases/default/attr_set/in.nix similarity index 100% rename from src/alejandra/tests/cases/attr_set/in.nix rename to src/alejandra/tests/cases/default/attr_set/in.nix diff --git a/src/alejandra/tests/cases/attr_set/out.nix b/src/alejandra/tests/cases/default/attr_set/out.nix similarity index 100% rename from src/alejandra/tests/cases/attr_set/out.nix rename to src/alejandra/tests/cases/default/attr_set/out.nix diff --git a/src/alejandra/tests/cases/bin_op/in.nix b/src/alejandra/tests/cases/default/bin_op/in.nix similarity index 100% rename from src/alejandra/tests/cases/bin_op/in.nix rename to src/alejandra/tests/cases/default/bin_op/in.nix diff --git a/src/alejandra/tests/cases/bin_op/out.nix b/src/alejandra/tests/cases/default/bin_op/out.nix similarity index 100% rename from src/alejandra/tests/cases/bin_op/out.nix rename to src/alejandra/tests/cases/default/bin_op/out.nix diff --git a/src/alejandra/tests/cases/comment/in.nix b/src/alejandra/tests/cases/default/comment/in.nix similarity index 100% rename from src/alejandra/tests/cases/comment/in.nix rename to src/alejandra/tests/cases/default/comment/in.nix diff --git a/src/alejandra/tests/cases/comment/out.nix b/src/alejandra/tests/cases/default/comment/out.nix similarity index 100% rename from src/alejandra/tests/cases/comment/out.nix rename to src/alejandra/tests/cases/default/comment/out.nix diff --git a/src/alejandra/tests/cases/dynamic/in.nix b/src/alejandra/tests/cases/default/dynamic/in.nix similarity index 100% rename from src/alejandra/tests/cases/dynamic/in.nix rename to src/alejandra/tests/cases/default/dynamic/in.nix diff --git a/src/alejandra/tests/cases/dynamic/out.nix b/src/alejandra/tests/cases/default/dynamic/out.nix similarity index 100% rename from src/alejandra/tests/cases/dynamic/out.nix rename to src/alejandra/tests/cases/default/dynamic/out.nix diff --git a/src/alejandra/tests/cases/error/in.nix b/src/alejandra/tests/cases/default/error/in.nix similarity index 100% rename from src/alejandra/tests/cases/error/in.nix rename to src/alejandra/tests/cases/default/error/in.nix diff --git a/src/alejandra/tests/cases/error/out.nix b/src/alejandra/tests/cases/default/error/out.nix similarity index 100% rename from src/alejandra/tests/cases/error/out.nix rename to src/alejandra/tests/cases/default/error/out.nix diff --git a/src/alejandra/tests/cases/idioms/in.nix b/src/alejandra/tests/cases/default/idioms/in.nix similarity index 100% rename from src/alejandra/tests/cases/idioms/in.nix rename to src/alejandra/tests/cases/default/idioms/in.nix diff --git a/src/alejandra/tests/cases/idioms/out.nix b/src/alejandra/tests/cases/default/idioms/out.nix similarity index 100% rename from src/alejandra/tests/cases/idioms/out.nix rename to src/alejandra/tests/cases/default/idioms/out.nix diff --git a/src/alejandra/tests/cases/idioms_lib_1/in.nix b/src/alejandra/tests/cases/default/idioms_lib_1/in.nix similarity index 100% rename from src/alejandra/tests/cases/idioms_lib_1/in.nix rename to src/alejandra/tests/cases/default/idioms_lib_1/in.nix diff --git a/src/alejandra/tests/cases/idioms_lib_1/out.nix b/src/alejandra/tests/cases/default/idioms_lib_1/out.nix similarity index 100% rename from src/alejandra/tests/cases/idioms_lib_1/out.nix rename to src/alejandra/tests/cases/default/idioms_lib_1/out.nix diff --git a/src/alejandra/tests/cases/idioms_lib_2/in.nix b/src/alejandra/tests/cases/default/idioms_lib_2/in.nix similarity index 100% rename from src/alejandra/tests/cases/idioms_lib_2/in.nix rename to src/alejandra/tests/cases/default/idioms_lib_2/in.nix diff --git a/src/alejandra/tests/cases/idioms_lib_2/out.nix b/src/alejandra/tests/cases/default/idioms_lib_2/out.nix similarity index 100% rename from src/alejandra/tests/cases/idioms_lib_2/out.nix rename to src/alejandra/tests/cases/default/idioms_lib_2/out.nix diff --git a/src/alejandra/tests/cases/idioms_nixos_1/in.nix b/src/alejandra/tests/cases/default/idioms_nixos_1/in.nix similarity index 100% rename from src/alejandra/tests/cases/idioms_nixos_1/in.nix rename to src/alejandra/tests/cases/default/idioms_nixos_1/in.nix diff --git a/src/alejandra/tests/cases/idioms_nixos_1/out.nix b/src/alejandra/tests/cases/default/idioms_nixos_1/out.nix similarity index 100% rename from src/alejandra/tests/cases/idioms_nixos_1/out.nix rename to src/alejandra/tests/cases/default/idioms_nixos_1/out.nix diff --git a/src/alejandra/tests/cases/idioms_pkgs_1/in.nix b/src/alejandra/tests/cases/default/idioms_pkgs_1/in.nix similarity index 100% rename from src/alejandra/tests/cases/idioms_pkgs_1/in.nix rename to src/alejandra/tests/cases/default/idioms_pkgs_1/in.nix diff --git a/src/alejandra/tests/cases/idioms_pkgs_1/out.nix b/src/alejandra/tests/cases/default/idioms_pkgs_1/out.nix similarity index 100% rename from src/alejandra/tests/cases/idioms_pkgs_1/out.nix rename to src/alejandra/tests/cases/default/idioms_pkgs_1/out.nix diff --git a/src/alejandra/tests/cases/idioms_pkgs_2/in.nix b/src/alejandra/tests/cases/default/idioms_pkgs_2/in.nix similarity index 100% rename from src/alejandra/tests/cases/idioms_pkgs_2/in.nix rename to src/alejandra/tests/cases/default/idioms_pkgs_2/in.nix diff --git a/src/alejandra/tests/cases/idioms_pkgs_2/out.nix b/src/alejandra/tests/cases/default/idioms_pkgs_2/out.nix similarity index 100% rename from src/alejandra/tests/cases/idioms_pkgs_2/out.nix rename to src/alejandra/tests/cases/default/idioms_pkgs_2/out.nix diff --git a/src/alejandra/tests/cases/idioms_pkgs_3/in.nix b/src/alejandra/tests/cases/default/idioms_pkgs_3/in.nix similarity index 100% rename from src/alejandra/tests/cases/idioms_pkgs_3/in.nix rename to src/alejandra/tests/cases/default/idioms_pkgs_3/in.nix diff --git a/src/alejandra/tests/cases/idioms_pkgs_3/out.nix b/src/alejandra/tests/cases/default/idioms_pkgs_3/out.nix similarity index 100% rename from src/alejandra/tests/cases/idioms_pkgs_3/out.nix rename to src/alejandra/tests/cases/default/idioms_pkgs_3/out.nix diff --git a/src/alejandra/tests/cases/if_else/in.nix b/src/alejandra/tests/cases/default/if_else/in.nix similarity index 100% rename from src/alejandra/tests/cases/if_else/in.nix rename to src/alejandra/tests/cases/default/if_else/in.nix diff --git a/src/alejandra/tests/cases/if_else/out.nix b/src/alejandra/tests/cases/default/if_else/out.nix similarity index 100% rename from src/alejandra/tests/cases/if_else/out.nix rename to src/alejandra/tests/cases/default/if_else/out.nix diff --git a/src/alejandra/tests/cases/inherit/in.nix b/src/alejandra/tests/cases/default/inherit/in.nix similarity index 100% rename from src/alejandra/tests/cases/inherit/in.nix rename to src/alejandra/tests/cases/default/inherit/in.nix diff --git a/src/alejandra/tests/cases/inherit/out.nix b/src/alejandra/tests/cases/default/inherit/out.nix similarity index 100% rename from src/alejandra/tests/cases/inherit/out.nix rename to src/alejandra/tests/cases/default/inherit/out.nix diff --git a/src/alejandra/tests/cases/inherit_blank_trailing/in.nix b/src/alejandra/tests/cases/default/inherit_blank_trailing/in.nix similarity index 100% rename from src/alejandra/tests/cases/inherit_blank_trailing/in.nix rename to src/alejandra/tests/cases/default/inherit_blank_trailing/in.nix diff --git a/src/alejandra/tests/cases/inherit_blank_trailing/out.nix b/src/alejandra/tests/cases/default/inherit_blank_trailing/out.nix similarity index 100% rename from src/alejandra/tests/cases/inherit_blank_trailing/out.nix rename to src/alejandra/tests/cases/default/inherit_blank_trailing/out.nix diff --git a/src/alejandra/tests/cases/inherit_comment/in.nix b/src/alejandra/tests/cases/default/inherit_comment/in.nix similarity index 100% rename from src/alejandra/tests/cases/inherit_comment/in.nix rename to src/alejandra/tests/cases/default/inherit_comment/in.nix diff --git a/src/alejandra/tests/cases/inherit_comment/out.nix b/src/alejandra/tests/cases/default/inherit_comment/out.nix similarity index 100% rename from src/alejandra/tests/cases/inherit_comment/out.nix rename to src/alejandra/tests/cases/default/inherit_comment/out.nix diff --git a/src/alejandra/tests/cases/inherit_from/in.nix b/src/alejandra/tests/cases/default/inherit_from/in.nix similarity index 100% rename from src/alejandra/tests/cases/inherit_from/in.nix rename to src/alejandra/tests/cases/default/inherit_from/in.nix diff --git a/src/alejandra/tests/cases/inherit_from/out.nix b/src/alejandra/tests/cases/default/inherit_from/out.nix similarity index 100% rename from src/alejandra/tests/cases/inherit_from/out.nix rename to src/alejandra/tests/cases/default/inherit_from/out.nix diff --git a/src/alejandra/tests/cases/key_value/in.nix b/src/alejandra/tests/cases/default/key_value/in.nix similarity index 100% rename from src/alejandra/tests/cases/key_value/in.nix rename to src/alejandra/tests/cases/default/key_value/in.nix diff --git a/src/alejandra/tests/cases/key_value/out.nix b/src/alejandra/tests/cases/default/key_value/out.nix similarity index 100% rename from src/alejandra/tests/cases/key_value/out.nix rename to src/alejandra/tests/cases/default/key_value/out.nix diff --git a/src/alejandra/tests/cases/lambda/in.nix b/src/alejandra/tests/cases/default/lambda/in.nix similarity index 100% rename from src/alejandra/tests/cases/lambda/in.nix rename to src/alejandra/tests/cases/default/lambda/in.nix diff --git a/src/alejandra/tests/cases/lambda/out.nix b/src/alejandra/tests/cases/default/lambda/out.nix similarity index 100% rename from src/alejandra/tests/cases/lambda/out.nix rename to src/alejandra/tests/cases/default/lambda/out.nix diff --git a/src/alejandra/tests/cases/let_in/in.nix b/src/alejandra/tests/cases/default/let_in/in.nix similarity index 100% rename from src/alejandra/tests/cases/let_in/in.nix rename to src/alejandra/tests/cases/default/let_in/in.nix diff --git a/src/alejandra/tests/cases/let_in/out.nix b/src/alejandra/tests/cases/default/let_in/out.nix similarity index 100% rename from src/alejandra/tests/cases/let_in/out.nix rename to src/alejandra/tests/cases/default/let_in/out.nix diff --git a/src/alejandra/tests/cases/lists/in.nix b/src/alejandra/tests/cases/default/lists/in.nix similarity index 100% rename from src/alejandra/tests/cases/lists/in.nix rename to src/alejandra/tests/cases/default/lists/in.nix diff --git a/src/alejandra/tests/cases/lists/out.nix b/src/alejandra/tests/cases/default/lists/out.nix similarity index 100% rename from src/alejandra/tests/cases/lists/out.nix rename to src/alejandra/tests/cases/default/lists/out.nix diff --git a/src/alejandra/tests/cases/monsters_1/in.nix b/src/alejandra/tests/cases/default/monsters_1/in.nix similarity index 100% rename from src/alejandra/tests/cases/monsters_1/in.nix rename to src/alejandra/tests/cases/default/monsters_1/in.nix diff --git a/src/alejandra/tests/cases/monsters_1/out.nix b/src/alejandra/tests/cases/default/monsters_1/out.nix similarity index 100% rename from src/alejandra/tests/cases/monsters_1/out.nix rename to src/alejandra/tests/cases/default/monsters_1/out.nix diff --git a/src/alejandra/tests/cases/monsters_2/in.nix b/src/alejandra/tests/cases/default/monsters_2/in.nix similarity index 100% rename from src/alejandra/tests/cases/monsters_2/in.nix rename to src/alejandra/tests/cases/default/monsters_2/in.nix diff --git a/src/alejandra/tests/cases/monsters_2/out.nix b/src/alejandra/tests/cases/default/monsters_2/out.nix similarity index 100% rename from src/alejandra/tests/cases/monsters_2/out.nix rename to src/alejandra/tests/cases/default/monsters_2/out.nix diff --git a/src/alejandra/tests/cases/monsters_3/in.nix b/src/alejandra/tests/cases/default/monsters_3/in.nix similarity index 100% rename from src/alejandra/tests/cases/monsters_3/in.nix rename to src/alejandra/tests/cases/default/monsters_3/in.nix diff --git a/src/alejandra/tests/cases/monsters_3/out.nix b/src/alejandra/tests/cases/default/monsters_3/out.nix similarity index 100% rename from src/alejandra/tests/cases/monsters_3/out.nix rename to src/alejandra/tests/cases/default/monsters_3/out.nix diff --git a/src/alejandra/tests/cases/monsters_4/in.nix b/src/alejandra/tests/cases/default/monsters_4/in.nix similarity index 100% rename from src/alejandra/tests/cases/monsters_4/in.nix rename to src/alejandra/tests/cases/default/monsters_4/in.nix diff --git a/src/alejandra/tests/cases/monsters_4/out.nix b/src/alejandra/tests/cases/default/monsters_4/out.nix similarity index 100% rename from src/alejandra/tests/cases/monsters_4/out.nix rename to src/alejandra/tests/cases/default/monsters_4/out.nix diff --git a/src/alejandra/tests/cases/monsters_5/in.nix b/src/alejandra/tests/cases/default/monsters_5/in.nix similarity index 100% rename from src/alejandra/tests/cases/monsters_5/in.nix rename to src/alejandra/tests/cases/default/monsters_5/in.nix diff --git a/src/alejandra/tests/cases/monsters_5/out.nix b/src/alejandra/tests/cases/default/monsters_5/out.nix similarity index 100% rename from src/alejandra/tests/cases/monsters_5/out.nix rename to src/alejandra/tests/cases/default/monsters_5/out.nix diff --git a/src/alejandra/tests/cases/or_default/in.nix b/src/alejandra/tests/cases/default/or_default/in.nix similarity index 100% rename from src/alejandra/tests/cases/or_default/in.nix rename to src/alejandra/tests/cases/default/or_default/in.nix diff --git a/src/alejandra/tests/cases/or_default/out.nix b/src/alejandra/tests/cases/default/or_default/out.nix similarity index 100% rename from src/alejandra/tests/cases/or_default/out.nix rename to src/alejandra/tests/cases/default/or_default/out.nix diff --git a/src/alejandra/tests/cases/paren/in.nix b/src/alejandra/tests/cases/default/paren/in.nix similarity index 100% rename from src/alejandra/tests/cases/paren/in.nix rename to src/alejandra/tests/cases/default/paren/in.nix diff --git a/src/alejandra/tests/cases/paren/out.nix b/src/alejandra/tests/cases/default/paren/out.nix similarity index 100% rename from src/alejandra/tests/cases/paren/out.nix rename to src/alejandra/tests/cases/default/paren/out.nix diff --git a/src/alejandra/tests/cases/pat_bind/in.nix b/src/alejandra/tests/cases/default/pat_bind/in.nix similarity index 100% rename from src/alejandra/tests/cases/pat_bind/in.nix rename to src/alejandra/tests/cases/default/pat_bind/in.nix diff --git a/src/alejandra/tests/cases/pat_bind/out.nix b/src/alejandra/tests/cases/default/pat_bind/out.nix similarity index 100% rename from src/alejandra/tests/cases/pat_bind/out.nix rename to src/alejandra/tests/cases/default/pat_bind/out.nix diff --git a/src/alejandra/tests/cases/pattern/in.nix b/src/alejandra/tests/cases/default/pattern/in.nix similarity index 100% rename from src/alejandra/tests/cases/pattern/in.nix rename to src/alejandra/tests/cases/default/pattern/in.nix diff --git a/src/alejandra/tests/cases/pattern/out.nix b/src/alejandra/tests/cases/default/pattern/out.nix similarity index 100% rename from src/alejandra/tests/cases/pattern/out.nix rename to src/alejandra/tests/cases/default/pattern/out.nix diff --git a/src/alejandra/tests/cases/root/in.nix b/src/alejandra/tests/cases/default/root/in.nix similarity index 100% rename from src/alejandra/tests/cases/root/in.nix rename to src/alejandra/tests/cases/default/root/in.nix diff --git a/src/alejandra/tests/cases/root/out.nix b/src/alejandra/tests/cases/default/root/out.nix similarity index 100% rename from src/alejandra/tests/cases/root/out.nix rename to src/alejandra/tests/cases/default/root/out.nix diff --git a/src/alejandra/tests/cases/select/in.nix b/src/alejandra/tests/cases/default/select/in.nix similarity index 100% rename from src/alejandra/tests/cases/select/in.nix rename to src/alejandra/tests/cases/default/select/in.nix diff --git a/src/alejandra/tests/cases/select/out.nix b/src/alejandra/tests/cases/default/select/out.nix similarity index 100% rename from src/alejandra/tests/cases/select/out.nix rename to src/alejandra/tests/cases/default/select/out.nix diff --git a/src/alejandra/tests/cases/string/in.nix b/src/alejandra/tests/cases/default/string/in.nix similarity index 100% rename from src/alejandra/tests/cases/string/in.nix rename to src/alejandra/tests/cases/default/string/in.nix diff --git a/src/alejandra/tests/cases/string/out.nix b/src/alejandra/tests/cases/default/string/out.nix similarity index 100% rename from src/alejandra/tests/cases/string/out.nix rename to src/alejandra/tests/cases/default/string/out.nix diff --git a/src/alejandra/tests/cases/string_interpol/in.nix b/src/alejandra/tests/cases/default/string_interpol/in.nix similarity index 100% rename from src/alejandra/tests/cases/string_interpol/in.nix rename to src/alejandra/tests/cases/default/string_interpol/in.nix diff --git a/src/alejandra/tests/cases/string_interpol/out.nix b/src/alejandra/tests/cases/default/string_interpol/out.nix similarity index 100% rename from src/alejandra/tests/cases/string_interpol/out.nix rename to src/alejandra/tests/cases/default/string_interpol/out.nix diff --git a/src/alejandra/tests/cases/with/in.nix b/src/alejandra/tests/cases/default/with/in.nix similarity index 100% rename from src/alejandra/tests/cases/with/in.nix rename to src/alejandra/tests/cases/default/with/in.nix diff --git a/src/alejandra/tests/cases/with/out.nix b/src/alejandra/tests/cases/default/with/out.nix similarity index 100% rename from src/alejandra/tests/cases/with/out.nix rename to src/alejandra/tests/cases/default/with/out.nix diff --git a/src/alejandra/tests/indent/apply/in.nix b/src/alejandra/tests/cases/indentation-tabs/apply/in.nix similarity index 100% rename from src/alejandra/tests/indent/apply/in.nix rename to src/alejandra/tests/cases/indentation-tabs/apply/in.nix diff --git a/src/alejandra/tests/indent/apply/out.nix b/src/alejandra/tests/cases/indentation-tabs/apply/out.nix similarity index 100% rename from src/alejandra/tests/indent/apply/out.nix rename to src/alejandra/tests/cases/indentation-tabs/apply/out.nix diff --git a/src/alejandra/tests/indent/attr_set/in.nix b/src/alejandra/tests/cases/indentation-tabs/attr-set/in.nix similarity index 100% rename from src/alejandra/tests/indent/attr_set/in.nix rename to src/alejandra/tests/cases/indentation-tabs/attr-set/in.nix diff --git a/src/alejandra/tests/indent/attr_set/out.nix b/src/alejandra/tests/cases/indentation-tabs/attr-set/out.nix similarity index 100% rename from src/alejandra/tests/indent/attr_set/out.nix rename to src/alejandra/tests/cases/indentation-tabs/attr-set/out.nix diff --git a/src/alejandra/tests/indent/list/in.nix b/src/alejandra/tests/cases/indentation-tabs/list/in.nix similarity index 100% rename from src/alejandra/tests/indent/list/in.nix rename to src/alejandra/tests/cases/indentation-tabs/list/in.nix diff --git a/src/alejandra/tests/indent/list/out.nix b/src/alejandra/tests/cases/indentation-tabs/list/out.nix similarity index 100% rename from src/alejandra/tests/indent/list/out.nix rename to src/alejandra/tests/cases/indentation-tabs/list/out.nix diff --git a/src/alejandra/tests/fmt.rs b/src/alejandra/tests/fmt.rs index dadaae5..42ac5fc 100644 --- a/src/alejandra/tests/fmt.rs +++ b/src/alejandra/tests/fmt.rs @@ -1,32 +1,40 @@ use std::collections::HashMap; -use std::collections::HashSet; use std::io::Write; use alejandra::config::Config; +use alejandra::config::Indentation; use pretty_assertions::assert_eq; #[test] fn cases() { let should_update = std::env::var("UPDATE").is_ok(); - let cases: HashSet = std::fs::read_dir("tests/cases") - .unwrap() - .map(|entry| entry.unwrap().file_name().into_string().unwrap()) - .collect(); + let configs = HashMap::from([ + ("default", Config::default()), + ("indentation-tabs", Config { + indentation: Indentation::Tabs, + ..Default::default() + }), + ]); - let configs = HashMap::from([("", Config::default())]); + for (config_name, config) in configs { + let cases: Vec = + std::fs::read_dir(format!("tests/cases/{}", config_name)) + .unwrap() + .map(|entry| entry.unwrap().file_name().into_string().unwrap()) + .collect(); - for case in cases { - let path_in = format!("tests/cases/{}/in.nix", case); - let content_in = std::fs::read_to_string(path_in.clone()).unwrap(); + for case in cases { + let path_in = + format!("tests/cases/{}/{}/in.nix", config_name, case); + let content_in = std::fs::read_to_string(&path_in).unwrap(); - for (config_name, config) in &configs { let path_out = - format!("tests/cases/{}/out{}.nix", case, config_name); + format!("tests/cases/{}/{}/out.nix", config_name, case); let content_got = alejandra::format::in_memory( path_in.clone(), content_in.clone(), - config.clone(), + config, ) .1; @@ -42,8 +50,9 @@ fn cases() { assert_eq!( content_out, content_got, - "Test case `{case}` failed; see \ - `src/alejandra/tests/cases/{case}/`" + "Test case `{}/{}` failed; see \ + `src/alejandra/tests/cases/{}/{}/`", + config_name, case, config_name, case, ); } }