git: quote sendemail section header

This will allow, e.g., the character `@` in the email identity.

Also adds a test case.

Fixes #557
This commit is contained in:
Robert Helgesson 2019-01-29 18:17:24 +01:00
parent 02a5a678f6
commit 45cadbd4f3
No known key found for this signature in database
GPG Key ID: 36BDAA14C2797E89
5 changed files with 77 additions and 1 deletions

View File

@ -151,7 +151,7 @@ in
hasSmtp = name: account: account.smtp != null;
genIdentity = name: account: with account;
nameValuePair "sendemail.${name}" ({
nameValuePair "sendemail \"${name}\"" ({
smtpEncryption = if smtp.tls.enable then "tls" else "";
smtpServer = smtp.host;
smtpUser = userName;

View File

@ -20,6 +20,7 @@ import nmt {
files-hidden-source = ./modules/files/hidden-source.nix;
files-source-with-spaces = ./modules/files/source-with-spaces.nix;
files-text = ./modules/files/text.nix;
git-with-email = ./modules/programs/git-with-email.nix;
git-with-most-options = ./modules/programs/git.nix;
git-with-str-extra-config = ./modules/programs/git-with-str-extra-config.nix;
texlive-minimal = ./modules/programs/texlive-minimal.nix;

View File

@ -0,0 +1,27 @@
{ ... }:
{
accounts.email = {
maildirBasePath = "Mail";
accounts = {
"hm@example.com" = {
address = "hm@example.com";
userName = "home.manager";
realName = "H. M. Test";
passwordCommand = "password-command";
imap.host = "imap.example.com";
smtp.host = "smtp.example.com";
};
hm-account = {
address = "hm@example.org";
userName = "home.manager.jr";
realName = "H. M. Test Jr.";
passwordCommand = "password-command 2";
imap.host = "imap.example.org";
smtp.host = "smtp.example.org";
};
};
};
}

View File

@ -0,0 +1,15 @@
[sendemail "hm-account"]
from=hm@example.org
smtpEncryption=tls
smtpServer=smtp.example.org
smtpUser=home.manager.jr
[sendemail "hm@example.com"]
from=hm@example.com
smtpEncryption=tls
smtpServer=smtp.example.com
smtpUser=home.manager
[user]
email=hm@example.com
name=H. M. Test

View File

@ -0,0 +1,33 @@
{ config, lib, pkgs, ... }:
with lib;
{
imports = [ ../accounts/email-test-accounts.nix ];
config = {
programs.git = {
enable = true;
userEmail = "hm@example.com";
userName = "H. M. Test";
};
nmt.script = ''
function assertGitConfig() {
local value
value=$(${pkgs.git}/bin/git config \
--file $TESTED/home-files/.config/git/config \
--get $1)
if [[ $value != $2 ]]; then
fail "Expected option '$1' to have value '$2' but it was '$value'"
fi
}
assertFileExists home-files/.config/git/config
assertFileContent home-files/.config/git/config ${./git-with-email-expected.conf}
assertGitConfig "sendemail.hm@example.com.from" "hm@example.com"
assertGitConfig "sendemail.hm-account.from" "hm@example.org"
'';
};
}