home-manager/tests/modules/programs/borgmatic/exclude-hm-symlinks.nix

55 lines
1.4 KiB
Nix
Raw Normal View History

{ config, pkgs, ... }:
let
2023-05-12 22:08:12 +00:00
backups = config.programs.borgmatic.backups;
2023-05-12 22:08:12 +00:00
excludeFile = builtins.toFile "excludeFile.txt" "/foo/bar";
in {
2023-05-12 22:08:12 +00:00
programs.borgmatic = {
enable = true;
backups = {
main = {
location = {
sourceDirectories = [ "/my-stuff-to-backup" ];
repositories = [ "/mnt/disk1" ];
excludeHomeManagerSymlinks = true;
extraConfig = { exclude_from = [ (toString excludeFile) ]; };
};
};
};
2023-05-12 22:08:12 +00:00
};
2023-05-12 22:08:12 +00:00
test.stubs.borgmatic = { };
2023-05-12 22:08:12 +00:00
nmt.script = ''
config_file=$TESTED/home-files/.config/borgmatic.d/main.yaml
assertFileExists $config_file
2023-05-12 22:08:12 +00:00
declare -A expectations
expectations[exclude_from[0]]="${excludeFile}"
2023-05-12 22:08:12 +00:00
yq=${pkgs.yq-go}/bin/yq
2023-05-12 22:08:12 +00:00
for filter in "''${!expectations[@]}"; do
expected_value="''${expectations[$filter]}"
actual_value="$($yq ".$filter" $config_file)"
2023-05-12 22:08:12 +00:00
if [[ "$actual_value" != "$expected_value" ]]; then
fail "Expected '$filter' to be '$expected_value' but was '$actual_value'"
fi
done
hmExclusionsFile=$($yq '.exclude_from[1]' $config_file)
2023-05-12 22:08:12 +00:00
expected_content='/home/hm-user/.config/borgmatic.d/main.yaml'
2023-05-12 22:08:12 +00:00
grep --quiet "$expected_content" "$hmExclusionsFile"
2023-05-12 22:08:12 +00:00
if [[ $? -ne 0 ]]; then
echo "Expected to find $expected_content in file $hmExclusionsFile but didn't" >&2
exit 1
fi
'';
}