@@ -38,17 +38,24 @@ public void CanAddADirectReference()
38
38
public void CanAddADirectReferenceFromRevParseSpec ( )
39
39
{
40
40
const string name = "refs/heads/extendedShaSyntaxRulz" ;
41
+ const string logMessage = "Create new ref" ;
41
42
42
43
string path = CloneBareTestRepo ( ) ;
43
44
using ( var repo = new Repository ( path ) )
44
45
{
45
- var newRef = ( DirectReference ) repo . Refs . Add ( name , "master^1^2" ) ;
46
+ var newRef = ( DirectReference ) repo . Refs . Add ( name , "master^1^2" , logMessage : logMessage ) ;
46
47
Assert . NotNull ( newRef ) ;
47
48
Assert . Equal ( name , newRef . CanonicalName ) ;
48
49
Assert . NotNull ( newRef . Target ) ;
49
50
Assert . Equal ( "c47800c7266a2be04c571c04d5a6614691ea99bd" , newRef . Target . Sha ) ;
50
51
Assert . Equal ( newRef . Target . Sha , newRef . TargetIdentifier ) ;
51
52
Assert . NotNull ( repo . Refs [ name ] ) ;
53
+
54
+ AssertReflogEntryIsCreated (
55
+ repo . Refs . Log ( newRef ) ,
56
+ newRef . ResolveToDirectReference ( ) . Target . Sha ,
57
+ logMessage ,
58
+ ObjectId . Zero . Sha ) ;
52
59
}
53
60
}
54
61
@@ -84,15 +91,22 @@ public void CanAddASymbolicReferenceFromTheTargetReference()
84
91
{
85
92
const string name = "refs/heads/unit_test" ;
86
93
const string target = "refs/heads/master" ;
94
+ const string logMessage = "unit_test reference init" ;
87
95
88
96
string path = CloneBareTestRepo ( ) ;
89
97
using ( var repo = new Repository ( path ) )
90
98
{
91
99
var targetRef = repo . Refs [ target ] ;
92
100
93
- var newRef = repo . Refs . Add ( name , targetRef ) ;
101
+ var newRef = repo . Refs . Add ( name , targetRef , logMessage : logMessage ) ;
94
102
95
103
AssertSymbolicRef ( newRef , repo , target , name ) ;
104
+
105
+ AssertReflogEntryIsCreated (
106
+ repo . Refs . Log ( newRef ) ,
107
+ newRef . ResolveToDirectReference ( ) . Target . Sha ,
108
+ logMessage ,
109
+ ObjectId . Zero . Sha ) ;
96
110
}
97
111
}
98
112
@@ -131,16 +145,23 @@ public void CanAddAndOverwriteADirectReference()
131
145
{
132
146
const string name = "refs/heads/br2" ;
133
147
const string target = "4c062a6361ae6959e06292c1fa5e2822d9c96345" ;
148
+ const string logMessage = "Create new ref" ;
134
149
135
150
string path = CloneBareTestRepo ( ) ;
136
151
using ( var repo = new Repository ( path ) )
137
152
{
138
- var newRef = ( DirectReference ) repo . Refs . Add ( name , target , true ) ;
153
+ var newRef = ( DirectReference ) repo . Refs . Add ( name , target , true , logMessage ) ;
139
154
Assert . NotNull ( newRef ) ;
140
155
Assert . Equal ( name , newRef . CanonicalName ) ;
141
156
Assert . NotNull ( newRef . Target ) ;
142
157
Assert . Equal ( target , newRef . Target . Sha ) ;
143
158
Assert . Equal ( target , ( ( DirectReference ) repo . Refs [ name ] ) . Target . Sha ) ;
159
+
160
+ AssertReflogEntryIsCreated (
161
+ repo . Refs . Log ( newRef ) ,
162
+ newRef . ResolveToDirectReference ( ) . Target . Sha ,
163
+ logMessage ,
164
+ ObjectId . Zero . Sha ) ;
144
165
}
145
166
}
146
167
@@ -149,16 +170,23 @@ public void CanAddAndOverwriteASymbolicReference()
149
170
{
150
171
const string name = "HEAD" ;
151
172
const string target = "refs/heads/br2" ;
173
+ const string logMessage = "Create new ref" ;
152
174
153
175
string path = CloneBareTestRepo ( ) ;
154
176
using ( var repo = new Repository ( path ) )
155
177
{
156
- var newRef = ( SymbolicReference ) repo . Refs . Add ( name , target , true ) ;
178
+ var newRef = ( SymbolicReference ) repo . Refs . Add ( name , target , true , logMessage ) ;
157
179
Assert . NotNull ( newRef ) ;
158
180
Assert . Equal ( name , newRef . CanonicalName ) ;
159
181
Assert . NotNull ( newRef . Target ) ;
160
182
Assert . Equal ( "a4a7dce85cf63874e984719f4fdd239f5145052f" , newRef . ResolveToDirectReference ( ) . Target . Sha ) ;
161
183
Assert . Equal ( target , ( ( SymbolicReference ) repo . Refs . Head ) . Target . CanonicalName ) ;
184
+
185
+ AssertReflogEntryIsCreated (
186
+ repo . Refs . Log ( newRef ) ,
187
+ newRef . ResolveToDirectReference ( ) . Target . Sha ,
188
+ logMessage ,
189
+ ObjectId . Zero . Sha ) ;
162
190
}
163
191
}
164
192
@@ -462,28 +490,23 @@ public void CanUpdateHeadWithEitherAnObjectIdOrAReference()
462
490
Assert . Equal ( test . TargetIdentifier , direct . TargetIdentifier ) ;
463
491
Assert . Equal ( repo . Refs . Head , direct ) ;
464
492
465
- // Assert reflog entry is created
466
- var reflogEntry = repo . Refs . Log ( repo . Refs . Head ) . First ( ) ;
467
- ObjectId testTargetId = test . ResolveToDirectReference ( ) . Target . Id ;
468
-
469
- Assert . Equal ( testTargetId , reflogEntry . To ) ;
470
- Assert . NotNull ( reflogEntry . Commiter . Email ) ;
471
- Assert . NotNull ( reflogEntry . Commiter . Name ) ;
472
- Assert . Equal ( firstLogMessage , reflogEntry . Message ) ;
493
+ String testTargetSha = test . ResolveToDirectReference ( ) . Target . Sha ;
494
+ AssertReflogEntryIsCreated (
495
+ repo . Refs . Log ( repo . Refs . Head ) ,
496
+ testTargetSha ,
497
+ firstLogMessage ) ;
473
498
474
499
const string secondLogMessage = "second update target message" ;
475
500
Reference symref = repo . Refs . UpdateTarget ( head , test , secondLogMessage ) ;
476
501
Assert . True ( ( symref is SymbolicReference ) ) ;
477
502
Assert . Equal ( test . CanonicalName , symref . TargetIdentifier ) ;
478
503
Assert . Equal ( repo . Refs . Head , symref ) ;
479
504
480
- // Assert reflog entry is created
481
- reflogEntry = repo . Refs . Log ( repo . Refs . Head ) . First ( ) ;
482
- Assert . Equal ( testTargetId , reflogEntry . From ) ;
483
- Assert . Equal ( testTargetId , reflogEntry . To ) ;
484
- Assert . NotNull ( reflogEntry . Commiter . Email ) ;
485
- Assert . NotNull ( reflogEntry . Commiter . Name ) ;
486
- Assert . Equal ( secondLogMessage , reflogEntry . Message ) ;
505
+ AssertReflogEntryIsCreated (
506
+ repo . Refs . Log ( repo . Refs . Head ) ,
507
+ testTargetSha ,
508
+ secondLogMessage ,
509
+ testTargetSha ) ;
487
510
}
488
511
}
489
512
@@ -506,10 +529,10 @@ public void CanUpdateTargetOfADirectReferenceWithARevparseSpec()
506
529
Assert . Equal ( newRef . Target . Sha , newRef . TargetIdentifier ) ;
507
530
Assert . NotNull ( repo . Refs [ name ] ) ;
508
531
509
- // Assert reflog entry is created
510
- var reflogEntry = repo . Refs . Log ( master ) . First ( ) ;
511
- Assert . Equal ( newRef . Target . Id , reflogEntry . To ) ;
512
- Assert . Equal ( logMessage , reflogEntry . Message ) ;
532
+ AssertReflogEntryIsCreated (
533
+ repo . Refs . Log ( master ) ,
534
+ newRef . Target . Sha ,
535
+ logMessage ) ;
513
536
}
514
537
}
515
538
@@ -755,5 +778,20 @@ public void CanIdentifyReferenceKind()
755
778
Assert . True ( repo . Refs [ "refs/notes/commits" ] . IsNote ( ) ) ;
756
779
}
757
780
}
781
+
782
+ private static void AssertReflogEntryIsCreated ( IEnumerable < ReflogEntry > reflog , string targetSha , string logMessage , string fromSha = null )
783
+ {
784
+ var reflogEntry = reflog . First ( ) ;
785
+
786
+ if ( ! string . IsNullOrEmpty ( fromSha ) )
787
+ {
788
+ Assert . Equal ( fromSha , reflogEntry . From . Sha ) ;
789
+ }
790
+
791
+ Assert . Equal ( targetSha , reflogEntry . To . Sha ) ;
792
+ Assert . NotNull ( reflogEntry . Commiter . Email ) ;
793
+ Assert . NotNull ( reflogEntry . Commiter . Name ) ;
794
+ Assert . Equal ( logMessage , reflogEntry . Message ) ;
795
+ }
758
796
}
759
797
}
0 commit comments