home-manager/tests/modules/programs/borgmatic/patterns-configuration.nix

59 lines
1.4 KiB
Nix

{ config, pkgs, ... }:
let
boolToString = bool: if bool then "true" else "false";
backups = config.programs.borgmatic.backups;
in {
programs.borgmatic = {
enable = true;
backups = {
main = {
location = {
patterns = [
"R /home/user"
"+ home/user/stuff-to-backup"
"+ home/user/junk/important-file"
"- home/user/junk"
];
repositories = [ "/mnt/backup-drive" ];
};
};
};
};
test.stubs.borgmatic = { };
nmt.script = ''
config_file=$TESTED/home-files/.config/borgmatic.d/main.yaml
assertFileExists $config_file
declare -A expectations
expectations[patterns[0]]="${
builtins.elemAt backups.main.location.patterns 0
}"
expectations[patterns[1]]="${
builtins.elemAt backups.main.location.patterns 1
}"
expectations[patterns[2]]="${
builtins.elemAt backups.main.location.patterns 2
}"
expectations[patterns[3]]="${
builtins.elemAt backups.main.location.patterns 3
}"
yq=${pkgs.yq-go}/bin/yq
for filter in "''${!expectations[@]}"; do
expected_value="''${expectations[$filter]}"
actual_value="$($yq ".$filter" $config_file)"
if [[ "$actual_value" != "$expected_value" ]]; then
fail "Expected '$filter' to be '$expected_value' but was '$actual_value'"
fi
done
'';
}