Skip to content

Commit 233b14d

Browse files
committed
Test clean up
1 parent 10a633c commit 233b14d

File tree

1 file changed

+94
-76
lines changed

1 file changed

+94
-76
lines changed

LibGit2Sharp.Tests/FilterFixture.cs

Lines changed: 94 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System;
2-
using System.Collections.Generic;
32
using LibGit2Sharp.Tests.TestHelpers;
43
using Xunit;
54

@@ -9,17 +8,15 @@ public class FilterFixture : BaseFixture
98
{
109
private const int GitPassThrough = -30;
1110
private readonly FilterCallbacks emptyCallbacks = new FilterCallbacks(null, null);
12-
private readonly List<Filter> filtersForCleanUp;
1311

14-
public FilterFixture()
15-
{
16-
filtersForCleanUp = new List<Filter>();
17-
}
12+
private const string FilterName = "the-filter";
13+
const string Attributes = "test";
14+
const int Version = 1;
1815

1916
[Fact]
20-
public void CanRegisterAndUnregisterFilter()
17+
public void CanRegisterAndUnregisterTheSameFilter()
2118
{
22-
var filter = new Filter("radness-filter", "test", 1, emptyCallbacks);
19+
var filter = new Filter(FilterName + 1, Attributes, Version, emptyCallbacks);
2320

2421
filter.Register();
2522
filter.Deregister();
@@ -29,36 +26,73 @@ public void CanRegisterAndUnregisterFilter()
2926
}
3027

3128
[Fact]
32-
public void CanNotRegisterFilterWithTheSameNameMoreThanOnce()
29+
public void CanRegisterAndDeregisterAfterGarbageCollection()
3330
{
34-
var filterOne = CreateFilterForAutomaticCleanUp("filter-one", "test", 1);
35-
var filterTwo = CreateFilterForAutomaticCleanUp("filter-one", "test", 1);
31+
var filter = new Filter(FilterName + 2, Attributes, Version, emptyCallbacks);
32+
filter.Register();
33+
34+
GC.Collect();
3635

37-
filterOne.Register();
38-
Assert.Throws<InvalidOperationException>(() => filterTwo.Register());
36+
filter.Deregister();
3937
}
4038

4139
[Fact]
42-
public void CanRegisterAndUnregisterTheSameFilter()
40+
public void SameFilterIsEqual()
41+
{
42+
var filter = new Filter(FilterName + 3, Attributes, Version, emptyCallbacks);
43+
Assert.Equal(filter, filter);
44+
}
45+
46+
[Fact]
47+
public void WhenLookingUpFilterResultIsEqual()
48+
{
49+
var filter = new Filter(FilterName + 4, Attributes, Version, emptyCallbacks);
50+
filter.Register();
51+
52+
var registry = new FilterRegistry();
53+
Filter lookupByName = registry.LookupByName(FilterName + 4);
54+
55+
filter.Deregister();
56+
Assert.Equal(filter, lookupByName);
57+
}
58+
59+
[Fact]
60+
public void LookingUpFilterResultSurvivesGarbageCollection()
4361
{
44-
var filterOne = new Filter("filter-two", "test", 1, emptyCallbacks);
45-
filterOne.Register();
46-
filterOne.Deregister();
62+
var filter = new Filter(FilterName + 5, Attributes, Version, emptyCallbacks);
63+
filter.Register();
64+
65+
GC.Collect();
4766

48-
var filterTwo = new Filter("filter-two", "test", 1, emptyCallbacks);
49-
filterTwo.Register();
50-
filterTwo.Deregister();
67+
var registry = new FilterRegistry();
68+
Filter lookupByName = registry.LookupByName(FilterName + 5);
69+
70+
filter.Deregister();
71+
Assert.Equal(filter, lookupByName);
5172
}
5273

5374
[Fact]
5475
public void CanLookupRegisteredFilterByNameAndValuesAreMarshalCorrectly()
5576
{
56-
const string filterName = "filter-three";
57-
const string attributes = "test";
58-
const int version = 1;
77+
var filter = new Filter(FilterName + 6, Attributes, Version, emptyCallbacks);
78+
filter.Register();
79+
80+
var registry = new FilterRegistry();
81+
var lookedUpFilter = registry.LookupByName(FilterName + 6);
82+
83+
filter.Deregister();
5984

85+
Assert.Equal(FilterName + 6, lookedUpFilter.Name);
86+
Assert.Equal(Version, lookedUpFilter.Version);
87+
Assert.Equal(Attributes, lookedUpFilter.Attributes);
88+
}
89+
90+
[Fact]
91+
public void TestingCallbacks()
92+
{
6093
string repoPathOne = InitNewRepository();
6194
string repoPathTwo = InitNewRepository();
95+
var filter = new Filter(FilterName + 7, Attributes, Version, emptyCallbacks);
6296

6397
using (var repoOne = new Repository(repoPathOne))
6498
{
@@ -68,16 +102,30 @@ public void CanLookupRegisteredFilterByNameAndValuesAreMarshalCorrectly()
68102
Console.WriteLine("Second");
69103
StageNewFile(repoOne, 2);
70104
}
71-
var filter = CreateFilterForAutomaticCleanUp(filterName, attributes, version);
105+
72106
filter.Register();
73107

108+
var lookup = new FilterRegistry();
109+
Filter lookupByName = lookup.LookupByName(FilterName + 7);
74110

75-
var registry = new FilterRegistry();
76-
var lookedUpFilter = registry.LookupByName(filterName);
111+
Assert.Equal(Attributes, lookupByName.Attributes);
112+
113+
114+
Filter lookupByName1 = lookup.LookupByName(FilterName + 7);
115+
116+
Assert.Equal(Attributes, lookupByName1.Attributes);
117+
118+
GC.Collect();
77119

78-
Assert.Equal(filterName, lookedUpFilter.Name);
79-
Assert.Equal(version, lookedUpFilter.Version);
80-
Assert.Equal(attributes, lookedUpFilter.Attributes);
120+
using (var repoTwo = new Repository(repoPathTwo))
121+
{
122+
Console.WriteLine("Third");
123+
StageNewFile(repoTwo, 3);
124+
125+
GC.Collect();
126+
}
127+
128+
lookupByName.Deregister();
81129
}
82130

83131
[Fact]
@@ -87,14 +135,14 @@ public void CheckCallbackNotMadeWhenFileStagedAndFilterNotRegistered()
87135
Func<int> callback = () =>
88136
{
89137
called = true;
90-
return GitPassThrough;
138+
return GitPassThrough;
91139
};
92140
string repoPath = InitNewRepository();
93141
var callbacks = new FilterCallbacks(callback);
94142
new Filter("test-filter", "filter", 1, callbacks);
95143
using (var repo = new Repository(repoPath))
96144
{
97-
StageNewFile(repo);
145+
StageNewFile(repo, 55);
98146
}
99147

100148
Assert.False(called);
@@ -111,15 +159,15 @@ public void CheckCallbackMadeWhenFileStaged()
111159
};
112160
string repoPath = InitNewRepository();
113161
var callbacks = new FilterCallbacks(callback);
114-
var filter = new Filter("test-filter", "filter", 1, callbacks);
162+
var test = new Filter("test-filter33", "filter", 1, callbacks);
115163
using (var repo = new Repository(repoPath))
116164
{
117-
filter.Register();
165+
test.Register();
118166

119-
StageNewFile(repo);
167+
StageNewFile(repo, 22);
120168
}
121169

