Files
git-tfs/GitTfsTest/Integration/FetchTests.cs
2013-01-09 15:25:27 -05:00

89 lines
3.8 KiB
C#

using System;
using Sep.Git.Tfs.Core.TfsInterop;
using Xunit;
namespace Sep.Git.Tfs.Test.Integration
{
public class FetchTests : IDisposable
{
private readonly IntegrationHelper integrationHelper;
public FetchTests()
{
integrationHelper = new IntegrationHelper();
}
public void Dispose()
{
integrationHelper.Dispose();
}
[FactExceptOnUnix]
public void CanFetchWithMixedUpCasingForTfsServerUrl()
{
CloneRepoWithTwoCommits();
AddNewCommitToFakeTfsServer();
string tfsUrlInUpperCase = integrationHelper.TfsUrl.ToUpper();
integrationHelper.ChangeConfigSetting("MyProject", "tfs-remote.default.url", tfsUrlInUpperCase);
integrationHelper.RunIn("MyProject", "pull");
Assert.Equal(3, integrationHelper.GetCommitCount("MyProject"));
}
[FactExceptOnUnix]
public void CanFetchWithMixedUpCasingForLegacyTfsServerUrl()
{
CloneRepoWithTwoCommits();
AddNewCommitToFakeTfsServer();
string tfsUrlInUpperCase = integrationHelper.TfsUrl.ToUpper();
integrationHelper.ChangeConfigSetting("MyProject", "tfs-remote.default.url", "nomatch");
integrationHelper.ChangeConfigSetting("MyProject", "tfs-remote.default.legacy-urls", tfsUrlInUpperCase + ",aDifferentUrl");
integrationHelper.RunIn("MyProject", "pull");
Assert.Equal(3, integrationHelper.GetCommitCount("MyProject"));
}
[FactExceptOnUnix]
public void CanFetchWithMixedUpCasingForTfsRepositoryPath()
{
CloneRepoWithTwoCommits();
AddNewCommitToFakeTfsServer();
const string repoUrlInUpperCase = "$/MYPROJECT";
integrationHelper.ChangeConfigSetting("MyProject", "tfs-remote.default.repository", repoUrlInUpperCase);
integrationHelper.RunIn("MyProject", "pull");
Assert.Equal(3, integrationHelper.GetCommitCount("MyProject"));
}
private void CloneRepoWithTwoCommits()
{
integrationHelper.SetupFake(r =>
{
r.Changeset(1, "Project created from template", DateTime.Parse("2012-01-01 12:12:12 -05:00"))
.Change(TfsChangeType.Add, TfsItemType.Folder, "$/MyProject");
r.Changeset(2, "Add Readme", DateTime.Parse("2012-01-02 12:12:12 -05:00"))
.Change(TfsChangeType.Add, TfsItemType.Folder, "$/MyProject/Folder")
.Change(TfsChangeType.Add, TfsItemType.File, "$/MyProject/Folder/File.txt", "File contents")
.Change(TfsChangeType.Add, TfsItemType.File, "$/MyProject/README", "tldr");
});
integrationHelper.Run("clone", integrationHelper.TfsUrl, "$/MyProject");
integrationHelper.AssertGitRepo("MyProject");
}
private void AddNewCommitToFakeTfsServer()
{
integrationHelper.SetupFake(r => CreateAChangeset(r));
}
private static IntegrationHelper.FakeChangesetBuilder CreateAChangeset(IntegrationHelper.FakeHistoryBuilder r)
{
return r.Changeset(3, "Add a file", DateTime.Parse("2012-01-03 12:12:12 -05:00"))
.Change(TfsChangeType.Add, TfsItemType.Folder, "$/MyProject/Foo")
.Change(TfsChangeType.Add, TfsItemType.Folder, "$/MyProject/Foo/Bar")
.Change(TfsChangeType.Add, TfsItemType.File, "$/MyProject/Foo/Bar/File.txt", "File contents");
}
}
}