dependabot-nuget 0.293.0 → 0.295.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/helpers/lib/NuGetUpdater/Directory.Packages.props +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/VersionFinder.cs +16 -5
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs +2 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/Advisory.cs +2 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/RunWorker.cs +190 -130
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/PackageReferenceUpdater.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/PackagesConfigUpdater.cs +3 -6
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +36 -18
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Analyze/AnalyzeWorkerTests.cs +55 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/MiscellaneousTests.cs +61 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/RunWorkerTests.cs +338 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateAllowedTests.cs +286 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdatedDependencyListTests.cs +9 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +88 -2
- metadata +6 -5
@@ -1,3 +1,5 @@
|
|
1
|
+
using System.Text.Json;
|
2
|
+
|
1
3
|
using NuGet.Versioning;
|
2
4
|
|
3
5
|
using NuGetUpdater.Core.Analyze;
|
@@ -29,6 +31,16 @@ public class MiscellaneousTests
|
|
29
31
|
Assert.Equal(expectedRequirementsStrings, actualRequirementsStrings);
|
30
32
|
}
|
31
33
|
|
34
|
+
[Theory]
|
35
|
+
[MemberData(nameof(DependencyInfoFromJobData))]
|
36
|
+
public void DependencyInfoFromJob(Job job, Dependency dependency, DependencyInfo expectedDependencyInfo)
|
37
|
+
{
|
38
|
+
var actualDependencyInfo = RunWorker.GetDependencyInfo(job, dependency);
|
39
|
+
var expectedString = JsonSerializer.Serialize(expectedDependencyInfo, AnalyzeWorker.SerializerOptions);
|
40
|
+
var actualString = JsonSerializer.Serialize(actualDependencyInfo, AnalyzeWorker.SerializerOptions);
|
41
|
+
Assert.Equal(expectedString, actualString);
|
42
|
+
}
|
43
|
+
|
32
44
|
public static IEnumerable<object?[]> RequirementsFromIgnoredVersionsData()
|
33
45
|
{
|
34
46
|
yield return
|
@@ -82,4 +94,53 @@ public class MiscellaneousTests
|
|
82
94
|
}
|
83
95
|
];
|
84
96
|
}
|
97
|
+
|
98
|
+
public static IEnumerable<object[]> DependencyInfoFromJobData()
|
99
|
+
{
|
100
|
+
yield return
|
101
|
+
[
|
102
|
+
// job
|
103
|
+
new Job()
|
104
|
+
{
|
105
|
+
Source = new()
|
106
|
+
{
|
107
|
+
Provider = "github",
|
108
|
+
Repo = "some/repo"
|
109
|
+
},
|
110
|
+
SecurityAdvisories = [
|
111
|
+
new()
|
112
|
+
{
|
113
|
+
DependencyName = "Some.Dependency",
|
114
|
+
AffectedVersions = [Requirement.Parse(">= 1.0.0, < 1.1.0")],
|
115
|
+
PatchedVersions = [Requirement.Parse("= 1.1.0")],
|
116
|
+
UnaffectedVersions = [Requirement.Parse("= 1.2.0")]
|
117
|
+
},
|
118
|
+
new()
|
119
|
+
{
|
120
|
+
DependencyName = "Unrelated.Dependency",
|
121
|
+
AffectedVersions = [Requirement.Parse(">= 1.0.0, < 99.99.99")]
|
122
|
+
}
|
123
|
+
]
|
124
|
+
},
|
125
|
+
// dependency
|
126
|
+
new Dependency("Some.Dependency", "1.0.0", DependencyType.PackageReference),
|
127
|
+
// expectedDependencyInfo
|
128
|
+
new DependencyInfo()
|
129
|
+
{
|
130
|
+
Name = "Some.Dependency",
|
131
|
+
Version = "1.0.0",
|
132
|
+
IsVulnerable = true,
|
133
|
+
IgnoredVersions = [],
|
134
|
+
Vulnerabilities = [
|
135
|
+
new()
|
136
|
+
{
|
137
|
+
DependencyName = "Some.Dependency",
|
138
|
+
PackageManager = "nuget",
|
139
|
+
VulnerableVersions = [Requirement.Parse(">= 1.0.0, < 1.1.0")],
|
140
|
+
SafeVersions = [Requirement.Parse("= 1.1.0"), Requirement.Parse("= 1.2.0")],
|
141
|
+
}
|
142
|
+
]
|
143
|
+
}
|
144
|
+
];
|
145
|
+
}
|
85
146
|
}
|
@@ -1711,6 +1711,344 @@ public class RunWorkerTests
|
|
1711
1711
|
);
|
1712
1712
|
}
|
1713
1713
|
|
1714
|
+
[Fact]
|
1715
|
+
public async Task UpdatePackageWithDifferentVersionsInDifferentDirectories()
|
1716
|
+
{
|
1717
|
+
// this test passes `null` for discovery, analyze, and update workers to fully test the desired behavior
|
1718
|
+
|
1719
|
+
// the same dependency Some.Package is reported for 3 cases:
|
1720
|
+
// library1.csproj - top level dependency, already up to date
|
1721
|
+
// library2.csproj - top level dependency, needs direct update
|
1722
|
+
// library3.csproj - transitive dependency, needs pin
|
1723
|
+
await RunAsync(
|
1724
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = true },
|
1725
|
+
packages: [
|
1726
|
+
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net8.0"),
|
1727
|
+
MockNuGetPackage.CreateSimplePackage("Some.Package", "2.0.0", "net8.0"),
|
1728
|
+
MockNuGetPackage.CreateSimplePackage("Package.With.Transitive.Dependency", "0.1.0", "net8.0", [(null, [("Some.Package", "1.0.0")])]),
|
1729
|
+
],
|
1730
|
+
job: new Job()
|
1731
|
+
{
|
1732
|
+
AllowedUpdates = [new() { UpdateType = UpdateType.Security }],
|
1733
|
+
SecurityAdvisories =
|
1734
|
+
[
|
1735
|
+
new()
|
1736
|
+
{
|
1737
|
+
DependencyName = "Some.Package",
|
1738
|
+
AffectedVersions = [Requirement.Parse("= 1.0.0")]
|
1739
|
+
}
|
1740
|
+
],
|
1741
|
+
Source = new()
|
1742
|
+
{
|
1743
|
+
Provider = "github",
|
1744
|
+
Repo = "test/repo",
|
1745
|
+
Directory = "/"
|
1746
|
+
}
|
1747
|
+
},
|
1748
|
+
files: [
|
1749
|
+
("dirs.proj", """
|
1750
|
+
<Project>
|
1751
|
+
<ItemGroup>
|
1752
|
+
<ProjectFile Include="library1\library1.csproj" />
|
1753
|
+
<ProjectFile Include="library2\library2.csproj" />
|
1754
|
+
<ProjectFile Include="library3\library3.csproj" />
|
1755
|
+
</ItemGroup>
|
1756
|
+
</Project>
|
1757
|
+
"""),
|
1758
|
+
("Directory.Build.props", "<Project />"),
|
1759
|
+
("Directory.Build.targets", "<Project />"),
|
1760
|
+
("Directory.Packages.props", """
|
1761
|
+
<Project>
|
1762
|
+
<PropertyGroup>
|
1763
|
+
<ManagePackageVersionsCentrally>false</ManagePackageVersionsCentrally>
|
1764
|
+
</PropertyGroup>
|
1765
|
+
</Project>
|
1766
|
+
"""),
|
1767
|
+
("library1/library1.csproj", """
|
1768
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1769
|
+
<PropertyGroup>
|
1770
|
+
<TargetFramework>net8.0</TargetFramework>
|
1771
|
+
</PropertyGroup>
|
1772
|
+
<ItemGroup>
|
1773
|
+
<PackageReference Include="Some.Package" Version="2.0.0" />
|
1774
|
+
</ItemGroup>
|
1775
|
+
</Project>
|
1776
|
+
"""),
|
1777
|
+
("library2/library2.csproj", """
|
1778
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1779
|
+
<PropertyGroup>
|
1780
|
+
<TargetFramework>net8.0</TargetFramework>
|
1781
|
+
</PropertyGroup>
|
1782
|
+
<ItemGroup>
|
1783
|
+
<PackageReference Include="Some.Package" Version="1.0.0" />
|
1784
|
+
</ItemGroup>
|
1785
|
+
</Project>
|
1786
|
+
"""),
|
1787
|
+
("library3/library3.csproj", """
|
1788
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1789
|
+
<PropertyGroup>
|
1790
|
+
<TargetFramework>net8.0</TargetFramework>
|
1791
|
+
</PropertyGroup>
|
1792
|
+
<ItemGroup>
|
1793
|
+
<PackageReference Include="Package.With.Transitive.Dependency" Version="0.1.0" />
|
1794
|
+
</ItemGroup>
|
1795
|
+
</Project>
|
1796
|
+
"""),
|
1797
|
+
],
|
1798
|
+
discoveryWorker: null,
|
1799
|
+
analyzeWorker: null,
|
1800
|
+
updaterWorker: null,
|
1801
|
+
expectedResult: new RunResult()
|
1802
|
+
{
|
1803
|
+
Base64DependencyFiles =
|
1804
|
+
[
|
1805
|
+
new DependencyFile()
|
1806
|
+
{
|
1807
|
+
Directory = "/",
|
1808
|
+
Name = "Directory.Build.props",
|
1809
|
+
Content = Convert.ToBase64String(Encoding.UTF8.GetBytes("<Project />"))
|
1810
|
+
},
|
1811
|
+
new DependencyFile()
|
1812
|
+
{
|
1813
|
+
Directory = "/",
|
1814
|
+
Name = "Directory.Build.targets",
|
1815
|
+
Content = Convert.ToBase64String(Encoding.UTF8.GetBytes("<Project />"))
|
1816
|
+
},
|
1817
|
+
new DependencyFile()
|
1818
|
+
{
|
1819
|
+
Directory = "/",
|
1820
|
+
Name = "Directory.Packages.props",
|
1821
|
+
Content = Convert.ToBase64String(Encoding.UTF8.GetBytes("""
|
1822
|
+
<Project>
|
1823
|
+
<PropertyGroup>
|
1824
|
+
<ManagePackageVersionsCentrally>false</ManagePackageVersionsCentrally>
|
1825
|
+
</PropertyGroup>
|
1826
|
+
</Project>
|
1827
|
+
"""))
|
1828
|
+
},
|
1829
|
+
new DependencyFile()
|
1830
|
+
{
|
1831
|
+
Directory = "/library1",
|
1832
|
+
Name = "library1.csproj",
|
1833
|
+
Content = Convert.ToBase64String(Encoding.UTF8.GetBytes("""
|
1834
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1835
|
+
<PropertyGroup>
|
1836
|
+
<TargetFramework>net8.0</TargetFramework>
|
1837
|
+
</PropertyGroup>
|
1838
|
+
<ItemGroup>
|
1839
|
+
<PackageReference Include="Some.Package" Version="2.0.0" />
|
1840
|
+
</ItemGroup>
|
1841
|
+
</Project>
|
1842
|
+
"""))
|
1843
|
+
},
|
1844
|
+
new DependencyFile()
|
1845
|
+
{
|
1846
|
+
Directory = "/library2",
|
1847
|
+
Name = "library2.csproj",
|
1848
|
+
Content = Convert.ToBase64String(Encoding.UTF8.GetBytes("""
|
1849
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1850
|
+
<PropertyGroup>
|
1851
|
+
<TargetFramework>net8.0</TargetFramework>
|
1852
|
+
</PropertyGroup>
|
1853
|
+
<ItemGroup>
|
1854
|
+
<PackageReference Include="Some.Package" Version="1.0.0" />
|
1855
|
+
</ItemGroup>
|
1856
|
+
</Project>
|
1857
|
+
"""))
|
1858
|
+
},
|
1859
|
+
new DependencyFile()
|
1860
|
+
{
|
1861
|
+
Directory = "/library3",
|
1862
|
+
Name = "library3.csproj",
|
1863
|
+
Content = Convert.ToBase64String(Encoding.UTF8.GetBytes("""
|
1864
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1865
|
+
<PropertyGroup>
|
1866
|
+
<TargetFramework>net8.0</TargetFramework>
|
1867
|
+
</PropertyGroup>
|
1868
|
+
<ItemGroup>
|
1869
|
+
<PackageReference Include="Package.With.Transitive.Dependency" Version="0.1.0" />
|
1870
|
+
</ItemGroup>
|
1871
|
+
</Project>
|
1872
|
+
"""))
|
1873
|
+
}
|
1874
|
+
],
|
1875
|
+
BaseCommitSha = "TEST-COMMIT-SHA",
|
1876
|
+
},
|
1877
|
+
expectedApiMessages: [
|
1878
|
+
new UpdatedDependencyList()
|
1879
|
+
{
|
1880
|
+
Dependencies = [
|
1881
|
+
new()
|
1882
|
+
{
|
1883
|
+
Name = "Some.Package",
|
1884
|
+
Version = "2.0.0",
|
1885
|
+
Requirements = [
|
1886
|
+
new()
|
1887
|
+
{
|
1888
|
+
Requirement = "2.0.0",
|
1889
|
+
File = "/library1/library1.csproj",
|
1890
|
+
Groups = ["dependencies"],
|
1891
|
+
}
|
1892
|
+
]
|
1893
|
+
},
|
1894
|
+
new()
|
1895
|
+
{
|
1896
|
+
Name = "Some.Package",
|
1897
|
+
Version = "1.0.0",
|
1898
|
+
Requirements = [
|
1899
|
+
new()
|
1900
|
+
{
|
1901
|
+
Requirement = "1.0.0",
|
1902
|
+
File = "/library2/library2.csproj",
|
1903
|
+
Groups = ["dependencies"],
|
1904
|
+
}
|
1905
|
+
]
|
1906
|
+
},
|
1907
|
+
new()
|
1908
|
+
{
|
1909
|
+
Name = "Package.With.Transitive.Dependency",
|
1910
|
+
Version = "0.1.0",
|
1911
|
+
Requirements = [
|
1912
|
+
new()
|
1913
|
+
{
|
1914
|
+
Requirement = "0.1.0",
|
1915
|
+
File = "/library3/library3.csproj",
|
1916
|
+
Groups = ["dependencies"],
|
1917
|
+
}
|
1918
|
+
]
|
1919
|
+
},
|
1920
|
+
new()
|
1921
|
+
{
|
1922
|
+
Name = "Some.Package",
|
1923
|
+
Version = "1.0.0",
|
1924
|
+
Requirements = [
|
1925
|
+
new()
|
1926
|
+
{
|
1927
|
+
Requirement = "1.0.0",
|
1928
|
+
File = "/library3/library3.csproj",
|
1929
|
+
Groups = ["dependencies"],
|
1930
|
+
}
|
1931
|
+
]
|
1932
|
+
},
|
1933
|
+
],
|
1934
|
+
DependencyFiles = [
|
1935
|
+
"/Directory.Build.props",
|
1936
|
+
"/Directory.Build.targets",
|
1937
|
+
"/Directory.Packages.props",
|
1938
|
+
"/library1/library1.csproj",
|
1939
|
+
"/library2/library2.csproj",
|
1940
|
+
"/library3/library3.csproj",
|
1941
|
+
],
|
1942
|
+
},
|
1943
|
+
new IncrementMetric()
|
1944
|
+
{
|
1945
|
+
Metric = "updater.started",
|
1946
|
+
Tags = new()
|
1947
|
+
{
|
1948
|
+
["operation"] = "group_update_all_versions"
|
1949
|
+
}
|
1950
|
+
},
|
1951
|
+
new CreatePullRequest()
|
1952
|
+
{
|
1953
|
+
Dependencies = [
|
1954
|
+
new()
|
1955
|
+
{
|
1956
|
+
Name = "Some.Package",
|
1957
|
+
Version = "2.0.0",
|
1958
|
+
Requirements = [
|
1959
|
+
new()
|
1960
|
+
{
|
1961
|
+
Requirement = "2.0.0",
|
1962
|
+
File = "/library2/library2.csproj",
|
1963
|
+
Groups = ["dependencies"],
|
1964
|
+
Source = new()
|
1965
|
+
{
|
1966
|
+
SourceUrl = null,
|
1967
|
+
Type = "nuget_repo",
|
1968
|
+
}
|
1969
|
+
}
|
1970
|
+
],
|
1971
|
+
PreviousVersion = "1.0.0",
|
1972
|
+
PreviousRequirements = [
|
1973
|
+
new()
|
1974
|
+
{
|
1975
|
+
Requirement = "1.0.0",
|
1976
|
+
File = "/library2/library2.csproj",
|
1977
|
+
Groups = ["dependencies"],
|
1978
|
+
}
|
1979
|
+
],
|
1980
|
+
},
|
1981
|
+
new()
|
1982
|
+
{
|
1983
|
+
Name = "Some.Package",
|
1984
|
+
Version = "2.0.0",
|
1985
|
+
Requirements = [
|
1986
|
+
new()
|
1987
|
+
{
|
1988
|
+
Requirement = "2.0.0",
|
1989
|
+
File = "/library3/library3.csproj",
|
1990
|
+
Groups = ["dependencies"],
|
1991
|
+
Source = new()
|
1992
|
+
{
|
1993
|
+
SourceUrl = null,
|
1994
|
+
Type = "nuget_repo",
|
1995
|
+
}
|
1996
|
+
}
|
1997
|
+
],
|
1998
|
+
PreviousVersion = "1.0.0",
|
1999
|
+
PreviousRequirements = [
|
2000
|
+
new()
|
2001
|
+
{
|
2002
|
+
Requirement = "1.0.0",
|
2003
|
+
File = "/library3/library3.csproj",
|
2004
|
+
Groups = ["dependencies"],
|
2005
|
+
}
|
2006
|
+
],
|
2007
|
+
},
|
2008
|
+
],
|
2009
|
+
UpdatedDependencyFiles = [
|
2010
|
+
new()
|
2011
|
+
{
|
2012
|
+
Directory = "/library2",
|
2013
|
+
Name = "library2.csproj",
|
2014
|
+
Content = """
|
2015
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
2016
|
+
<PropertyGroup>
|
2017
|
+
<TargetFramework>net8.0</TargetFramework>
|
2018
|
+
</PropertyGroup>
|
2019
|
+
<ItemGroup>
|
2020
|
+
<PackageReference Include="Some.Package" Version="2.0.0" />
|
2021
|
+
</ItemGroup>
|
2022
|
+
</Project>
|
2023
|
+
"""
|
2024
|
+
},
|
2025
|
+
new()
|
2026
|
+
{
|
2027
|
+
Directory = "/library3",
|
2028
|
+
Name = "library3.csproj",
|
2029
|
+
Content = """
|
2030
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
2031
|
+
<PropertyGroup>
|
2032
|
+
<TargetFramework>net8.0</TargetFramework>
|
2033
|
+
</PropertyGroup>
|
2034
|
+
<ItemGroup>
|
2035
|
+
<PackageReference Include="Package.With.Transitive.Dependency" Version="0.1.0" />
|
2036
|
+
<PackageReference Include="Some.Package" Version="2.0.0" />
|
2037
|
+
</ItemGroup>
|
2038
|
+
</Project>
|
2039
|
+
"""
|
2040
|
+
}
|
2041
|
+
],
|
2042
|
+
BaseCommitSha = "TEST-COMMIT-SHA",
|
2043
|
+
CommitMessage = "TODO: message",
|
2044
|
+
PrTitle = "TODO: title",
|
2045
|
+
PrBody = "TODO: body"
|
2046
|
+
},
|
2047
|
+
new MarkAsProcessed("TEST-COMMIT-SHA")
|
2048
|
+
]
|
2049
|
+
);
|
2050
|
+
}
|
2051
|
+
|
1714
2052
|
private static async Task RunAsync(Job job, TestFile[] files, IDiscoveryWorker? discoveryWorker, IAnalyzeWorker? analyzeWorker, IUpdaterWorker? updaterWorker, RunResult expectedResult, object[] expectedApiMessages, MockNuGetPackage[]? packages = null, ExperimentsManager? experimentsManager = null, string? repoContentsPath = null)
|
1715
2053
|
{
|
1716
2054
|
// arrange
|