10
10
import java .io .File ;
11
11
import java .io .IOException ;
12
12
import java .nio .file .Path ;
13
+ import java .util .Arrays ;
13
14
import java .util .List ;
14
15
15
16
import static me .qoomon .gitversioning .GitConstants .NO_COMMIT ;
@@ -293,4 +294,117 @@ void headSituation_detachedHeadWithTag() throws GitAPIException {
293
294
softly .assertThat (it .getHeadTags ()).containsExactly (givenTag );
294
295
}));
295
296
}
296
- }
297
+
298
+ @ Test
299
+ void situation_annotatedTagOnMaster () throws Exception {
300
+
301
+ // Given
302
+ Git git = Git .init ().setDirectory (tempDir .toFile ()).call ();
303
+ RevCommit givenCommit = git .commit ().setMessage ("initial commit" ).setAllowEmpty (true ).call ();
304
+
305
+ String givenTag = "v1" ;
306
+ git .tag ().setAnnotated (true ).setName (givenTag ).call ();
307
+
308
+ // When
309
+ GitRepoSituation repoSituation = GitUtil .situation (tempDir .toFile ());
310
+
311
+ // Then
312
+ assertThat (repoSituation ).satisfies (it -> assertSoftly (softly -> {
313
+ softly .assertThat (it .isClean ()).isTrue ();
314
+ softly .assertThat (it .getHeadCommit ()).isEqualTo (givenCommit .getName ());
315
+ softly .assertThat (it .getHeadBranch ()).isEqualTo ("master" );
316
+ softly .assertThat (it .getHeadTags ()).containsExactly (givenTag );
317
+ }));
318
+ }
319
+
320
+ @ Test
321
+ void situation_annotatedTagDetached () throws Exception {
322
+
323
+ // Given
324
+ Git git = Git .init ().setDirectory (tempDir .toFile ()).call ();
325
+ RevCommit givenCommit = git .commit ().setMessage ("initial commit" ).setAllowEmpty (true ).call ();
326
+
327
+ String givenTag = "v1" ;
328
+ git .tag ().setAnnotated (true ).setName (givenTag ).setObjectId (givenCommit ).call ();
329
+ git .checkout ().setName (givenTag ).call ();
330
+
331
+ // When
332
+ GitRepoSituation repoSituation = GitUtil .situation (tempDir .toFile ());
333
+
334
+ // Then
335
+ assertThat (repoSituation ).satisfies (it -> assertSoftly (softly -> {
336
+ softly .assertThat (it .isClean ()).isTrue ();
337
+ softly .assertThat (it .getHeadCommit ()).isEqualTo (givenCommit .getName ());
338
+ softly .assertThat (it .getHeadBranch ()).isNull ();
339
+ softly .assertThat (it .getHeadTags ()).containsExactly (givenTag );
340
+ }));
341
+ }
342
+
343
+ @ Test
344
+ void situation_lightweightTagOnMaster () throws Exception {
345
+
346
+ // Given
347
+ Git git = Git .init ().setDirectory (tempDir .toFile ()).call ();
348
+ RevCommit givenCommit = git .commit ().setMessage ("initial commit" ).setAllowEmpty (true ).call ();
349
+
350
+ String givenTag = "v1" ;
351
+ git .tag ().setAnnotated (false ).setName (givenTag ).call ();
352
+
353
+ // When
354
+ GitRepoSituation repoSituation = GitUtil .situation (tempDir .toFile ());
355
+
356
+ // Then
357
+ assertThat (repoSituation ).satisfies (it -> assertSoftly (softly -> {
358
+ softly .assertThat (it .isClean ()).isTrue ();
359
+ softly .assertThat (it .getHeadCommit ()).isEqualTo (givenCommit .getName ());
360
+ softly .assertThat (it .getHeadBranch ()).isEqualTo ("master" );
361
+ softly .assertThat (it .getHeadTags ()).containsExactly (givenTag );
362
+ }));
363
+ }
364
+
365
+ @ Test
366
+ void situation_lightweightTagDetached () throws Exception {
367
+
368
+ // Given
369
+ Git git = Git .init ().setDirectory (tempDir .toFile ()).call ();
370
+ RevCommit givenCommit = git .commit ().setMessage ("initial commit" ).setAllowEmpty (true ).call ();
371
+
372
+ String givenTag = "v1" ;
373
+ git .tag ().setAnnotated (false ).setName (givenTag ).call ();
374
+ git .checkout ().setName (givenTag ).call ();
375
+
376
+ // When
377
+ GitRepoSituation repoSituation = GitUtil .situation (tempDir .toFile ());
378
+
379
+ // Then
380
+ assertThat (repoSituation ).satisfies (it -> assertSoftly (softly -> {
381
+ softly .assertThat (it .isClean ()).isTrue ();
382
+ softly .assertThat (it .getHeadCommit ()).isEqualTo (givenCommit .getName ());
383
+ softly .assertThat (it .getHeadBranch ()).isNull ();
384
+ softly .assertThat (it .getHeadTags ()).containsExactly (givenTag );
385
+ }));
386
+ }
387
+
388
+ @ Test
389
+ void situation_multipleTags () throws Exception {
390
+
391
+ // Given
392
+ Git git = Git .init ().setDirectory (tempDir .toFile ()).call ();
393
+ git .commit ().setMessage ("initial commit" ).setAllowEmpty (true ).call ();
394
+
395
+ String givenTag1 = "v2" ;
396
+ git .tag ().setAnnotated (false ).setName (givenTag1 ).call ();
397
+ String givenTag2 = "v1" ;
398
+ git .tag ().setAnnotated (false ).setName (givenTag2 ).call ();
399
+ String givenTag3 = "v2.1" ;
400
+ git .tag ().setAnnotated (false ).setName (givenTag3 ).call ();
401
+
402
+ // When
403
+ GitRepoSituation repoSituation = GitUtil .situation (tempDir .toFile ());
404
+
405
+ // Then
406
+ // expect tags to be sorted alphanumerically
407
+ List <String > expectedTags = Arrays .asList (givenTag2 , givenTag1 , givenTag3 );
408
+ assertThat (repoSituation .getHeadTags ()).isEqualTo (expectedTags );
409
+ }
410
+ }
0 commit comments