diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/InputLibraryVisitorTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/InputLibraryVisitorTests.cs index 5c479f3ca2d..c7260db59b5 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/InputLibraryVisitorTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/InputLibraryVisitorTests.cs @@ -23,10 +23,10 @@ public class InputLibraryVisitorTests public void Setup() { _mockInputLibrary = new Mock(); + _mockInputLibrary.Setup(l => l.InputNamespace).Returns(InputFactory.Namespace("Sample")); _mockPlugin = MockHelpers.LoadMockPlugin( createInputLibrary: () => _mockInputLibrary.Object, - createClientCore: inputClient => new ClientProvider(inputClient), - packageName: "Sample"); + createClientCore: inputClient => new ClientProvider(inputClient)); _mockVisitor = new Mock { CallBase = true }; } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestHelpers/MockHelpers.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestHelpers/MockHelpers.cs index 1a2a3b396d5..b4796ab9054 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestHelpers/MockHelpers.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/TestHelpers/MockHelpers.cs @@ -58,8 +58,7 @@ public static Mock LoadMockPlugin( ClientResponseApi? clientResponseApi = null, ClientPipelineApi? clientPipelineApi = null, HttpMessageApi? httpMessageApi = null, - Func? auth = null, - string? packageName = null) + Func? auth = null) { IReadOnlyList inputNsApiVersions = apiVersions?.Invoke() ?? []; IReadOnlyList inputNsEnums = inputEnums?.Invoke() ?? []; @@ -104,11 +103,6 @@ public static Mock LoadMockPlugin( mockTypeFactory.Protected().Setup("CreateClientCore", ItExpr.IsAny()).Returns(createClientCore); } - if (packageName is not null) - { - mockTypeFactory.Setup(p => p.PackageName).Returns(packageName); - } - // initialize the mock singleton instance of the plugin var codeModelInstance = typeof(CodeModelPlugin).GetField("_instance", BindingFlags.Static | BindingFlags.NonPublic); var clientModelInstance = typeof(ScmCodeModelPlugin).GetField("_instance", BindingFlags.Static | BindingFlags.NonPublic); diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/EnumProvider.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/EnumProvider.cs index 46bbac39d00..4912c139665 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/EnumProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/EnumProvider.cs @@ -57,7 +57,7 @@ protected override TypeProvider[] BuildSerializationProviders() } protected override string BuildNamespace() => string.IsNullOrEmpty(_inputType.Namespace) ? // TODO - this should not be necessary as every enum should have a namespace https://github.com/Azure/typespec-azure/issues/2210 - CodeModelPlugin.Instance.TypeFactory.PackageName : // we default to this model namespace when the namespace is empty + CodeModelPlugin.Instance.TypeFactory.PrimaryNamespace : // we default to this model namespace when the namespace is empty CodeModelPlugin.Instance.TypeFactory.GetCleanNameSpace(_inputType.Namespace); protected override bool GetIsEnum() => true; diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/ModelProvider.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/ModelProvider.cs index fd987cbd05d..fb7bd0731a3 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/ModelProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/ModelProvider.cs @@ -123,7 +123,7 @@ public ModelProvider? BaseModelProvider protected override string BuildNamespace() => string.IsNullOrEmpty(_inputModel.Namespace) ? // TODO remove null check once https://github.com/Azure/typespec-azure/issues/2209 is fixed. - CodeModelPlugin.Instance.TypeFactory.PackageName : + CodeModelPlugin.Instance.TypeFactory.PrimaryNamespace : CodeModelPlugin.Instance.TypeFactory.GetCleanNameSpace(_inputModel.Namespace); protected override CSharpType? GetBaseType() diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/TypeProvider.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/TypeProvider.cs index ba851bd52b8..36755a8efd0 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/TypeProvider.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/Providers/TypeProvider.cs @@ -125,7 +125,7 @@ this is EnumProvider || protected virtual bool GetIsEnum() => false; public bool IsEnum => GetIsEnum(); - protected virtual string BuildNamespace() => CodeModelPlugin.Instance.TypeFactory.PackageName; + protected virtual string BuildNamespace() => CodeModelPlugin.Instance.TypeFactory.PrimaryNamespace; private TypeSignatureModifiers? _declarationModifiers; diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/SourceInput/SourceInputModel.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/SourceInput/SourceInputModel.cs index 8824c13b0b6..ad1c73608ca 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/SourceInput/SourceInputModel.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/SourceInput/SourceInputModel.cs @@ -97,7 +97,7 @@ private bool TryGetName(ISymbol symbol, [NotNullWhen(true)] out string? name) private async Task LoadBaselineContract() { string fullPath; - string projectFilePath = Path.GetFullPath(Path.Combine(CodeModelPlugin.Instance.Configuration.ProjectDirectory, $"{CodeModelPlugin.Instance.TypeFactory.PackageName}.csproj")); + string projectFilePath = Path.GetFullPath(Path.Combine(CodeModelPlugin.Instance.Configuration.ProjectDirectory, $"{CodeModelPlugin.Instance.TypeFactory.PrimaryNamespace}.csproj")); if (!File.Exists(projectFilePath)) return null; @@ -106,15 +106,15 @@ private bool TryGetName(ISymbol symbol, [NotNullWhen(true)] out string? name) if (baselineVersion is not null) { var nugetGlobalPackageFolder = SettingsUtility.GetGlobalPackagesFolder(new NullSettings()); - var nugetFolder = Path.Combine(nugetGlobalPackageFolder, CodeModelPlugin.Instance.TypeFactory.PackageName.ToLowerInvariant(), baselineVersion, "lib", "netstandard2.0"); - fullPath = Path.Combine(nugetFolder, $"{CodeModelPlugin.Instance.TypeFactory.PackageName}.dll"); + var nugetFolder = Path.Combine(nugetGlobalPackageFolder, CodeModelPlugin.Instance.TypeFactory.PrimaryNamespace.ToLowerInvariant(), baselineVersion, "lib", "netstandard2.0"); + fullPath = Path.Combine(nugetFolder, $"{CodeModelPlugin.Instance.TypeFactory.PrimaryNamespace}.dll"); if (File.Exists(fullPath)) { - return await GeneratedCodeWorkspace.CreatePreviousContractFromDll(Path.Combine(nugetFolder, $"{CodeModelPlugin.Instance.TypeFactory.PackageName}.xml"), fullPath); + return await GeneratedCodeWorkspace.CreatePreviousContractFromDll(Path.Combine(nugetFolder, $"{CodeModelPlugin.Instance.TypeFactory.PrimaryNamespace}.xml"), fullPath); } else { - throw new InvalidOperationException($"Can't find Baseline contract assembly ({CodeModelPlugin.Instance.TypeFactory.PackageName}@{baselineVersion}) from Nuget Global Package Folder at {fullPath}. " + + throw new InvalidOperationException($"Can't find Baseline contract assembly ({CodeModelPlugin.Instance.TypeFactory.PrimaryNamespace}@{baselineVersion}) from Nuget Global Package Folder at {fullPath}. " + $"Please make sure the baseline nuget package has been installed properly"); } } diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/TypeFactory.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/TypeFactory.cs index ca0b9fed2d9..84b7ddf055c 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/TypeFactory.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/src/TypeFactory.cs @@ -327,8 +327,8 @@ public EnumCacheKey(InputEnumType enumType, TypeProvider? declaringType) } } - private string? _packageName; - public virtual string PackageName => _packageName ??= GetCleanNameSpace(CodeModelPlugin.Instance.InputLibrary.InputNamespace.Name); + private string? _primaryNamespace; + public string PrimaryNamespace => _primaryNamespace ??= GetCleanNameSpace(CodeModelPlugin.Instance.InputLibrary.InputNamespace.Name); public string GetCleanNameSpace(string clientNamespace) { diff --git a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/ConfigurationTests.cs b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/ConfigurationTests.cs index cd36b3b4766..e78cfacde27 100644 --- a/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/ConfigurationTests.cs +++ b/packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator/test/ConfigurationTests.cs @@ -103,6 +103,9 @@ public void TestParseConfig_AdditionalConfigOptions() bool unknownBoolValue = additionalConfigOptions["unknown-bool-property"].ToObjectFromJson(); Assert.AreEqual(true, unknownBoolValue); + + Assert.AreEqual("libraryName", CodeModelPlugin.Instance.Configuration.PackageName); + Assert.AreEqual("Sample", CodeModelPlugin.Instance.TypeFactory.PrimaryNamespace); } [Test]