Skip to content

Commit 3a3e565

Browse files
authored
Update GitRepositoryProvider rule URL to new website (#984)
1 parent 16d503b commit 3a3e565

File tree

3 files changed

+59
-16
lines changed

3 files changed

+59
-16
lines changed

src/Cake.Issues.GitRepository.Tests/IssueBuilderExtensionsTests.cs

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ public void Should_Throw_If_IssueBuilder_Is_Null()
1010
// Given
1111
IssueBuilder issueBuilder = null;
1212
var ruleDescription = new BinaryFileNotTrackedByLfsRuleDescription();
13+
var issueProviderVersion = "1.0.0";
1314

1415
// When
15-
var result = Record.Exception(() => issueBuilder.OfRule(ruleDescription));
16+
var result = Record.Exception(() => issueBuilder.OfRule(ruleDescription, issueProviderVersion));
1617

1718
// Then
1819
result.IsArgumentNullException("issueBuilder");
@@ -23,24 +24,43 @@ public void Should_Throw_If_RuleDescription_Is_Null()
2324
{
2425
// Given
2526
var issueBuilder = IssueBuilder.NewIssue("message", "providerType", "providerName");
27+
var issueProviderVersion = "1.0.0";
2628
BaseGitRepositoryIssuesRuleDescription ruleDescription = null;
2729

2830
// When
29-
var result = Record.Exception(() => issueBuilder.OfRule(ruleDescription));
31+
var result = Record.Exception(() => issueBuilder.OfRule(ruleDescription, issueProviderVersion));
3032

3133
// Then
3234
result.IsArgumentNullException("ruleDescription");
3335
}
3436

37+
[Theory]
38+
[InlineData(null)]
39+
[InlineData("")]
40+
[InlineData(" ")]
41+
public void Should_Use_Latest_If_IssueProviderVersion_Is_Not_Set(string issueProviderVersion)
42+
{
43+
// Given
44+
var issueBuilder = IssueBuilder.NewIssue("message", "providerType", "providerName");
45+
var ruleDescription = new BinaryFileNotTrackedByLfsRuleDescription();
46+
47+
// When
48+
var result = issueBuilder.OfRule(ruleDescription, issueProviderVersion);
49+
50+
// Then
51+
result.Create().RuleUrl.ToString().ShouldBe("https://cakeissues.net/latest/documentation/issue-providers/gitrepository/rules/BinaryFileNotTrackedByLfs");
52+
}
53+
3554
[Fact]
3655
public void Should_Set_RuleId()
3756
{
3857
// Given
3958
var issueBuilder = IssueBuilder.NewIssue("message", "providerType", "providerName");
59+
var issueProviderVersion = "1.0.0";
4060
var ruleDescription = new BinaryFileNotTrackedByLfsRuleDescription();
4161

4262
// When
43-
var result = issueBuilder.OfRule(ruleDescription);
63+
var result = issueBuilder.OfRule(ruleDescription, issueProviderVersion);
4464

4565
// Then
4666
result.Create().RuleId.ShouldBe(ruleDescription.RuleId);
@@ -51,10 +71,11 @@ public void Should_Set_RuleName()
5171
{
5272
// Given
5373
var issueBuilder = IssueBuilder.NewIssue("message", "providerType", "providerName");
74+
var issueProviderVersion = "1.0.0";
5475
var ruleDescription = new BinaryFileNotTrackedByLfsRuleDescription();
5576

5677
// When
57-
var result = issueBuilder.OfRule(ruleDescription);
78+
var result = issueBuilder.OfRule(ruleDescription, issueProviderVersion);
5879

5980
// Then
6081
result.Create().RuleName.ShouldBe(ruleDescription.RuleName);
@@ -65,24 +86,26 @@ public void Should_Set_RuleUrl()
6586
{
6687
// Given
6788
var issueBuilder = IssueBuilder.NewIssue("message", "providerType", "providerName");
89+
var issueProviderVersion = "1.0.0";
6890
var ruleDescription = new BinaryFileNotTrackedByLfsRuleDescription();
6991

7092
// When
71-
var result = issueBuilder.OfRule(ruleDescription);
93+
var result = issueBuilder.OfRule(ruleDescription, issueProviderVersion);
7294

7395
// Then
74-
result.Create().RuleUrl.ToString().ShouldBe("https://cakeissues.net/docs/issue-providers/gitrepository/rules/BinaryFileNotTrackedByLfs");
96+
result.Create().RuleUrl.ToString().ShouldBe("https://cakeissues.net/1.0.0/documentation/issue-providers/gitrepository/rules/BinaryFileNotTrackedByLfs");
7597
}
7698

7799
[Fact]
78100
public void Should_Set_Priority()
79101
{
80102
// Given
81103
var issueBuilder = IssueBuilder.NewIssue("message", "providerType", "providerName");
104+
var issueProviderVersion = "1.0.0";
82105
var ruleDescription = new BinaryFileNotTrackedByLfsRuleDescription();
83106

84107
// When
85-
var result = issueBuilder.OfRule(ruleDescription);
108+
var result = issueBuilder.OfRule(ruleDescription, issueProviderVersion);
86109

87110
// Then
88111
result.Create().Priority.ShouldBe((int)ruleDescription.Priority);
@@ -93,10 +116,11 @@ public void Should_Set_PriorityName()
93116
{
94117
// Given
95118
var issueBuilder = IssueBuilder.NewIssue("message", "providerType", "providerName");
119+
var issueProviderVersion = "1.0.0";
96120
var ruleDescription = new BinaryFileNotTrackedByLfsRuleDescription();
97121

98122
// When
99-
var result = issueBuilder.OfRule(ruleDescription);
123+
var result = issueBuilder.OfRule(ruleDescription, issueProviderVersion);
100124

101125
// Then
102126
result.Create().PriorityName.ShouldBe(ruleDescription.Priority.ToString());

src/Cake.Issues.GitRepository/GitRepositoryIssuesProvider.cs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
using System;
44
using System.Collections.Generic;
5+
using System.Diagnostics;
56
using System.Linq;
7+
using System.Reflection;
68
using Cake.Core;
79
using Cake.Core.Diagnostics;
810
using Cake.Core.IO;
@@ -75,14 +77,20 @@ protected override IEnumerable<IIssue> InternalReadIssues()
7577
{
7678
var result = new List<IIssue>();
7779

80+
var assembly = Assembly.GetAssembly(typeof(GitRepositoryIssuesProvider));
81+
var fileVersion = FileVersionInfo.GetVersionInfo(assembly.Location).FileVersion;
82+
var versionParts = fileVersion.Split('.');
83+
var issueProviderVersion = $"{versionParts[0]}.{versionParts[1]}.{versionParts[2]}";
84+
7885
if (this.IssueProviderSettings.CheckBinaryFilesTrackedByLfs)
7986
{
80-
result.AddRange(this.CheckForBinaryFilesNotTrackedByLfs());
87+
result.AddRange(
88+
this.CheckForBinaryFilesNotTrackedByLfs(issueProviderVersion));
8189
}
8290

8391
if (this.IssueProviderSettings.CheckFilesPathLength)
8492
{
85-
result.AddRange(this.CheckForFilesPathLength());
93+
result.AddRange(this.CheckForFilesPathLength(issueProviderVersion));
8694
}
8795

8896
return result;
@@ -91,8 +99,9 @@ protected override IEnumerable<IIssue> InternalReadIssues()
9199
/// <summary>
92100
/// Checks for binary files which are not tracked by LFS.
93101
/// </summary>
102+
/// <param name="issueProviderVersion">Version of the issue provider.</param>
94103
/// <returns>List of issues for binary files which are not tracked by LFS.</returns>
95-
private List<IIssue> CheckForBinaryFilesNotTrackedByLfs()
104+
private List<IIssue> CheckForBinaryFilesNotTrackedByLfs(string issueProviderVersion)
96105
{
97106
if (!this.allFiles.Value.Any())
98107
{
@@ -119,7 +128,7 @@ private List<IIssue> CheckForBinaryFilesNotTrackedByLfs()
119128
.WithMessageInHtmlFormat($"The binary file <code>{file}</code> is not tracked by Git LFS")
120129
.WithMessageInMarkdownFormat($"The binary file `{file}` is not tracked by Git LFS")
121130
.InFile(file)
122-
.OfRule(ruleDescription)
131+
.OfRule(ruleDescription, issueProviderVersion)
123132
.Create());
124133
}
125134

@@ -129,8 +138,9 @@ private List<IIssue> CheckForBinaryFilesNotTrackedByLfs()
129138
/// <summary>
130139
/// Checks for files path length.
131140
/// </summary>
141+
/// <param name="issueProviderVersion">Version of the issue provider.</param>
132142
/// <returns>List of issues for repository files with paths exceeding the allowed maximum.</returns>
133-
private List<IIssue> CheckForFilesPathLength()
143+
private List<IIssue> CheckForFilesPathLength(string issueProviderVersion)
134144
{
135145
if (!this.allFiles.Value.Any())
136146
{
@@ -150,7 +160,7 @@ private List<IIssue> CheckForFilesPathLength()
150160
.WithMessageInHtmlFormat($"The path for the file <code>{file}</code> is too long. Maximum allowed path length is {this.IssueProviderSettings.MaxFilePathLength}, actual path length is {file.Length}.")
151161
.WithMessageInMarkdownFormat($"The path for the file `{file}` is too long. Maximum allowed path length is {this.IssueProviderSettings.MaxFilePathLength}, actual path length is {file.Length}.")
152162
.InFile(file)
153-
.OfRule(ruleDescription)
163+
.OfRule(ruleDescription, issueProviderVersion)
154164
.Create());
155165
}
156166
}

src/Cake.Issues.GitRepository/IssueBuilderExtensions.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,27 @@ internal static class IssueBuilderExtensions
1212
/// </summary>
1313
/// <param name="issueBuilder">Issue builder on which the properties should be set.</param>
1414
/// <param name="ruleDescription">Rule metadata.</param>
15+
/// <param name="issueProviderVersion">Version of the issue provider.</param>
1516
/// <returns>Issue Builder instance.</returns>
16-
public static IssueBuilder OfRule(this IssueBuilder issueBuilder, BaseGitRepositoryIssuesRuleDescription ruleDescription)
17+
public static IssueBuilder OfRule(
18+
this IssueBuilder issueBuilder,
19+
BaseGitRepositoryIssuesRuleDescription ruleDescription,
20+
string issueProviderVersion)
1721
{
1822
issueBuilder.NotNull();
1923
ruleDescription.NotNull();
2024

25+
if (string.IsNullOrWhiteSpace(issueProviderVersion))
26+
{
27+
issueProviderVersion = "latest";
28+
}
29+
2130
return
2231
issueBuilder
2332
.OfRule(
2433
ruleDescription.RuleId,
2534
ruleDescription.RuleName,
26-
new Uri($"https://cakeissues.net/docs/issue-providers/gitrepository/rules/{ruleDescription.RuleId}"))
35+
new Uri($"https://cakeissues.net/{issueProviderVersion}/documentation/issue-providers/gitrepository/rules/{ruleDescription.RuleId}"))
2736
.WithPriority(ruleDescription.Priority);
2837
}
2938
}

0 commit comments

Comments
 (0)