mirror of
https://github.com/aphrody-labs/NuGet.Client.git
synced 2026-10-14 21:39:05 +00:00
956 lines
42 KiB
C#
956 lines
42 KiB
C#
// Copyright (c) .NET Foundation. All rights reserved.
|
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Text;
|
|
using FluentAssertions;
|
|
using Microsoft.Internal.NuGet.Testing.SignedPackages;
|
|
using NuGet.Common;
|
|
using NuGet.Frameworks;
|
|
using NuGet.LibraryModel;
|
|
using NuGet.Versioning;
|
|
using Xunit;
|
|
|
|
namespace NuGet.ProjectModel.Test
|
|
{
|
|
public class LockFileTests
|
|
{
|
|
[Fact]
|
|
public void LockFile_ConsidersEquivalentPackageSpec()
|
|
{
|
|
// Arrange
|
|
Func<LockFile> getLockFile = () =>
|
|
{
|
|
var lockFile = new LockFile
|
|
{
|
|
Version = 2,
|
|
|
|
PackageSpec = new PackageSpec(new[]
|
|
{
|
|
new TargetFrameworkInformation
|
|
{
|
|
FrameworkName = FrameworkConstants.CommonFrameworks.NetCoreApp10,
|
|
Dependencies = [
|
|
new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NETCore.App",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("1.0.1"),
|
|
originalString: "1.0.1"),
|
|
LibraryDependencyTarget.Package)
|
|
},
|
|
new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NET.Sdk",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("1.0.0-alpha-20161104-2"),
|
|
originalString: "1.0.0-alpha-20161104-2"),
|
|
LibraryDependencyTarget.Package),
|
|
SuppressParent = LibraryIncludeFlags.All
|
|
}
|
|
]
|
|
}
|
|
})
|
|
{
|
|
Version = new NuGetVersion("1.0.0"),
|
|
RestoreMetadata = new ProjectRestoreMetadata
|
|
{
|
|
ProjectUniqueName = @"X:\ProjectPath\ProjectPath.csproj",
|
|
ProjectName = "ProjectPath",
|
|
ProjectPath = @"X:\ProjectPath\ProjectPath.csproj",
|
|
OutputPath = @"X:\ProjectPath\obj\",
|
|
ProjectStyle = ProjectStyle.PackageReference,
|
|
OriginalTargetFrameworks = new[] { "netcoreapp1.0" },
|
|
TargetFrameworks = new List<ProjectRestoreMetadataFrameworkInfo>
|
|
{
|
|
new ProjectRestoreMetadataFrameworkInfo(NuGetFramework.Parse("netcoreapp1.0"))
|
|
}
|
|
}
|
|
}
|
|
};
|
|
return lockFile;
|
|
};
|
|
|
|
var self = getLockFile();
|
|
var other = getLockFile();
|
|
|
|
// Act & Assert
|
|
Assert.NotSame(self, other);
|
|
Assert.Equal(self, other);
|
|
}
|
|
|
|
[Fact]
|
|
public void LockFile_ConsidersEquivalentLockFilesWithEmptyLogsAsSame()
|
|
{
|
|
// Arrange
|
|
Func<LockFile> getLockFile = () =>
|
|
{
|
|
var lockFile = new LockFile
|
|
{
|
|
Version = 3,
|
|
|
|
PackageSpec = new PackageSpec(new[]
|
|
{
|
|
new TargetFrameworkInformation
|
|
{
|
|
FrameworkName = FrameworkConstants.CommonFrameworks.NetCoreApp10,
|
|
Dependencies = [
|
|
new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NETCore.App",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("1.0.1"),
|
|
originalString: "1.0.1"),
|
|
LibraryDependencyTarget.Package)
|
|
},
|
|
new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NET.Sdk",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("1.0.0-alpha-20161104-2"),
|
|
originalString: "1.0.0-alpha-20161104-2"),
|
|
LibraryDependencyTarget.Package),
|
|
SuppressParent = LibraryIncludeFlags.All
|
|
}
|
|
]
|
|
}
|
|
})
|
|
{
|
|
Version = new NuGetVersion("1.0.0"),
|
|
RestoreMetadata = new ProjectRestoreMetadata
|
|
{
|
|
ProjectUniqueName = @"X:\ProjectPath\ProjectPath.csproj",
|
|
ProjectName = "ProjectPath",
|
|
ProjectPath = @"X:\ProjectPath\ProjectPath.csproj",
|
|
OutputPath = @"X:\ProjectPath\obj\",
|
|
ProjectStyle = ProjectStyle.PackageReference,
|
|
OriginalTargetFrameworks = new[] { "netcoreapp1.0" },
|
|
TargetFrameworks = new List<ProjectRestoreMetadataFrameworkInfo>
|
|
{
|
|
new ProjectRestoreMetadataFrameworkInfo(NuGetFramework.Parse("netcoreapp1.0"))
|
|
}
|
|
}
|
|
}
|
|
};
|
|
return lockFile;
|
|
};
|
|
|
|
var self = getLockFile();
|
|
var other = getLockFile();
|
|
|
|
self.LogMessages = new List<IAssetsLogMessage>();
|
|
|
|
other.LogMessages = new List<IAssetsLogMessage>();
|
|
|
|
// Act & Assert
|
|
Assert.NotSame(self, other);
|
|
Assert.Equal(self, other);
|
|
}
|
|
|
|
[Fact]
|
|
public void LockFile_ConsidersEquivalentLockFilesWithMinimalLogsAsSame()
|
|
{
|
|
// Arrange
|
|
Func<LockFile> getLockFile = () =>
|
|
{
|
|
var lockFile = new LockFile
|
|
{
|
|
Version = 3,
|
|
|
|
PackageSpec = new PackageSpec(new[]
|
|
{
|
|
new TargetFrameworkInformation
|
|
{
|
|
FrameworkName = FrameworkConstants.CommonFrameworks.NetCoreApp10,
|
|
Dependencies = [
|
|
new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NETCore.App",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("1.0.1"),
|
|
originalString: "1.0.1"),
|
|
LibraryDependencyTarget.Package)
|
|
},
|
|
new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NET.Sdk",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("1.0.0-alpha-20161104-2"),
|
|
originalString: "1.0.0-alpha-20161104-2"),
|
|
LibraryDependencyTarget.Package),
|
|
SuppressParent = LibraryIncludeFlags.All
|
|
}
|
|
]
|
|
}
|
|
})
|
|
{
|
|
Version = new NuGetVersion("1.0.0"),
|
|
RestoreMetadata = new ProjectRestoreMetadata
|
|
{
|
|
ProjectUniqueName = @"X:\ProjectPath\ProjectPath.csproj",
|
|
ProjectName = "ProjectPath",
|
|
ProjectPath = @"X:\ProjectPath\ProjectPath.csproj",
|
|
OutputPath = @"X:\ProjectPath\obj\",
|
|
ProjectStyle = ProjectStyle.PackageReference,
|
|
OriginalTargetFrameworks = new[] { "netcoreapp1.0" },
|
|
TargetFrameworks = new List<ProjectRestoreMetadataFrameworkInfo>
|
|
{
|
|
new ProjectRestoreMetadataFrameworkInfo(NuGetFramework.Parse("netcoreapp1.0"))
|
|
}
|
|
}
|
|
}
|
|
};
|
|
return lockFile;
|
|
};
|
|
|
|
var self = getLockFile();
|
|
var other = getLockFile();
|
|
|
|
self.LogMessages = new List<IAssetsLogMessage>
|
|
{
|
|
new AssetsLogMessage(LogLevel.Error, NuGetLogCode.NU1000, "test log message"),
|
|
new AssetsLogMessage(LogLevel.Warning, NuGetLogCode.NU1500, "test warning message")
|
|
{
|
|
WarningLevel = WarningLevel.Severe
|
|
},
|
|
};
|
|
|
|
other.LogMessages = new List<IAssetsLogMessage>
|
|
{
|
|
new AssetsLogMessage(LogLevel.Error, NuGetLogCode.NU1000, "test log message"),
|
|
new AssetsLogMessage(LogLevel.Warning, NuGetLogCode.NU1500, "test warning message")
|
|
{
|
|
WarningLevel = WarningLevel.Severe
|
|
},
|
|
};
|
|
|
|
// Act & Assert
|
|
Assert.NotSame(self, other);
|
|
Assert.Equal(self, other);
|
|
}
|
|
|
|
[Fact]
|
|
public void LockFile_ConsidersEquivalentLockFilesWithFullLogsAsSame()
|
|
{
|
|
|
|
// Arrange
|
|
Func<LockFile> getLockFile = () =>
|
|
{
|
|
var lockFile = new LockFile
|
|
{
|
|
Version = 3,
|
|
|
|
PackageSpec = new PackageSpec(new[]
|
|
{
|
|
new TargetFrameworkInformation
|
|
{
|
|
FrameworkName = FrameworkConstants.CommonFrameworks.NetCoreApp10,
|
|
Dependencies = [
|
|
new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NETCore.App",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("1.0.1"),
|
|
originalString: "1.0.1"),
|
|
LibraryDependencyTarget.Package)
|
|
},
|
|
new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NET.Sdk",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("1.0.0-alpha-20161104-2"),
|
|
originalString: "1.0.0-alpha-20161104-2"),
|
|
LibraryDependencyTarget.Package),
|
|
SuppressParent = LibraryIncludeFlags.All
|
|
}
|
|
]
|
|
}
|
|
})
|
|
{
|
|
Version = new NuGetVersion("1.0.0"),
|
|
RestoreMetadata = new ProjectRestoreMetadata
|
|
{
|
|
ProjectUniqueName = @"X:\ProjectPath\ProjectPath.csproj",
|
|
ProjectName = "ProjectPath",
|
|
ProjectPath = @"X:\ProjectPath\ProjectPath.csproj",
|
|
OutputPath = @"X:\ProjectPath\obj\",
|
|
ProjectStyle = ProjectStyle.PackageReference,
|
|
OriginalTargetFrameworks = new[] { "netcoreapp1.0" },
|
|
TargetFrameworks = new List<ProjectRestoreMetadataFrameworkInfo>
|
|
{
|
|
new ProjectRestoreMetadataFrameworkInfo(NuGetFramework.Parse("netcoreapp1.0"))
|
|
}
|
|
}
|
|
}
|
|
};
|
|
return lockFile;
|
|
};
|
|
|
|
var self = getLockFile();
|
|
var other = getLockFile();
|
|
|
|
self.LogMessages = new List<IAssetsLogMessage>
|
|
{
|
|
new AssetsLogMessage(LogLevel.Error, NuGetLogCode.NU1000, "test log message")
|
|
{
|
|
FilePath = @"kung\fu\fighting.targets",
|
|
ProjectPath = @"kung\fu\fighting.csproj",
|
|
TargetGraphs = new List<string>{ "net46", "netcoreapp1.0", "netstandard1.6" },
|
|
StartLineNumber = 11,
|
|
StartColumnNumber = 2,
|
|
EndLineNumber = 11,
|
|
EndColumnNumber = 10,
|
|
LibraryId = "nuget.versioning"
|
|
},
|
|
new AssetsLogMessage(LogLevel.Warning, NuGetLogCode.NU1500, "test warning message")
|
|
{
|
|
FilePath = @"kung\fu\fighting.targets",
|
|
ProjectPath = @"kung\fu\fighting.csproj",
|
|
TargetGraphs = new List<string>{ "net46", "netcoreapp1.0", "netstandard1.6" },
|
|
StartLineNumber = 11,
|
|
StartColumnNumber = 2,
|
|
EndLineNumber = 11,
|
|
EndColumnNumber = 10,
|
|
LibraryId = "nuget.versioning",
|
|
WarningLevel = WarningLevel.Severe
|
|
}
|
|
};
|
|
|
|
other.LogMessages = new List<IAssetsLogMessage>
|
|
{
|
|
new AssetsLogMessage(LogLevel.Error, NuGetLogCode.NU1000, "test log message")
|
|
{
|
|
FilePath = @"kung\fu\fighting.targets",
|
|
ProjectPath = @"kung\fu\fighting.csproj",
|
|
TargetGraphs = new List<string>{ "net46", "netcoreapp1.0", "netstandard1.6" },
|
|
StartLineNumber = 11,
|
|
StartColumnNumber = 2,
|
|
EndLineNumber = 11,
|
|
EndColumnNumber = 10,
|
|
LibraryId = "nuget.versioning"
|
|
},
|
|
new AssetsLogMessage(LogLevel.Warning, NuGetLogCode.NU1500, "test warning message")
|
|
{
|
|
FilePath = @"kung\fu\fighting.targets",
|
|
ProjectPath = @"kung\fu\fighting.csproj",
|
|
TargetGraphs = new List<string>{ "net46", "netcoreapp1.0", "netstandard1.6" },
|
|
StartLineNumber = 11,
|
|
StartColumnNumber = 2,
|
|
EndLineNumber = 11,
|
|
EndColumnNumber = 10,
|
|
LibraryId = "nuget.versioning",
|
|
WarningLevel = WarningLevel.Severe
|
|
}
|
|
};
|
|
|
|
// Act & Assert
|
|
Assert.NotSame(self, other);
|
|
Assert.Equal(self, other);
|
|
}
|
|
|
|
|
|
[Fact]
|
|
public void LockFile_ConsidersLockFilesWithDifferentlyOrderedLogsAsSame()
|
|
{
|
|
|
|
// Arrange
|
|
Func<LockFile> getLockFile = () =>
|
|
{
|
|
var lockFile = new LockFile
|
|
{
|
|
Version = 3,
|
|
|
|
PackageSpec = new PackageSpec(new[]
|
|
{
|
|
new TargetFrameworkInformation
|
|
{
|
|
FrameworkName = FrameworkConstants.CommonFrameworks.NetCoreApp10,
|
|
Dependencies = [
|
|
new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NETCore.App",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("1.0.1"),
|
|
originalString: "1.0.1"),
|
|
LibraryDependencyTarget.Package)
|
|
},
|
|
new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NET.Sdk",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("1.0.0-alpha-20161104-2"),
|
|
originalString: "1.0.0-alpha-20161104-2"),
|
|
LibraryDependencyTarget.Package),
|
|
SuppressParent = LibraryIncludeFlags.All
|
|
}
|
|
]
|
|
}
|
|
})
|
|
{
|
|
Version = new NuGetVersion("1.0.0"),
|
|
RestoreMetadata = new ProjectRestoreMetadata
|
|
{
|
|
ProjectUniqueName = @"X:\ProjectPath\ProjectPath.csproj",
|
|
ProjectName = "ProjectPath",
|
|
ProjectPath = @"X:\ProjectPath\ProjectPath.csproj",
|
|
OutputPath = @"X:\ProjectPath\obj\",
|
|
ProjectStyle = ProjectStyle.PackageReference,
|
|
OriginalTargetFrameworks = new[] { "netcoreapp1.0" },
|
|
TargetFrameworks = new List<ProjectRestoreMetadataFrameworkInfo>
|
|
{
|
|
new ProjectRestoreMetadataFrameworkInfo(NuGetFramework.Parse("netcoreapp1.0"))
|
|
}
|
|
}
|
|
}
|
|
};
|
|
return lockFile;
|
|
};
|
|
|
|
var self = getLockFile();
|
|
var other = getLockFile();
|
|
|
|
self.LogMessages = new List<IAssetsLogMessage>
|
|
{
|
|
new AssetsLogMessage(LogLevel.Warning, NuGetLogCode.NU1500, "test warning message")
|
|
{
|
|
WarningLevel = WarningLevel.Severe
|
|
},
|
|
new AssetsLogMessage(LogLevel.Error, NuGetLogCode.NU1000, "test error message 1"),
|
|
new AssetsLogMessage(LogLevel.Error, NuGetLogCode.NU1000, "test error message 2")
|
|
};
|
|
|
|
other.LogMessages = new List<IAssetsLogMessage>
|
|
{
|
|
new AssetsLogMessage(LogLevel.Error, NuGetLogCode.NU1000, "test error message 2"),
|
|
new AssetsLogMessage(LogLevel.Error, NuGetLogCode.NU1000, "test error message 1"),
|
|
new AssetsLogMessage(LogLevel.Warning, NuGetLogCode.NU1500, "test warning message")
|
|
{
|
|
WarningLevel = WarningLevel.Severe
|
|
}
|
|
};
|
|
|
|
// Act & Assert
|
|
Assert.NotSame(self, other);
|
|
Assert.Equal(self, other);
|
|
}
|
|
|
|
[Fact]
|
|
public void LockFile_ConsidersLockFilesWithLogsWithDifferentMessagesAsDifferent()
|
|
{
|
|
// Arrange
|
|
Func<LockFile> getLockFile = () =>
|
|
{
|
|
var lockFile = new LockFile
|
|
{
|
|
Version = 3,
|
|
|
|
PackageSpec = new PackageSpec(new[]
|
|
{
|
|
new TargetFrameworkInformation
|
|
{
|
|
FrameworkName = FrameworkConstants.CommonFrameworks.NetCoreApp10,
|
|
Dependencies = [
|
|
new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NETCore.App",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("1.0.1"),
|
|
originalString: "1.0.1"),
|
|
LibraryDependencyTarget.Package)
|
|
},
|
|
new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NET.Sdk",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("1.0.0-alpha-20161104-2"),
|
|
originalString: "1.0.0-alpha-20161104-2"),
|
|
LibraryDependencyTarget.Package),
|
|
SuppressParent = LibraryIncludeFlags.All
|
|
}
|
|
]
|
|
}
|
|
})
|
|
{
|
|
Version = new NuGetVersion("1.0.0"),
|
|
RestoreMetadata = new ProjectRestoreMetadata
|
|
{
|
|
ProjectUniqueName = @"X:\ProjectPath\ProjectPath.csproj",
|
|
ProjectName = "ProjectPath",
|
|
ProjectPath = @"X:\ProjectPath\ProjectPath.csproj",
|
|
OutputPath = @"X:\ProjectPath\obj\",
|
|
ProjectStyle = ProjectStyle.PackageReference,
|
|
OriginalTargetFrameworks = new[] { "netcoreapp1.0" },
|
|
TargetFrameworks = new List<ProjectRestoreMetadataFrameworkInfo>
|
|
{
|
|
new ProjectRestoreMetadataFrameworkInfo(NuGetFramework.Parse("netcoreapp1.0"))
|
|
}
|
|
}
|
|
}
|
|
};
|
|
return lockFile;
|
|
};
|
|
|
|
var self = getLockFile();
|
|
var other = getLockFile();
|
|
|
|
self.LogMessages = new List<IAssetsLogMessage>
|
|
{
|
|
new AssetsLogMessage(LogLevel.Error, NuGetLogCode.NU1000, "test error message"),
|
|
new AssetsLogMessage(LogLevel.Warning, NuGetLogCode.NU1500, "test warning message")
|
|
{
|
|
WarningLevel = WarningLevel.Severe
|
|
},
|
|
};
|
|
|
|
other.LogMessages = new List<IAssetsLogMessage>
|
|
{
|
|
new AssetsLogMessage(LogLevel.Error, NuGetLogCode.NU1000, "test different error message"),
|
|
new AssetsLogMessage(LogLevel.Warning, NuGetLogCode.NU1500, "test warning message")
|
|
{
|
|
WarningLevel = WarningLevel.Severe
|
|
},
|
|
};
|
|
|
|
// Act & Assert
|
|
Assert.NotSame(self, other);
|
|
Assert.NotEqual(self, other);
|
|
}
|
|
|
|
[Fact]
|
|
public void LockFile_ConsidersLockFilesWithDifferentErrorsAsDifferent()
|
|
{
|
|
// Arrange
|
|
Func<LockFile> getLockFile = () =>
|
|
{
|
|
var lockFile = new LockFile
|
|
{
|
|
Version = 3,
|
|
|
|
PackageSpec = new PackageSpec(new[]
|
|
{
|
|
new TargetFrameworkInformation
|
|
{
|
|
FrameworkName = FrameworkConstants.CommonFrameworks.NetCoreApp10,
|
|
Dependencies = [
|
|
new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NETCore.App",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("1.0.1"),
|
|
originalString: "1.0.1"),
|
|
LibraryDependencyTarget.Package)
|
|
},
|
|
new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NET.Sdk",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("1.0.0-alpha-20161104-2"),
|
|
originalString: "1.0.0-alpha-20161104-2"),
|
|
LibraryDependencyTarget.Package),
|
|
SuppressParent = LibraryIncludeFlags.All
|
|
}
|
|
]
|
|
}
|
|
})
|
|
{
|
|
Version = new NuGetVersion("1.0.0"),
|
|
RestoreMetadata = new ProjectRestoreMetadata
|
|
{
|
|
ProjectUniqueName = @"X:\ProjectPath\ProjectPath.csproj",
|
|
ProjectName = "ProjectPath",
|
|
ProjectPath = @"X:\ProjectPath\ProjectPath.csproj",
|
|
OutputPath = @"X:\ProjectPath\obj\",
|
|
ProjectStyle = ProjectStyle.PackageReference,
|
|
OriginalTargetFrameworks = new[] { "netcoreapp1.0" },
|
|
TargetFrameworks = new List<ProjectRestoreMetadataFrameworkInfo>
|
|
{
|
|
new ProjectRestoreMetadataFrameworkInfo(NuGetFramework.Parse("netcoreapp1.0"))
|
|
}
|
|
}
|
|
}
|
|
};
|
|
return lockFile;
|
|
};
|
|
|
|
var self = getLockFile();
|
|
var other = getLockFile();
|
|
self.LogMessages = new List<IAssetsLogMessage>
|
|
{
|
|
new AssetsLogMessage(LogLevel.Error, NuGetLogCode.NU1000, "test log message")
|
|
{
|
|
FilePath = @"kung\fu\fighting.targets",
|
|
ProjectPath = @"kung\fu\fighting.csproj",
|
|
TargetGraphs = new List<string>{ "net46" }
|
|
},
|
|
new AssetsLogMessage(LogLevel.Warning, NuGetLogCode.NU1500, "test warning message")
|
|
{
|
|
FilePath = @"kung\fu\fighting.targets",
|
|
ProjectPath = @"kung\fu\fighting.csproj",
|
|
TargetGraphs = new List<string>{ "net46", "netcoreapp1.0", "netstandard1.6" },
|
|
StartLineNumber = 11,
|
|
StartColumnNumber = 2,
|
|
EndLineNumber = 11,
|
|
EndColumnNumber = 10,
|
|
LibraryId = "nuget.versioning",
|
|
WarningLevel = WarningLevel.Severe
|
|
}
|
|
};
|
|
|
|
other.LogMessages = new List<IAssetsLogMessage>
|
|
{
|
|
new AssetsLogMessage(LogLevel.Error, NuGetLogCode.NU1000, "test log message")
|
|
{
|
|
FilePath = @"kung\fu\fighting.targets",
|
|
ProjectPath = @"kung\fu\fighting.csproj",
|
|
TargetGraphs = new List<string>{ "net46", "netcoreapp1.0", "netstandard1.6" },
|
|
StartLineNumber = 11,
|
|
StartColumnNumber = 2,
|
|
EndLineNumber = 11,
|
|
EndColumnNumber = 10,
|
|
LibraryId = "nuget.versioning"
|
|
},
|
|
new AssetsLogMessage(LogLevel.Warning, NuGetLogCode.NU1500, "test warning message")
|
|
{
|
|
FilePath = @"kung\fu\fighting.targets",
|
|
ProjectPath = @"kung\fu\fighting.csproj",
|
|
TargetGraphs = new List<string>{ "net46", "netcoreapp1.0", "netstandard1.6" },
|
|
StartLineNumber = 11,
|
|
StartColumnNumber = 2,
|
|
EndLineNumber = 11,
|
|
EndColumnNumber = 10,
|
|
LibraryId = "nuget.versioning",
|
|
WarningLevel = WarningLevel.Severe
|
|
}
|
|
};
|
|
|
|
// Act & Assert
|
|
Assert.NotSame(self, other);
|
|
Assert.NotEqual(self, other);
|
|
}
|
|
|
|
[Fact]
|
|
public void LockFile_ConsidersLockFilesWithDifferentLogsAsDifferent()
|
|
{
|
|
// Arrange
|
|
Func<LockFile> getLockFile = () =>
|
|
{
|
|
var lockFile = new LockFile
|
|
{
|
|
Version = 3,
|
|
|
|
PackageSpec = new PackageSpec(new[]
|
|
{
|
|
new TargetFrameworkInformation
|
|
{
|
|
FrameworkName = FrameworkConstants.CommonFrameworks.NetCoreApp10,
|
|
Dependencies = [
|
|
new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NETCore.App",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("1.0.1"),
|
|
originalString: "1.0.1"),
|
|
LibraryDependencyTarget.Package)
|
|
},
|
|
new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NET.Sdk",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("1.0.0-alpha-20161104-2"),
|
|
originalString: "1.0.0-alpha-20161104-2"),
|
|
LibraryDependencyTarget.Package),
|
|
SuppressParent = LibraryIncludeFlags.All
|
|
}
|
|
]
|
|
}
|
|
})
|
|
{
|
|
Version = new NuGetVersion("1.0.0"),
|
|
RestoreMetadata = new ProjectRestoreMetadata
|
|
{
|
|
ProjectUniqueName = @"X:\ProjectPath\ProjectPath.csproj",
|
|
ProjectName = "ProjectPath",
|
|
ProjectPath = @"X:\ProjectPath\ProjectPath.csproj",
|
|
OutputPath = @"X:\ProjectPath\obj\",
|
|
ProjectStyle = ProjectStyle.PackageReference,
|
|
OriginalTargetFrameworks = new[] { "netcoreapp1.0" },
|
|
TargetFrameworks = new List<ProjectRestoreMetadataFrameworkInfo>
|
|
{
|
|
new ProjectRestoreMetadataFrameworkInfo(NuGetFramework.Parse("netcoreapp1.0"))
|
|
}
|
|
}
|
|
}
|
|
};
|
|
return lockFile;
|
|
};
|
|
|
|
var self = getLockFile();
|
|
var other = getLockFile();
|
|
self.LogMessages = new List<IAssetsLogMessage>
|
|
{
|
|
new AssetsLogMessage(LogLevel.Error, NuGetLogCode.NU1000, "test log message")
|
|
{
|
|
FilePath = @"kung\fu\fighting.targets",
|
|
ProjectPath = @"kung\fu\fighting.csproj",
|
|
TargetGraphs = new List<string>{ "net46", "netcoreapp1.0", "netstandard1.6" },
|
|
StartLineNumber = 11,
|
|
StartColumnNumber = 2,
|
|
EndLineNumber = 11,
|
|
EndColumnNumber = 10,
|
|
LibraryId = "nuget.versioning"
|
|
},
|
|
new AssetsLogMessage(LogLevel.Warning, NuGetLogCode.NU1500, "test warning message")
|
|
{
|
|
FilePath = @"kung\fu\fighting.targets",
|
|
ProjectPath = @"kung\fu\fighting.csproj",
|
|
TargetGraphs = new List<string>{ "net46", "netcoreapp1.0", "netstandard1.6" },
|
|
StartLineNumber = 11,
|
|
StartColumnNumber = 2,
|
|
EndLineNumber = 11,
|
|
EndColumnNumber = 10,
|
|
LibraryId = "nuget.versioning",
|
|
WarningLevel = WarningLevel.Severe
|
|
}
|
|
};
|
|
|
|
other.LogMessages = new List<IAssetsLogMessage>
|
|
{
|
|
new AssetsLogMessage(LogLevel.Error, NuGetLogCode.NU1000, "test log message")
|
|
{
|
|
FilePath = @"kung\fu\fighting.targets",
|
|
ProjectPath = @"kung\fu\fighting.csproj",
|
|
TargetGraphs = new List<string>{ "net46", "netcoreapp1.0", "netstandard1.6" },
|
|
StartLineNumber = 11,
|
|
StartColumnNumber = 2,
|
|
EndLineNumber = 11,
|
|
EndColumnNumber = 10,
|
|
LibraryId = "nuget.versioning"
|
|
},
|
|
new AssetsLogMessage(LogLevel.Warning, NuGetLogCode.NU1500, "test warning message")
|
|
{
|
|
FilePath = @"kung\fu\fighting.targets",
|
|
ProjectPath = @"kung\fu\fighting.csproj",
|
|
TargetGraphs = new List<string>{ "net46", "netcoreapp1.0", "netstandard1.6" },
|
|
LibraryId = "nuget.versioning",
|
|
WarningLevel = WarningLevel.Default
|
|
}
|
|
};
|
|
|
|
// Act & Assert
|
|
Assert.NotSame(self, other);
|
|
Assert.NotEqual(self, other);
|
|
}
|
|
|
|
[Fact]
|
|
public void LockFile_ConsiderCentralTransitiveDependencyGroupsForEquality()
|
|
{
|
|
// Arrange
|
|
var dotNetFramework = FrameworkConstants.CommonFrameworks.NetCoreApp10;
|
|
var libraryDependency_1 = new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NETCore.App",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("1.0.1"),
|
|
originalString: "1.0.1"),
|
|
LibraryDependencyTarget.Package)
|
|
};
|
|
var libraryDependency_2 = new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NETCore.App",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("2.0.1"),
|
|
originalString: "2.0.1"),
|
|
LibraryDependencyTarget.Package)
|
|
};
|
|
var libraryDependency_3 = new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NETCore.App",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("3.0.1"),
|
|
originalString: "3.0.1"),
|
|
LibraryDependencyTarget.Package)
|
|
};
|
|
var libraryDependency_11 = new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NETCore.App",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("1.0.1"),
|
|
originalString: "1.0.1"),
|
|
LibraryDependencyTarget.Package)
|
|
};
|
|
var libraryDependency_22 = new LibraryDependency
|
|
{
|
|
LibraryRange = new LibraryRange(
|
|
"Microsoft.NETCore.App",
|
|
new VersionRange(
|
|
minVersion: new NuGetVersion("2.0.1"),
|
|
originalString: "2.0.1"),
|
|
LibraryDependencyTarget.Package)
|
|
};
|
|
var projCTDG_1_2 = new CentralTransitiveDependencyGroup(dotNetFramework, new List<LibraryDependency>() { libraryDependency_1, libraryDependency_2 });
|
|
var projCTDG_11_22 = new CentralTransitiveDependencyGroup(dotNetFramework, new List<LibraryDependency>() { libraryDependency_1, libraryDependency_2 });
|
|
|
|
var lockFile_1_2 = new LockFile
|
|
{
|
|
Version = 3,
|
|
CentralTransitiveDependencyGroups = new List<CentralTransitiveDependencyGroup>() { projCTDG_1_2 }
|
|
};
|
|
var lockFile_11_22 = new LockFile
|
|
{
|
|
Version = 3,
|
|
CentralTransitiveDependencyGroups = new List<CentralTransitiveDependencyGroup>() { projCTDG_11_22 }
|
|
};
|
|
var lockFile_1 = new LockFile
|
|
{
|
|
Version = 3,
|
|
CentralTransitiveDependencyGroups = new List<CentralTransitiveDependencyGroup>()
|
|
{
|
|
new CentralTransitiveDependencyGroup(dotNetFramework, new List<LibraryDependency>(){ libraryDependency_1})
|
|
}
|
|
};
|
|
var lockFile_1_3 = new LockFile
|
|
{
|
|
Version = 3,
|
|
CentralTransitiveDependencyGroups = new List<CentralTransitiveDependencyGroup>()
|
|
{
|
|
new CentralTransitiveDependencyGroup(dotNetFramework, new List<LibraryDependency>(){ libraryDependency_1, libraryDependency_3})
|
|
}
|
|
};
|
|
|
|
// Act & Assert
|
|
Assert.Equal(lockFile_1_2, lockFile_1_2);
|
|
Assert.Equal(lockFile_1_2, lockFile_11_22);
|
|
Assert.NotEqual(lockFile_1_2, lockFile_1);
|
|
Assert.NotEqual(lockFile_1_2, lockFile_1_3);
|
|
Assert.Equal(lockFile_1_2.GetHashCode(), lockFile_11_22.GetHashCode());
|
|
}
|
|
|
|
[Fact]
|
|
public void LockFile_GetTarget_WithNuGetFramework_ReturnsCorrectLockFileTarget()
|
|
{
|
|
// Arrange
|
|
var expectedJson = ResourceTestUtility.GetResource("NuGet.ProjectModel.Test.compiler.resources.sample.assets.json", typeof(LockFileTests));
|
|
var lockFile = Parse(expectedJson, Path.GetTempPath());
|
|
NuGetFramework nuGetFramework = NuGetFramework.ParseComponents(".NETCoreApp,Version=v5.0", "Windows,Version=7.0");
|
|
|
|
// Act
|
|
var target = lockFile.GetTarget(nuGetFramework, runtimeIdentifier: null);
|
|
|
|
// Assert
|
|
target.TargetFramework.Should().Be(nuGetFramework);
|
|
}
|
|
|
|
[Fact]
|
|
public void LockFile_GetTarget_WithAlias_ReturnsCorrectLockFileTarget()
|
|
{
|
|
// Arrange
|
|
var expectedJson = ResourceTestUtility.GetResource("NuGet.ProjectModel.Test.compiler.resources.sample.assets.json", typeof(LockFileTests));
|
|
var lockFile = Parse(expectedJson, Path.GetTempPath());
|
|
NuGetFramework nuGetFramework = NuGetFramework.ParseComponents(".NETCoreApp,Version=v5.0", "Windows,Version=7.0");
|
|
|
|
// Act
|
|
var target = lockFile.GetTarget("net5.0", runtimeIdentifier: null);
|
|
|
|
// Assert
|
|
target.TargetFramework.Should().Be(nuGetFramework);
|
|
}
|
|
|
|
[Fact]
|
|
public void LockFile_GetTarget_WithAliasAndSameFramework_ReturnsCorrectLockFileTarget()
|
|
{
|
|
// Arrange
|
|
NuGetFramework targetFramework = FrameworkConstants.CommonFrameworks.Net50;
|
|
|
|
LockFile lockFile = new LockFile()
|
|
{
|
|
Targets = new List<LockFileTarget>()
|
|
{
|
|
new() {
|
|
TargetFramework = FrameworkConstants.CommonFrameworks.Net50,
|
|
TargetAlias = "net5.0"
|
|
},
|
|
new() {
|
|
TargetFramework = FrameworkConstants.CommonFrameworks.Net50,
|
|
TargetAlias = "net5.0-x64"
|
|
},
|
|
new() {
|
|
TargetFramework = FrameworkConstants.CommonFrameworks.Net50,
|
|
TargetAlias = "net5.0",
|
|
RuntimeIdentifier = "win-x64"
|
|
},
|
|
new() {
|
|
TargetFramework = FrameworkConstants.CommonFrameworks.Net50,
|
|
TargetAlias = "net5.0-x64",
|
|
RuntimeIdentifier = "win-x64"
|
|
},
|
|
}
|
|
};
|
|
|
|
// Act && Assert
|
|
LockFileTarget target = lockFile.GetTarget("net5.0-x64", runtimeIdentifier: null);
|
|
target.TargetFramework.Should().Be(targetFramework);
|
|
target.RuntimeIdentifier.Should().BeNull();
|
|
target.TargetAlias.Should().Be("net5.0-x64");
|
|
|
|
LockFileTarget targetWithRid = lockFile.GetTarget("net5.0", runtimeIdentifier: "win-x64");
|
|
targetWithRid.TargetFramework.Should().Be(targetFramework);
|
|
targetWithRid.RuntimeIdentifier.Should().Be("win-x64");
|
|
targetWithRid.TargetAlias.Should().Be("net5.0");
|
|
}
|
|
|
|
[Fact]
|
|
public void LockFile_GetTarget_WithAlias_WhenTargetAliasIsNull_ReturnsNull()
|
|
{
|
|
// Arrange
|
|
LockFile lockFile = new LockFile()
|
|
{
|
|
Targets = new List<LockFileTarget>()
|
|
{
|
|
new() {
|
|
TargetFramework = FrameworkConstants.CommonFrameworks.Net50,
|
|
TargetAlias = null
|
|
},
|
|
}
|
|
};
|
|
|
|
// Act
|
|
LockFileTarget target = lockFile.GetTarget("net5.0", runtimeIdentifier: null);
|
|
|
|
// Assert
|
|
target.Should().BeNull();
|
|
}
|
|
|
|
private LockFile Parse(string lockFileContent, string path)
|
|
{
|
|
var reader = new LockFileFormat();
|
|
byte[] byteArray = Encoding.UTF8.GetBytes(lockFileContent);
|
|
using (var stream = new MemoryStream(byteArray))
|
|
{
|
|
return reader.Read(stream, NullLogger.Instance, path);
|
|
}
|
|
}
|
|
}
|
|
}
|