122-
filter.Deregister();
170+
test.Deregister();
123171

124172
Assert.True(called);
125173
}
@@ -137,24 +185,22 @@ public void ApplyCallbackMadeWhenCheckCallbackReturnsZero()
137185

138186
string repoPath = InitNewRepository();
139187
var callbacks = new FilterCallbacks(() => 0, applyCallback);
140-
var filter = new Filter("test-filter", "filter", 1, callbacks);
188+
var test = new Filter("test-filter55", "filter", 1, callbacks);
141189
using (var repo = new Repository(repoPath))
142190
{
143-
filter.Register();
191+
test.Register();
144192

145-
StageNewFile(repo);
193+
StageNewFile(repo, 44);
146194
}
147195

148-
filter.Deregister();
149-
196+
test.Deregister();
150197
Assert.True(called);
151198
}
152199

153200
[Fact]
154201
public void ApplyCallbackNotMadeWhenCheckCallbackReturnsPassThrough()
155202
{
156203
bool called = false;
157-
158204
Func<int> applyCallback = () =>
159205
{
160206
called = true;
@@ -163,44 +209,16 @@ public void ApplyCallbackNotMadeWhenCheckCallbackReturnsPassThrough()
163209

164210
string repoPath = InitNewRepository();
165211
var callbacks = new FilterCallbacks(() => GitPassThrough, applyCallback);
166-
var filter = new Filter("test-filter", "filter", 1, callbacks);
212+
var test = new Filter("test-filter", "filter", 1, callbacks);
167213
using (var repo = new Repository(repoPath))
168214
{
169-
filter.Register();
215+
test.Register();
170216

171-
StageNewFile(repo);
217+
StageNewFile(repo, 77);
172218
}
173-
Assert.False(called);
174-
175-
}
176-
177-
private static void StageNewFile(Repository repo)
178-
{
179-
const string path = "new.txt";
180-
Touch(repo.Info.WorkingDirectory, path, "null");
181-
repo.Index.Stage(path);
182-
}
183219

184-
private Filter CreateFilterForAutomaticCleanUp(string name, string attributes, int version)
185-
{
186-
187-
var filter = new Filter(name, attributes, version, emptyCallbacks);
188-
filtersForCleanUp.Add(filter);
189-
return filter;
190-
}
191-
192-
public override void Dispose()
193-
{
194-
foreach (var filter in filtersForCleanUp)
195-
{
196-
try
197-
{
198-
filter.Deregister();
199-
}
200-
catch (LibGit2SharpException)
201-
{ }
202-
}
203-
base.Dispose();
220+
test.Deregister();
221+
Assert.False(called);
204222
}
205223

206224
[Fact]
@@ -214,7 +232,7 @@ public void CleanUpIsCalledAfterStage()
214232
};
215233

216234
string repoPath = InitNewRepository();
217-
var callbacks = new FilterCallbacks(() => 0, ()=> 0, () => {}, ()=>0, cleanUpCallback);
235+
var callbacks = new FilterCallbacks(() => 0, () => 0, () => { }, () => 0, cleanUpCallback);
218236
var test = new Filter("test-filter55", "filter", 1, callbacks);
219237
using (var repo = new Repository(repoPath))
220238
{
@@ -257,7 +275,7 @@ public void ShutdownCallbackMadeWhenDeregisteringFilter()
257275
called = true;
258276
};
259277

260-
var callbacks = new FilterCallbacks(() => 0, ()=> 0, shutdownCallback);
278+
var callbacks = new FilterCallbacks(() => 0, () => 0, shutdownCallback);
261279
var filter = new Filter("test-filter", "filter", 1, callbacks);
262280

263281
filter.Register();

0 commit comments

Comments
 (0)