Skip to content

Commit 866812d

Browse files
Fix to namespace visitor where types were moved out of generated dir (Azure#51999)
1 parent 4d89843 commit 866812d

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

eng/packages/http-client-csharp/generator/Azure.Generator/src/Visitors/NamespaceVisitor.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ private static void UpdateModelsNamespace(TypeProvider type)
7373
// here to make diffs easier to review while migrating. Calculate the fileName as it won't always match the Name
7474
// property, e.g. for serialization providers.
7575
// https://github.com/Azure/azure-sdk-for-net/issues/50286
76-
if (type.RelativeFilePath.Contains("Models"))
76+
var separator = Path.DirectorySeparatorChar;
77+
if (type.RelativeFilePath.Contains($"Generated{separator}Models{separator}"))
7778
{
7879
var fileName = Path.GetRelativePath(Path.Combine("src", "Generated", "Models"),
7980
type.RelativeFilePath);

eng/packages/http-client-csharp/generator/Azure.Generator/test/Visitors/NamespaceVisitorTests.cs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT License.
33

4+
using System.IO;
45
using Microsoft.TypeSpec.Generator.Input;
56
using Microsoft.TypeSpec.Generator.Providers;
67
using NUnit.Framework;
@@ -38,6 +39,38 @@ public void DoesNotUseModelsNamespaceIfConfigSetToFalse()
3839
Assert.AreEqual("Samples", updatedModel!.Type.Namespace);
3940
}
4041

42+
[Test]
43+
public void MovesModelsOutOfModelsDirectory()
44+
{
45+
MockHelpers.LoadMockGenerator(configurationJson: "{ \"package-name\": \"TestLibrary\", \"model-namespace\": false }");
46+
var visitor = new TestNamespaceVisitor();
47+
var inputType = InputFactory.Model("TestModel", "Samples");
48+
var model = new ModelProvider(inputType);
49+
var updatedModel = visitor.InvokePreVisitModel(inputType, model);
50+
51+
Assert.IsNotNull(updatedModel);
52+
Assert.AreEqual(
53+
$"src{Path.DirectorySeparatorChar}Generated{Path.DirectorySeparatorChar}{updatedModel!.Name}.cs",
54+
updatedModel.RelativeFilePath);
55+
}
56+
57+
[Test]
58+
public void DoesNotMoveModelIfNotInModelsDirectory()
59+
{
60+
MockHelpers.LoadMockGenerator(configurationJson: "{ \"package-name\": \"TestLibrary\", \"model-namespace\": false }");
61+
var visitor = new TestNamespaceVisitor();
62+
var inputType = InputFactory.Model("TestModels", "Samples");
63+
var model = new ModelProvider(inputType);
64+
65+
model.Update(relativeFilePath: $"src{Path.DirectorySeparatorChar}Generated{Path.DirectorySeparatorChar}{model.Name}.cs");
66+
var updatedModel = visitor.InvokePreVisitModel(inputType, model);
67+
68+
Assert.IsNotNull(updatedModel);
69+
Assert.AreEqual(
70+
$"src{Path.DirectorySeparatorChar}Generated{Path.DirectorySeparatorChar}{updatedModel!.Name}.cs",
71+
updatedModel.RelativeFilePath);
72+
}
73+
4174
[Test]
4275
public void DoesNotChangeNamespaceOfCustomizedModel()
4376
{

0 commit comments

Comments
 (0)