Skip to content

Commit 737f712

Browse files
Issue #1665: added null validation (#1666)
Co-authored-by: James Newton-King <[email protected]>
1 parent bfe312a commit 737f712

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

src/dotnet-grpc/Commands/CommandBase.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,13 @@ public void AddProtobufReference(Services services, string additionalImportDirs,
174174
}
175175

176176
var normalizedFile = NormalizePath(file);
177-
var normalizedAdditionalImportDirs = string.Join(';', additionalImportDirs.Split(';', StringSplitOptions.RemoveEmptyEntries).Select(NormalizePath));
177+
178+
var normalizedAdditionalImportDirs = string.Empty;
179+
180+
if (!string.IsNullOrWhiteSpace(additionalImportDirs))
181+
{
182+
normalizedAdditionalImportDirs = string.Join(';', additionalImportDirs.Split(';', StringSplitOptions.RemoveEmptyEntries).Select(NormalizePath));
183+
}
178184

179185
if (!Project.GetItems(ProtobufElement).Any(i => string.Equals(NormalizePath(i.UnevaluatedInclude), normalizedFile, StringComparison.OrdinalIgnoreCase)))
180186
{

test/dotnet-grpc.Tests/CommandBaseTests.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,32 @@ public void AddProtobufReference_AdditionalImportDirs(string additionalImportDir
267267
Assert.False(protoRef.HasMetadata(CommandBase.LinkElement));
268268
}
269269

270+
271+
[Test]
272+
public void AddProtobufReference_Without_AdditionalImportDirs()
273+
{
274+
// Arrange
275+
var commandBase = new CommandBase(
276+
new TestConsole(),
277+
CreateIsolatedProject(Path.Combine(Directory.GetCurrentDirectory(), "TestAssets", "EmptyProject", "test.csproj")));
278+
279+
const string proto = "Proto/a.proto";
280+
281+
// Act
282+
commandBase.AddProtobufReference(Services.Server, null!, Access.Internal, proto, SourceUrl);
283+
commandBase.Project.ReevaluateIfNecessary();
284+
285+
// Assert
286+
var protoRefs = commandBase.Project.GetItems(CommandBase.ProtobufElement);
287+
Assert.AreEqual(1, protoRefs.Count);
288+
var protoRef = protoRefs.Single();
289+
Assert.AreEqual(proto.Replace('/', '\\'), protoRef.UnevaluatedInclude);
290+
Assert.AreEqual("Server", protoRef.GetMetadataValue(CommandBase.GrpcServicesElement));
291+
Assert.AreEqual("Internal", protoRef.GetMetadataValue(CommandBase.AccessElement));
292+
Assert.AreEqual(SourceUrl, protoRef.GetMetadataValue(CommandBase.SourceUrlElement));
293+
Assert.False(protoRef.HasMetadata(CommandBase.LinkElement));
294+
}
295+
270296
static object[] DoesNotOverwriteCases()
271297
{
272298
var cases = new List<object>

0 commit comments

Comments
 (0)