1
1
using System ;
2
- using System . Collections . Generic ;
3
2
using LibGit2Sharp . Tests . TestHelpers ;
4
3
using Xunit ;
5
4
@@ -9,17 +8,15 @@ public class FilterFixture : BaseFixture
9
8
{
10
9
private const int GitPassThrough = - 30 ;
11
10
private readonly FilterCallbacks emptyCallbacks = new FilterCallbacks ( null , null ) ;
12
- private readonly List < Filter > filtersForCleanUp ;
13
11
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 ;
18
15
19
16
[ Fact ]
20
- public void CanRegisterAndUnregisterFilter ( )
17
+ public void CanRegisterAndUnregisterTheSameFilter ( )
21
18
{
22
- var filter = new Filter ( "radness-filter" , "test" , 1 , emptyCallbacks ) ;
19
+ var filter = new Filter ( FilterName + 1 , Attributes , Version , emptyCallbacks ) ;
23
20
24
21
filter . Register ( ) ;
25
22
filter . Deregister ( ) ;
@@ -29,36 +26,73 @@ public void CanRegisterAndUnregisterFilter()
29
26
}
30
27
31
28
[ Fact ]
32
- public void CanNotRegisterFilterWithTheSameNameMoreThanOnce ( )
29
+ public void CanRegisterAndDeregisterAfterGarbageCollection ( )
33
30
{
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 ( ) ;
36
35
37
- filterOne . Register ( ) ;
38
- Assert . Throws < InvalidOperationException > ( ( ) => filterTwo . Register ( ) ) ;
36
+ filter . Deregister ( ) ;
39
37
}
40
38
41
39
[ 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 ( )
43
61
{
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 ( ) ;
47
66
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 ) ;
51
72
}
52
73
53
74
[ Fact ]
54
75
public void CanLookupRegisteredFilterByNameAndValuesAreMarshalCorrectly ( )
55
76
{
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 ( ) ;
59
84
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
+ {
60
93
string repoPathOne = InitNewRepository ( ) ;
61
94
string repoPathTwo = InitNewRepository ( ) ;
95
+ var filter = new Filter ( FilterName + 7 , Attributes , Version , emptyCallbacks ) ;
62
96
63
97
using ( var repoOne = new Repository ( repoPathOne ) )
64
98
{
@@ -68,16 +102,30 @@ public void CanLookupRegisteredFilterByNameAndValuesAreMarshalCorrectly()
68
102
Console . WriteLine ( "Second" ) ;
69
103
StageNewFile ( repoOne , 2 ) ;
70
104
}
71
- var filter = CreateFilterForAutomaticCleanUp ( filterName , attributes , version ) ;
105
+
72
106
filter . Register ( ) ;
73
107
108
+ var lookup = new FilterRegistry ( ) ;
109
+ Filter lookupByName = lookup . LookupByName ( FilterName + 7 ) ;
74
110
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 ( ) ;
77
119
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 ( ) ;
81
129
}
82
130
83
131
[ Fact ]
@@ -87,14 +135,14 @@ public void CheckCallbackNotMadeWhenFileStagedAndFilterNotRegistered()
87
135
Func < int > callback = ( ) =>
88
136
{
89
137
called = true ;
90
- return GitPassThrough ;
138
+ return GitPassThrough ;
91
139
} ;
92
140
string repoPath = InitNewRepository ( ) ;
93
141
var callbacks = new FilterCallbacks ( callback ) ;
94
142
new Filter ( "test-filter" , "filter" , 1 , callbacks ) ;
95
143
using ( var repo = new Repository ( repoPath ) )
96
144
{
97
- StageNewFile ( repo ) ;
145
+ StageNewFile ( repo , 55 ) ;
98
146
}
99
147
100
148
Assert . False ( called ) ;
@@ -111,15 +159,15 @@ public void CheckCallbackMadeWhenFileStaged()
111
159
} ;
112
160
string repoPath = InitNewRepository ( ) ;
113
161
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 ) ;
115
163
using ( var repo = new Repository ( repoPath ) )
116
164
{
117
- filter . Register ( ) ;
165
+ test . Register ( ) ;
118
166
119
- StageNewFile ( repo ) ;
167
+ StageNewFile ( repo , 22 ) ;
120
168
}
121
169
122
- filter . Deregister ( ) ;
170
+ test . Deregister ( ) ;
123
171
124
172
Assert . True ( called ) ;
125
173
}
@@ -137,24 +185,22 @@ public void ApplyCallbackMadeWhenCheckCallbackReturnsZero()
137
185
138
186
string repoPath = InitNewRepository ( ) ;
139
187
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 ) ;
141
189
using ( var repo = new Repository ( repoPath ) )
142
190
{
143
- filter . Register ( ) ;
191
+ test . Register ( ) ;
144
192
145
- StageNewFile ( repo ) ;
193
+ StageNewFile ( repo , 44 ) ;
146
194
}
147
195
148
- filter . Deregister ( ) ;
149
-
196
+ test . Deregister ( ) ;
150
197
Assert . True ( called ) ;
151
198
}
152
199
153
200
[ Fact ]
154
201
public void ApplyCallbackNotMadeWhenCheckCallbackReturnsPassThrough ( )
155
202
{
156
203
bool called = false ;
157
-
158
204
Func < int > applyCallback = ( ) =>
159
205
{
160
206
called = true ;
@@ -163,44 +209,16 @@ public void ApplyCallbackNotMadeWhenCheckCallbackReturnsPassThrough()
163
209
164
210
string repoPath = InitNewRepository ( ) ;
165
211
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 ) ;
167
213
using ( var repo = new Repository ( repoPath ) )
168
214
{
169
- filter . Register ( ) ;
215
+ test . Register ( ) ;
170
216
171
- StageNewFile ( repo ) ;
217
+ StageNewFile ( repo , 77 ) ;
172
218
}
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
- }
183
219
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 ) ;
204
222
}
205
223
206
224
[ Fact ]
@@ -214,7 +232,7 @@ public void CleanUpIsCalledAfterStage()
214
232
} ;
215
233
216
234
string repoPath = InitNewRepository ( ) ;
217
- var callbacks = new FilterCallbacks ( ( ) => 0 , ( ) => 0 , ( ) => { } , ( ) => 0 , cleanUpCallback ) ;
235
+ var callbacks = new FilterCallbacks ( ( ) => 0 , ( ) => 0 , ( ) => { } , ( ) => 0 , cleanUpCallback ) ;
218
236
var test = new Filter ( "test-filter55" , "filter" , 1 , callbacks ) ;
219
237
using ( var repo = new Repository ( repoPath ) )
220
238
{
@@ -257,7 +275,7 @@ public void ShutdownCallbackMadeWhenDeregisteringFilter()
257
275
called = true ;
258
276
} ;
259
277
260
- var callbacks = new FilterCallbacks ( ( ) => 0 , ( ) => 0 , shutdownCallback ) ;
278
+ var callbacks = new FilterCallbacks ( ( ) => 0 , ( ) => 0 , shutdownCallback ) ;
261
279
var filter = new Filter ( "test-filter" , "filter" , 1 , callbacks ) ;
262
280
263
281
filter . Register ( ) ;
0 commit comments