Files
nixpkgs/pkgs/by-name/tr/treefmt/tests.nix
Dark Steveneq 646b892680
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
push sheeet
2025-10-09 14:15:47 +02:00

111 lines
2.4 KiB
Nix

{
lib,
runCommand,
testers,
treefmt,
nixfmt,
}:
let
inherit (treefmt) buildConfig withConfig;
testEqualContents =
args:
testers.testEqualContents (
args
// lib.optionalAttrs (builtins.isString args.expected) {
expected = builtins.toFile "expected" args.expected;
}
);
nixfmtExampleConfig = {
on-unmatched = "info";
tree-root-file = ".git/index";
formatter.nixfmt = {
command = "nixfmt";
includes = [ "*.nix" ];
};
};
nixfmtExamplePackage = withConfig {
settings = nixfmtExampleConfig;
runtimeInputs = [ nixfmt ];
};
in
{
buildConfigEmpty = testEqualContents {
assertion = "`buildConfig { }` builds an empty config file";
actual = buildConfig { };
expected = "";
};
buildConfigExample = testEqualContents {
assertion = "`buildConfig` builds the example config";
actual = buildConfig nixfmtExampleConfig;
expected = ''
on-unmatched = "info"
tree-root-file = ".git/index"
[formatter.nixfmt]
command = "nixfmt"
includes = ["*.nix"]
'';
};
buildConfigModules = testEqualContents {
assertion = "`buildConfig` evaluates modules to build a config";
actual = buildConfig [
nixfmtExampleConfig
{ tree-root-file = lib.mkForce "overridden"; }
];
expected = ''
on-unmatched = "info"
tree-root-file = "overridden"
[formatter.nixfmt]
command = "nixfmt"
includes = ["*.nix"]
'';
};
runNixfmtExample =
runCommand "run-nixfmt-example"
{
nativeBuildInputs = [ nixfmtExamplePackage ];
passAsFile = [
"input"
"expected"
];
input = ''
{
foo="bar";
attrs={};
list=[];
}
'';
expected = ''
{
foo = "bar";
attrs = { };
list = [ ];
}
'';
}
''
export XDG_CACHE_HOME=$(mktemp -d)
# The example config assumes the tree root has a .git/index file
mkdir .git && touch .git/index
# Copy the input file, then format it using the wrapped treefmt
cp $inputPath input.nix
treefmt
# Assert that input.nix now matches expected
if diff -u $expectedPath input.nix; then
touch $out
else
echo
echo "treefmt did not format input.nix as expected"
exit 1
fi
'';
}