1
1
using System ;
2
2
using System . Collections . Generic ;
3
+ using System . Linq ;
3
4
using System . IO ;
4
5
using LibGit2Sharp . Tests . TestHelpers ;
5
6
using Xunit ;
@@ -26,7 +27,7 @@ public void CanRegisterFilterWithSingleAttribute()
26
27
[ Fact ]
27
28
public void CanRegisterAndUnregisterTheSameFilter ( )
28
29
{
29
- var filter = new EmptyFilter ( FilterName + 1 , attributes ) ;
30
+ var filter = new EmptyFilter ( FilterName , attributes ) ;
30
31
31
32
var registration = GlobalSettings . RegisterFilter ( filter ) ;
32
33
GlobalSettings . DeregisterFilter ( registration ) ;
@@ -38,8 +39,7 @@ public void CanRegisterAndUnregisterTheSameFilter()
38
39
[ Fact ]
39
40
public void CanRegisterAndDeregisterAfterGarbageCollection ( )
40
41
{
41
- var filter = new EmptyFilter ( FilterName + 2 , attributes ) ;
42
- var filterRegistration = GlobalSettings . RegisterFilter ( filter ) ;
42
+ var filterRegistration = GlobalSettings . RegisterFilter ( new EmptyFilter ( FilterName , attributes ) ) ;
43
43
44
44
GC . Collect ( ) ;
45
45
@@ -49,7 +49,7 @@ public void CanRegisterAndDeregisterAfterGarbageCollection()
49
49
[ Fact ]
50
50
public void SameFilterIsEqual ( )
51
51
{
52
- var filter = new EmptyFilter ( FilterName + 3 , attributes ) ;
52
+ var filter = new EmptyFilter ( FilterName , attributes ) ;
53
53
Assert . Equal ( filter , filter ) ;
54
54
}
55
55
@@ -62,16 +62,16 @@ public void InitCallbackNotMadeWhenFilterNeverUsed()
62
62
called = true ;
63
63
} ;
64
64
65
- var filter = new FakeFilter ( FilterName + 11 , attributes ,
66
- successCallback ,
67
- successCallback ,
68
- initializeCallback ) ;
69
-
70
- var filterRegistration = GlobalSettings . RegisterFilter ( filter ) ;
65
+ var filter = new FakeFilter ( FilterName ,
66
+ attributes ,
67
+ successCallback ,
68
+ successCallback ,
69
+ initializeCallback ) ;
70
+ var registration = GlobalSettings . RegisterFilter ( filter ) ;
71
71
72
72
Assert . False ( called ) ;
73
73
74
- GlobalSettings . DeregisterFilter ( filterRegistration ) ;
74
+ GlobalSettings . DeregisterFilter ( registration ) ;
75
75
}
76
76
77
77
[ Fact ]
@@ -83,12 +83,12 @@ public void InitCallbackMadeWhenUsingTheFilter()
83
83
called = true ;
84
84
} ;
85
85
86
- var filter = new FakeFilter ( FilterName + 12 , attributes ,
87
- successCallback ,
88
- successCallback ,
89
- initializeCallback ) ;
90
-
91
- var filterRegistration = GlobalSettings . RegisterFilter ( filter ) ;
86
+ var filter = new FakeFilter ( FilterName ,
87
+ attributes ,
88
+ successCallback ,
89
+ successCallback ,
90
+ initializeCallback ) ;
91
+ var registration = GlobalSettings . RegisterFilter ( filter ) ;
92
92
Assert . False ( called ) ;
93
93
94
94
string repoPath = InitNewRepository ( ) ;
@@ -98,7 +98,7 @@ public void InitCallbackMadeWhenUsingTheFilter()
98
98
Assert . True ( called ) ;
99
99
}
100
100
101
- GlobalSettings . DeregisterFilter ( filterRegistration ) ;
101
+ GlobalSettings . DeregisterFilter ( registration ) ;
102
102
}
103
103
104
104
[ Fact ]
@@ -112,17 +112,17 @@ public void WhenStagingFileApplyIsCalledWithCleanForCorrectPath()
112
112
called = true ;
113
113
reader . CopyTo ( writer ) ;
114
114
} ;
115
- var filter = new FakeFilter ( FilterName + 15 , attributes , clean ) ;
116
115
117
- var filterRegistration = GlobalSettings . RegisterFilter ( filter ) ;
116
+ var filter = new FakeFilter ( FilterName , attributes , clean ) ;
117
+ var registration = GlobalSettings . RegisterFilter ( filter ) ;
118
118
119
119
using ( var repo = CreateTestRepository ( repoPath ) )
120
120
{
121
121
StageNewFile ( repo ) ;
122
122
Assert . True ( called ) ;
123
123
}
124
124
125
- GlobalSettings . DeregisterFilter ( filterRegistration ) ;
125
+ GlobalSettings . DeregisterFilter ( registration ) ;
126
126
}
127
127
128
128
[ Fact ]
@@ -135,22 +135,20 @@ public void CleanFilterWritesOutputToObjectTree()
135
135
136
136
Action < Stream , Stream > cleanCallback = SubstitutionCipherFilter . RotateByThirteenPlaces ;
137
137
138
- var filter = new FakeFilter ( FilterName + 16 , attributes , cleanCallback ) ;
139
-
140
- var filterRegistration = GlobalSettings . RegisterFilter ( filter ) ;
138
+ var filter = new FakeFilter ( FilterName , attributes , cleanCallback ) ;
139
+ var registration = GlobalSettings . RegisterFilter ( filter ) ;
141
140
142
141
using ( var repo = CreateTestRepository ( repoPath ) )
143
142
{
144
143
FileInfo expectedFile = StageNewFile ( repo , decodedInput ) ;
145
144
var commit = repo . Commit ( "Clean that file" ) ;
146
-
147
145
var blob = ( Blob ) commit . Tree [ expectedFile . Name ] . Target ;
148
146
149
147
var textDetected = blob . GetContentText ( ) ;
150
148
Assert . Equal ( encodedInput , textDetected ) ;
151
149
}
152
150
153
- GlobalSettings . DeregisterFilter ( filterRegistration ) ;
151
+ GlobalSettings . DeregisterFilter ( registration ) ;
154
152
}
155
153
156
154
[ Fact ]
@@ -164,16 +162,16 @@ public void WhenCheckingOutAFileFileSmudgeWritesCorrectFileToWorkingDirectory()
164
162
165
163
Action < Stream , Stream > smudgeCallback = SubstitutionCipherFilter . RotateByThirteenPlaces ;
166
164
167
- var filter = new FakeFilter ( FilterName + 17 , attributes , null , smudgeCallback ) ;
168
- var filterRegistration = GlobalSettings . RegisterFilter ( filter ) ;
165
+ var filter = new FakeFilter ( FilterName , attributes , null , smudgeCallback ) ;
166
+ var registration = GlobalSettings . RegisterFilter ( filter ) ;
169
167
170
168
FileInfo expectedFile = CheckoutFileForSmudge ( repoPath , branchName , encodedInput ) ;
171
169
172
170
string combine = Path . Combine ( repoPath , ".." , expectedFile . Name ) ;
173
171
string readAllText = File . ReadAllText ( combine ) ;
174
172
Assert . Equal ( decodedInput , readAllText ) ;
175
173
176
- GlobalSettings . DeregisterFilter ( filterRegistration ) ;
174
+ GlobalSettings . DeregisterFilter ( registration ) ;
177
175
}
178
176
179
177
[ Fact ]
@@ -186,8 +184,8 @@ public void CanFilterLargeFiles()
186
184
187
185
string repoPath = InitNewRepository ( ) ;
188
186
189
- var filter = new FileExportFilter ( "exportFilter" , attributes ) ;
190
- var filterRegistration = GlobalSettings . RegisterFilter ( filter ) ;
187
+ var filter = new FileExportFilter ( FilterName , attributes ) ;
188
+ var registration = GlobalSettings . RegisterFilter ( filter ) ;
191
189
192
190
string filePath = Path . Combine ( Directory . GetParent ( repoPath ) . Parent . FullName , Guid . NewGuid ( ) . ToString ( ) + ".blob" ) ;
193
191
FileInfo contentFile = new FileInfo ( filePath ) ;
@@ -233,7 +231,31 @@ public void CanFilterLargeFiles()
233
231
234
232
contentFile . Delete ( ) ;
235
233
236
- GlobalSettings . DeregisterFilter ( filterRegistration ) ;
234
+ GlobalSettings . DeregisterFilter ( registration ) ;
235
+ }
236
+
237
+ [ Fact ]
238
+ public void DoubleRegistrationFailsButDoubleDeregistrationDoesNot ( )
239
+ {
240
+ Assert . Equal ( 0 , GlobalSettings . GetRegisteredFilters ( ) . Count ( ) ) ;
241
+
242
+ var filter = new EmptyFilter ( FilterName , attributes ) ;
243
+ var registration = GlobalSettings . RegisterFilter ( filter ) ;
244
+
245
+ Assert . Throws < EntryExistsException > ( ( ) => { GlobalSettings . RegisterFilter ( filter ) ; } ) ;
246
+ Assert . Equal ( 1 , GlobalSettings . GetRegisteredFilters ( ) . Count ( ) ) ;
247
+
248
+ Assert . True ( registration . IsValid , "FilterRegistration.IsValid should be true." ) ;
249
+
250
+ GlobalSettings . DeregisterFilter ( registration ) ;
251
+ Assert . Equal ( 0 , GlobalSettings . GetRegisteredFilters ( ) . Count ( ) ) ;
252
+
253
+ Assert . False ( registration . IsValid , "FilterRegistration.IsValid should be false." ) ;
254
+
255
+ GlobalSettings . DeregisterFilter ( registration ) ;
256
+ Assert . Equal ( 0 , GlobalSettings . GetRegisteredFilters ( ) . Count ( ) ) ;
257
+
258
+ Assert . False ( registration . IsValid , "FilterRegistration.IsValid should be false." ) ;
237
259
}
238
260
239
261
private unsafe bool CharArrayAreEqual ( char [ ] array1 , char [ ] array2 , int count )
0 commit comments