diff options
author | Matt Ward <matt.ward@xamarin.com> | 2017-07-05 16:35:39 +0300 |
---|---|---|
committer | Matt Ward <matt.ward@xamarin.com> | 2017-07-05 16:35:39 +0300 |
commit | 47bf2396c2a0b564f02b6393da4379c44f1b39e8 (patch) | |
tree | 29c0c76598df588271486d4a3c6587e7058be219 /main/src | |
parent | 3789c4f826874150d04af34d4fc20b51daa246d8 (diff) |
[NuGet] Add extra information to project.assets.json
The generated project.assets.json file now includes the following
if they exist:
fallbackFolders
configFilePaths
sources
warningProperties
The above are added by .NET Core 2.0 into the project.assets.json
file when dotnet restore is run. So now the NuGet addin does the
same.
Diffstat (limited to 'main/src')
3 files changed, 122 insertions, 17 deletions
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetSettings.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetSettings.cs index 725ea709ef..b95f9535d1 100644 --- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetSettings.cs +++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetSettings.cs @@ -32,23 +32,13 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers { class FakeNuGetSettings : ISettings { - public string FileName { - get { - throw new NotImplementedException (); - } - } + public string FileName { get; set; } = "NuGet.Config"; public IEnumerable<ISettings> Priority { - get { - throw new NotImplementedException (); - } + get { yield return this; } } - public string Root { - get { - throw new NotImplementedException (); - } - } + public string Root { get; set; } = string.Empty; public event EventHandler SettingsChanged; @@ -69,12 +59,17 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers public IList<KeyValuePair<string, string>> GetNestedValues (string section, string subSection) { - throw new NotImplementedException (); + return new List<KeyValuePair<string, string>> (); } + public Dictionary<string, List<SettingValue>> SettingValues = new Dictionary<string, List<SettingValue>> (); + public IList<SettingValue> GetSettingValues (string section, bool isPath = false) { - throw new NotImplementedException (); + List<SettingValue> settings = null; + if (SettingValues.TryGetValue (section, out settings)) + return settings; + return new List<SettingValue> (); } public Dictionary<string, string> Values = new Dictionary<string, string> (); @@ -97,6 +92,11 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers Values [GetKey (section, key)] = value; } + public void SetValues (string section, List<SettingValue> values) + { + SettingValues [section] = values; + } + public void SetValues (string section, IReadOnlyList<SettingValue> values) { throw new NotImplementedException (); diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageSpecCreatorTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageSpecCreatorTests.cs index bd2e4c9fe1..e3a178a874 100644 --- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageSpecCreatorTests.cs +++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageSpecCreatorTests.cs @@ -24,6 +24,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +using System.Collections.Generic; using System.Linq; using MonoDevelop.Core.Assemblies; using MonoDevelop.PackageManagement.Tests.Helpers; @@ -99,6 +100,12 @@ namespace MonoDevelop.PackageManagement.Tests settings.SetValue (SettingsUtility.ConfigSection, "globalPackagesFolder", path); } + void AddFallbackFolder (params string[] folders) + { + var values = folders.Select (folder => new SettingValue (folder, folder, false)).ToList (); + settings.SetValues (ConfigurationConstants.FallbackPackageFolders, values); + } + [Test] public void CreatePackageSpec_NewProject_BaseIntermediatePathUsedForProjectAssetsJsonFile () { @@ -308,7 +315,7 @@ namespace MonoDevelop.PackageManagement.Tests } [Test] - public void CreatePackageSpec_NewProject_RestoreMetadataHasPackagesPathTakenFromSettings () + public void CreatePackageSpec_PackagesPath_RestoreMetadataHasPackagesPathTakenFromSettings () { CreateProject ("MyProject", @"d:\projects\MyProject\MyProject.csproj"); project.BaseIntermediateOutputPath = @"d:\projects\MyProject\obj".ToNativePath (); @@ -320,5 +327,89 @@ namespace MonoDevelop.PackageManagement.Tests Assert.AreEqual (packagesPath, spec.RestoreMetadata.PackagesPath); } + + [Test] + public void CreatePackageSpec_ConfigFilePaths_RestoreMetadataHasConfigFilesTakenFromSettings () + { + CreateProject ("MyProject", @"d:\projects\MyProject\MyProject.csproj"); + project.BaseIntermediateOutputPath = @"d:\projects\MyProject\obj".ToNativePath (); + AddTargetFramework ("netcoreapp1.0"); + string configFilePath = @"c:\users\test\.nuget\NuGet\NuGet.Config".ToNativePath (); + settings.FileName = configFilePath; + + CreatePackageSpec (); + + Assert.AreEqual (1, spec.RestoreMetadata.ConfigFilePaths.Count); + Assert.AreEqual (configFilePath, spec.RestoreMetadata.ConfigFilePaths[0]); + } + + [Test] + public void CreatePackageSpec_PackageSources_RestoreMetadataHasSourcesTakenFromSettings () + { + CreateProject ("MyProject", @"d:\projects\MyProject\MyProject.csproj"); + project.BaseIntermediateOutputPath = @"d:\projects\MyProject\obj".ToNativePath (); + AddTargetFramework ("netcoreapp1.0"); + var packageSource = new PackageSource ("https://nuget.org", "NuGet source"); + var sources = new List<SettingValue> (); + sources.Add (new SettingValue (packageSource.Name, packageSource.Source, false)); + settings.SetValues (ConfigurationConstants.PackageSources, sources); + + CreatePackageSpec (); + + Assert.AreEqual (1, spec.RestoreMetadata.Sources.Count); + Assert.AreEqual (packageSource.Name, spec.RestoreMetadata.Sources[0].Name); + Assert.AreEqual (packageSource.Source, spec.RestoreMetadata.Sources[0].Source); + } + + [Test] + public void CreatePackageSpec_FallbackFolders_RestoreMetadataHasFallbackFoldersTakenFromSettings () + { + CreateProject ("MyProject", @"d:\projects\MyProject\MyProject.csproj"); + project.BaseIntermediateOutputPath = @"d:\projects\MyProject\obj".ToNativePath (); + AddTargetFramework ("netcoreapp1.0"); + string folderPath = @"c:\users\test\packages".ToNativePath (); + AddFallbackFolder (folderPath); + + CreatePackageSpec (); + + Assert.AreEqual (1, spec.RestoreMetadata.FallbackFolders.Count); + Assert.AreEqual (folderPath, spec.RestoreMetadata.FallbackFolders[0]); + } + + [Test] + public void CreatePackageSpec_ProjectWideWarningProperties_RestoreMetadataHasProjectWideWarningProperties () + { + CreateProject ("MyProject", @"d:\projects\MyProject\MyProject.csproj"); + project.BaseIntermediateOutputPath = @"d:\projects\MyProject\obj".ToNativePath (); + AddTargetFramework ("netcoreapp1.0"); + + project.AddProperty ("TreatWarningsAsErrors", bool.TrueString); + project.AddProperty ("WarningsAsErrors", "NU1801"); + project.AddProperty ("NoWarn", "NU1701"); + + CreatePackageSpec (); + + Assert.IsTrue (spec.RestoreMetadata.ProjectWideWarningProperties.AllWarningsAsErrors); + Assert.IsTrue (spec.RestoreMetadata.ProjectWideWarningProperties.WarningsAsErrors.Contains (NuGet.Common.NuGetLogCode.NU1801)); + Assert.IsTrue (spec.RestoreMetadata.ProjectWideWarningProperties.NoWarn.Contains (NuGet.Common.NuGetLogCode.NU1701)); + } + + [Test] + public void CreatePackageSpec_TreatWarningsAsErrorsIsFalse_RestoreMetadataHasTreatWarningsAsErrorsSetToFalse () + { + CreateProject ("MyProject", @"d:\projects\MyProject\MyProject.csproj"); + project.BaseIntermediateOutputPath = @"d:\projects\MyProject\obj".ToNativePath (); + AddTargetFramework ("netcoreapp1.0"); + + project.AddProperty ("TreatWarningsAsErrors", bool.FalseString); + project.AddProperty ("WarningsAsErrors", "NU1801"); + project.AddProperty ("NoWarn", "NU1701"); + + CreatePackageSpec (); + + Assert.IsFalse (spec.RestoreMetadata.ProjectWideWarningProperties.AllWarningsAsErrors); + Assert.IsTrue (spec.RestoreMetadata.ProjectWideWarningProperties.WarningsAsErrors.Contains (NuGet.Common.NuGetLogCode.NU1801)); + Assert.IsTrue (spec.RestoreMetadata.ProjectWideWarningProperties.NoWarn.Contains (NuGet.Common.NuGetLogCode.NU1701)); + } } } diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageSpecCreator.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageSpecCreator.cs index 2b23939bee..cd236ff54a 100644 --- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageSpecCreator.cs +++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageSpecCreator.cs @@ -20,6 +20,7 @@ // limitations under the License. // // Based on parts of src/NuGet.Core/NuGet.Commands/RestoreCommand/Utility/MSBuildRestoreUtility.cs +// and src/NuGet.Clients/NuGet.PackageManagement.VisualStudio/Projects/LegacyPackageReferenceProject.cs using System; using System.Collections.Generic; @@ -95,13 +96,17 @@ namespace MonoDevelop.PackageManagement static ProjectRestoreMetadata CreateRestoreMetadata (PackageSpec packageSpec, IDotNetProject project, ISettings settings) { return new ProjectRestoreMetadata { + ConfigFilePaths = SettingsUtility.GetConfigFilePaths (settings).ToList (), + FallbackFolders = SettingsUtility.GetFallbackPackageFolders (settings).ToList (), PackagesPath = SettingsUtility.GetGlobalPackagesFolder (settings), ProjectStyle = ProjectStyle.PackageReference, ProjectPath = project.FileName, ProjectName = packageSpec.Name, ProjectUniqueName = project.FileName, + ProjectWideWarningProperties = GetWarningProperties (project), OutputPath = project.BaseIntermediateOutputPath, - OriginalTargetFrameworks = GetOriginalTargetFrameworks (project).ToList () + OriginalTargetFrameworks = GetOriginalTargetFrameworks (project).ToList (), + Sources = SettingsUtility.GetEnabledSources (settings).ToList () }; } @@ -367,5 +372,14 @@ namespace MonoDevelop.PackageManagement return new RuntimeGraph (runtimes, supports); } + + static WarningProperties GetWarningProperties (IDotNetProject project) + { + return MSBuildRestoreUtility.GetWarningProperties ( + project.EvaluatedProperties.GetValue ("TreatWarningsAsErrors"), + project.EvaluatedProperties.GetValue ("WarningsAsErrors"), + project.EvaluatedProperties.GetValue ("NoWarn") + ); + } } } |