public void test007_readUserConfig()
{
MockSystemReader mockSystemReader = new MockSystemReader();
SystemReader.setInstance(mockSystemReader);
string hostname = mockSystemReader.getHostname();
Core.Config userGitConfig = mockSystemReader.openUserConfig();
Core.Config localConfig = new Core.Config(userGitConfig);
mockSystemReader.clearProperties();
string authorName;
string authorEmail;
// no values defined nowhere
authorName = localConfig.get(UserConfig.KEY).getAuthorName();
authorEmail = localConfig.get(UserConfig.KEY).getAuthorEmail();
Assert.AreEqual(Constants.UNKNOWN_USER_DEFAULT, authorName);
Assert.AreEqual(Constants.UNKNOWN_USER_DEFAULT + "@" + hostname, authorEmail);
// the system user name is defined
mockSystemReader.setProperty(Constants.OS_USER_NAME_KEY, "os user name");
localConfig.uncache(UserConfig.KEY);
authorName = localConfig.get(UserConfig.KEY).getAuthorName();
Assert.AreEqual("os user name", authorName);
if (hostname != null && hostname.Length != 0)
{
authorEmail = localConfig.get(UserConfig.KEY).getAuthorEmail();
Assert.AreEqual("os user name@" + hostname, authorEmail);
}
// the git environment variables are defined
mockSystemReader.setProperty(Constants.GIT_AUTHOR_NAME_KEY, "git author name");
mockSystemReader.setProperty(Constants.GIT_AUTHOR_EMAIL_KEY, "author@email");
localConfig.uncache(UserConfig.KEY);
authorName = localConfig.get(UserConfig.KEY).getAuthorName();
authorEmail = localConfig.get(UserConfig.KEY).getAuthorEmail();
Assert.AreEqual("git author name", authorName);
Assert.AreEqual("author@email", authorEmail);
// the values are defined in the global configuration
userGitConfig.setString("user", null, "name", "global username");
userGitConfig.setString("user", null, "email", "author@globalemail");
authorName = localConfig.get(UserConfig.KEY).getAuthorName();
authorEmail = localConfig.get(UserConfig.KEY).getAuthorEmail();
Assert.AreEqual("global username", authorName);
Assert.AreEqual("author@globalemail", authorEmail);
// the values are defined in the local configuration
localConfig.setString("user", null, "name", "local username");
localConfig.setString("user", null, "email", "author@localemail");
authorName = localConfig.get(UserConfig.KEY).getAuthorName();
authorEmail = localConfig.get(UserConfig.KEY).getAuthorEmail();
Assert.AreEqual("local username", authorName);
Assert.AreEqual("author@localemail", authorEmail);
authorName = localConfig.get(UserConfig.KEY).getCommitterName();
authorEmail = localConfig.get(UserConfig.KEY).getCommitterEmail();
Assert.AreEqual("local username", authorName);
Assert.AreEqual("author@localemail", authorEmail);
}