-
Notifications
You must be signed in to change notification settings - Fork 1k
/
GivenARemoveDuplicatePackageReferences.cs
62 lines (49 loc) · 2.64 KB
/
GivenARemoveDuplicatePackageReferences.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using FluentAssertions;
using Microsoft.Build.Framework;
using Xunit;
using NuGet.Packaging.Core;
using NuGet.Versioning;
namespace Microsoft.NET.Build.Tasks.UnitTests
{
public class GivenARemoveDuplicatePackageReferenceTask
{
private static ITaskItem[] GetPackageRefItems(List<PackageIdentity> packages)
=> packages.Select(kvp => new MockTaskItem(
itemSpec: kvp.Id,
metadata: new Dictionary<string, string> { { "Version", kvp.Version.ToString() } })).ToArray();
[Fact]
public void RemoveDuplicatePackageReference()
{
var knownpackage = new List<PackageIdentity>();
knownpackage.Add(new PackageIdentity("Microsoft.NETCore.Targets", NuGetVersion.Parse("1.2.0-beta-24821-02")));
knownpackage.Add(new PackageIdentity("System.Private.Uri", NuGetVersion.Parse("4.4.0-beta-24821-02")));
knownpackage.Add(new PackageIdentity("Microsoft.NETCore.CoreDisTools", NuGetVersion.Parse("1.0.1-prerelease-00001")));
knownpackage.Add(new PackageIdentity("Microsoft.NETCore.Platforms", NuGetVersion.Parse("1.2.0-beta-24821-02")));
//duplicates
knownpackage.Add(new PackageIdentity("Microsoft.NETCore.Targets", NuGetVersion.Parse("1.2.0-beta-24821-02")));
knownpackage.Add(new PackageIdentity("Microsoft.NETCore.CoreDisTools", NuGetVersion.Parse("1.0.1-prerelease-00001")));
var packagelistWithoutDups = new HashSet<PackageIdentity>(knownpackage);
Assert.True(knownpackage.Count() > packagelistWithoutDups.Count());
// execute task
var task = new RemoveDuplicatePackageReferences()
{
InputPackageReferences = GetPackageRefItems(knownpackage)
};
task.Execute().Should().BeTrue();
task.UniquePackageReferences.Count().Should().Be(packagelistWithoutDups.Count());
var uniquePackages = new List<PackageIdentity>();
foreach (var item in task.UniquePackageReferences)
{
var pkgName = item.ItemSpec;
var pkgVersion = NuGetVersion.Parse(item.GetMetadata("Version"));
uniquePackages.Add(new PackageIdentity(pkgName, pkgVersion));
}
foreach (var pkg in uniquePackages)
{
packagelistWithoutDups.Should().Contain(elem => elem.Equals(pkg), "package {0}, version {1} was not expected to be stored", pkg.Id, pkg.Version);
}
}
}
}