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

Commit 06dd6e6

Browse files
Merge pull request #544 from github-for-unity/fixes/integration-test-refactor
Refactored integration tests
2 parents bd07ba5 + 434ed2a commit 06dd6e6

File tree

5 files changed

+96
-70
lines changed

5 files changed

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

src/tests/IntegrationTests/IntegrationTests.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,11 @@
7373
</ItemGroup>
7474
<ItemGroup>
7575
<Compile Include="Auth\LoginTests.cs" />
76+
<Compile Include="BaseTaskManagerTest.cs" />
7677
<Compile Include="Events\RepositoryManagerTests.cs" />
7778
<Compile Include="Events\RepositoryWatcherTests.cs" />
7879
<Compile Include="BaseGitEnvironmentTest.cs" />
79-
<Compile Include="BaseGitRepoTest.cs" />
80+
<Compile Include="BasePlatformIntegrationTest.cs" />
8081
<Compile Include="BaseIntegrationTest.cs" />
8182
<Compile Include="GitClientTests.cs" />
8283
<Compile Include="Git\GitSetupTests.cs" />

0 commit comments

Comments
 (0)