Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit e691a65

Browse files
Refactored integration tests
I needed to create a test that has ProcessManager but none of the git initialization, I realized that the oo hierarchy could be restructured.
1 parent 6b69389 commit e691a65

File tree

4 files changed

+82
-70
lines changed

4 files changed

+82
-70
lines changed
Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,30 @@
11
using System;
2+
using System.IO;
23
using System.Linq;
34
using System.Threading;
4-
using GitHub.Unity;
55
using System.Threading.Tasks;
6-
using NSubstitute;
6+
using GitHub.Unity;
77

88
namespace IntegrationTests
99
{
10-
class BaseGitEnvironmentTest : BaseGitRepoTest
10+
class BaseGitEnvironmentTest : BasePlatformIntegrationTest
1111
{
1212
protected async Task<IEnvironment> Initialize(NPath repoPath, NPath environmentPath = null,
13-
bool enableEnvironmentTrace = false, bool initializeRepository = true, Action<RepositoryManager> onRepositoryManagerCreated = null)
13+
bool enableEnvironmentTrace = false, bool initializeRepository = true,
14+
Action<RepositoryManager> onRepositoryManagerCreated = null)
1415
{
15-
TaskManager = new TaskManager();
16-
SyncContext = new ThreadSynchronizationContext(TaskManager.Token);
17-
TaskManager.UIScheduler = new SynchronizationContextTaskScheduler(SyncContext);
18-
19-
//TODO: Mock CacheContainer
20-
ICacheContainer cacheContainer = Substitute.For<ICacheContainer>();
21-
Environment = new IntegrationTestEnvironment(cacheContainer, repoPath, SolutionDirectory, environmentPath, enableEnvironmentTrace);
22-
23-
var gitSetup = new GitInstaller(Environment, TaskManager.Token);
24-
await gitSetup.SetupIfNeeded();
25-
Environment.GitExecutablePath = gitSetup.GitExecutablePath;
26-
27-
Platform = new Platform(Environment);
16+
await InitializePlatform(repoPath, environmentPath, enableEnvironmentTrace);
2817

29-
GitEnvironment = Platform.GitEnvironment;
30-
ProcessManager = new ProcessManager(Environment, GitEnvironment, TaskManager.Token);
31-
32-
Platform.Initialize(ProcessManager, TaskManager);
33-
34-
GitClient = new GitClient(Environment, ProcessManager, TaskManager);
35-
36-
var repositoryManager = GitHub.Unity.RepositoryManager.CreateInstance(Platform, TaskManager, GitClient, repoPath);
18+
var repositoryManager =
19+
GitHub.Unity.RepositoryManager.CreateInstance(Platform, TaskManager, GitClient, repoPath);
3720
onRepositoryManagerCreated?.Invoke(repositoryManager);
3821

3922
RepositoryManager = repositoryManager;
4023
RepositoryManager.Initialize();
4124

4225
if (initializeRepository)
4326
{
44-
Environment.Repository = new Repository(repoPath, cacheContainer);
27+
Environment.Repository = new Repository(repoPath, CacheContainer);
4528
Environment.Repository.Initialize(RepositoryManager);
4629
}
4730

@@ -51,11 +34,8 @@ protected async Task<IEnvironment> Initialize(NPath repoPath, NPath environmentP
5134

5235
if (DotGitPath.FileExists())
5336
{
54-
DotGitPath =
55-
DotGitPath.ReadAllLines()
56-
.Where(x => x.StartsWith("gitdir:"))
57-
.Select(x => x.Substring(7).Trim().ToNPath())
58-
.First();
37+
DotGitPath = DotGitPath.ReadAllLines().Where(x => x.StartsWith("gitdir:"))
38+
.Select(x => x.Substring(7).Trim().ToNPath()).First();
5939
}
6040

6141
BranchesPath = DotGitPath.Combine("refs", "heads");
@@ -66,6 +46,21 @@ protected async Task<IEnvironment> Initialize(NPath repoPath, NPath environmentP
6646
return Environment;
6747
}
6848

49+
public override void OnSetup()
50+
{
51+
base.OnSetup();
52+
53+
TestRepoMasterCleanUnsynchronized = TestBasePath.Combine("IOTestsRepo", "IOTestsRepo_master_clean_unsync");
54+
TestRepoMasterCleanUnsynchronizedRussianLanguage = TestBasePath.Combine("IOTestsRepo", "IOTestsRepo_master_clean_sync_with_russian_language");
55+
TestRepoMasterCleanSynchronized = TestBasePath.Combine("IOTestsRepo", "IOTestsRepo_master_clean_sync");
56+
TestRepoMasterDirtyUnsynchronized = TestBasePath.Combine("IOTestsRepo", "IOTestsRepo_master_dirty_unsync");
57+
TestRepoMasterTwoRemotes = TestBasePath.Combine("IOTestsRepo", "IOTestsRepo_master_two_remotes");
58+
59+
Logger.Trace("Extracting Zip File to {0}", TestBasePath);
60+
ZipHelper.ExtractZipFile(TestZipFilePath, TestBasePath.ToString(), CancellationToken.None);
61+
Logger.Trace("Extracted Zip File");
62+
}
63+
6964
public override void OnTearDown()
7065
{
7166
RepositoryManager?.Stop();
@@ -76,14 +71,7 @@ public override void OnTearDown()
7671

7772
public IRepositoryManager RepositoryManager { get; private set; }
7873

79-
protected IPlatform Platform { get; private set; }
8074
protected IApplicationManager ApplicationManager { get; set; }
81-
protected IProcessManager ProcessManager { get; private set; }
82-
protected ITaskManager TaskManager { get; private set; }
83-
84-
protected IProcessEnvironment GitEnvironment { get; private set; }
85-
protected IGitClient GitClient { get; set; }
86-
protected SynchronizationContext SyncContext { get; set; }
8775

8876
protected NPath DotGitConfig { get; private set; }
8977

@@ -96,5 +84,17 @@ public override void OnTearDown()
9684
protected NPath BranchesPath { get; private set; }
9785

9886
protected NPath DotGitPath { get; private set; }
87+
88+
protected NPath TestRepoMasterCleanSynchronized { get; private set; }
89+
90+
protected NPath TestRepoMasterCleanUnsynchronized { get; private set; }
91+
92+
protected NPath TestRepoMasterCleanUnsynchronizedRussianLanguage { get; private set; }
93+
94+
protected NPath TestRepoMasterDirtyUnsynchronized { get; private set; }
95+
96+
protected NPath TestRepoMasterTwoRemotes { get; private set; }
97+
98+
private static string TestZipFilePath => Path.Combine(SolutionDirectory, "IOTestsRepo.zip");
9999
}
100100
}

src/tests/IntegrationTests/BaseGitRepoTest.cs

Lines changed: 0 additions & 31 deletions
This file was deleted.
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
using System.IO;
2+
using System.Threading;
3+
using System.Threading.Tasks;
4+
using GitHub.Unity;
5+
using NSubstitute;
6+
7+
namespace IntegrationTests
8+
{
9+
class BasePlatformIntegrationTest : BaseIntegrationTest
10+
{
11+
protected IPlatform Platform { get; private set; }
12+
protected IProcessManager ProcessManager { get; private set; }
13+
protected ITaskManager TaskManager { get; private set; }
14+
protected IProcessEnvironment GitEnvironment { get; private set; }
15+
protected IGitClient GitClient { get; set; }
16+
protected SynchronizationContext SyncContext { get; set; }
17+
public ICacheContainer CacheContainer { get; set; }
18+
19+
protected async Task InitializePlatform(NPath repoPath, NPath environmentPath, bool enableEnvironmentTrace)
20+
{
21+
TaskManager = new TaskManager();
22+
SyncContext = new ThreadSynchronizationContext(TaskManager.Token);
23+
TaskManager.UIScheduler = new SynchronizationContextTaskScheduler(SyncContext);
24+
25+
CacheContainer = Substitute.For<ICacheContainer>();
26+
Environment = new IntegrationTestEnvironment(CacheContainer, repoPath, SolutionDirectory, environmentPath,
27+
enableEnvironmentTrace);
28+
29+
var gitSetup = new GitInstaller(Environment, TaskManager.Token);
30+
await gitSetup.SetupIfNeeded();
31+
Environment.GitExecutablePath = gitSetup.GitExecutablePath;
32+
33+
Platform = new Platform(Environment);
34+
35+
GitEnvironment = Platform.GitEnvironment;
36+
ProcessManager = new ProcessManager(Environment, GitEnvironment, TaskManager.Token);
37+
38+
Platform.Initialize(ProcessManager, TaskManager);
39+
40+
GitClient = new GitClient(Environment, ProcessManager, TaskManager);
41+
}
42+
}
43+
}

src/tests/IntegrationTests/IntegrationTests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@
7676
<Compile Include="Events\RepositoryManagerTests.cs" />
7777
<Compile Include="Events\RepositoryWatcherTests.cs" />
7878
<Compile Include="BaseGitEnvironmentTest.cs" />
79-
<Compile Include="BaseGitRepoTest.cs" />
79+
<Compile Include="BasePlatformIntegrationTest.cs" />
8080
<Compile Include="BaseIntegrationTest.cs" />
8181
<Compile Include="GitClientTests.cs" />
8282
<Compile Include="Git\GitSetupTests.cs" />

0 commit comments

Comments
 (0)