Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/main/src
diff options
context:
space:
mode:
authorMatt Ward <matt.ward@xamarin.com>2017-07-05 16:35:39 +0300
committerMatt Ward <matt.ward@xamarin.com>2017-07-05 16:35:39 +0300
commit47bf2396c2a0b564f02b6393da4379c44f1b39e8 (patch)
tree29c0c76598df588271486d4a3c6587e7058be219 /main/src
parent3789c4f826874150d04af34d4fc20b51daa246d8 (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')
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeNuGetSettings.cs30
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageSpecCreatorTests.cs93
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageSpecCreator.cs16
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")
+ );
+ }
}
}