dependabot-nuget 0.351.0 → 0.353.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/NuGetUpdater.Core/Discover/DiscoveryWorker.cs +17 -43
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs +102 -46
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/ExperimentsManager.cs +0 -3
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/DependencyGroup.cs +19 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/Job.cs +23 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/JobErrorBase.cs +4 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/OutOfDisk.cs +9 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/IApiHandler.cs +11 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/RunWorker.cs +25 -4
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/CreateSecurityUpdatePullRequestHandler.cs +2 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/GroupUpdateAllVersionsHandler.cs +48 -35
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/RefreshGroupUpdatePullRequestHandler.cs +3 -3
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/RefreshSecurityUpdatePullRequestHandler.cs +2 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/RefreshVersionUpdatePullRequestHandler.cs +2 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/PackageReferenceUpdater.cs +20 -23
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +41 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/PathHelper.cs +93 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.PackagesConfig.cs +2 -5
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.Project.cs +21 -9
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.cs +51 -96
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/SdkProjectDiscoveryTests.cs +1 -66
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/ApiModel/JobTests.cs +39 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/EndToEndTests.cs +142 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/HttpApiHandlerTests.cs +1 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/JobErrorBaseTests.cs +7 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/MessageReportTests.cs +11 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/MiscellaneousTests.cs +76 -7
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/SerializationTests.cs +8 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/GroupUpdateAllVersionsHandlerTests.cs +242 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/PackageReferenceUpdaterTests.cs +30 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +25 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/PathHelperTests.cs +250 -0
- metadata +5 -4
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
using System.Collections.Immutable;
|
|
2
2
|
using System.Text.Json;
|
|
3
3
|
|
|
4
|
+
using Microsoft.Build.Evaluation;
|
|
5
|
+
|
|
4
6
|
using NuGetUpdater.Core.Discover;
|
|
5
7
|
using NuGetUpdater.Core.Run.ApiModel;
|
|
8
|
+
using NuGetUpdater.Core.Test.Utilities;
|
|
6
9
|
|
|
7
10
|
using Xunit;
|
|
8
11
|
|
|
@@ -163,13 +166,10 @@ public partial class DiscoveryWorkerTests : DiscoveryWorkerTestBase
|
|
|
163
166
|
);
|
|
164
167
|
}
|
|
165
168
|
|
|
166
|
-
[
|
|
167
|
-
|
|
168
|
-
[InlineData(false)]
|
|
169
|
-
public async Task TestDependenciesSeparatedBySemicolon(bool useSingleRestore)
|
|
169
|
+
[Fact]
|
|
170
|
+
public async Task TestDependenciesSeparatedBySemicolon()
|
|
170
171
|
{
|
|
171
172
|
await TestDiscoveryAsync(
|
|
172
|
-
experimentsManager: new ExperimentsManager() { UseSingleRestore = useSingleRestore },
|
|
173
173
|
packages:
|
|
174
174
|
[
|
|
175
175
|
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
|
@@ -368,13 +368,10 @@ public partial class DiscoveryWorkerTests : DiscoveryWorkerTestBase
|
|
|
368
368
|
);
|
|
369
369
|
}
|
|
370
370
|
|
|
371
|
-
[
|
|
372
|
-
|
|
373
|
-
[InlineData(false)]
|
|
374
|
-
public async Task TestPackageConfig(bool useSingleRestore)
|
|
371
|
+
[Fact]
|
|
372
|
+
public async Task TestPackageConfig()
|
|
375
373
|
{
|
|
376
374
|
await TestDiscoveryAsync(
|
|
377
|
-
experimentsManager: new ExperimentsManager() { UseSingleRestore = useSingleRestore },
|
|
378
375
|
packages:
|
|
379
376
|
[
|
|
380
377
|
MockNuGetPackage.CreateSimplePackage("Some.Package", "7.0.1", "net45"),
|
|
@@ -491,14 +488,11 @@ public partial class DiscoveryWorkerTests : DiscoveryWorkerTestBase
|
|
|
491
488
|
);
|
|
492
489
|
}
|
|
493
490
|
|
|
494
|
-
[
|
|
495
|
-
|
|
496
|
-
[InlineData(false)]
|
|
497
|
-
public async Task TestRepo(bool useSingleRestore)
|
|
491
|
+
[Fact]
|
|
492
|
+
public async Task TestRepo()
|
|
498
493
|
{
|
|
499
494
|
var solutionPath = "solution.sln";
|
|
500
495
|
await TestDiscoveryAsync(
|
|
501
|
-
experimentsManager: new ExperimentsManager() { UseSingleRestore = useSingleRestore },
|
|
502
496
|
packages:
|
|
503
497
|
[
|
|
504
498
|
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net7.0"),
|
|
@@ -624,13 +618,10 @@ public partial class DiscoveryWorkerTests : DiscoveryWorkerTestBase
|
|
|
624
618
|
);
|
|
625
619
|
}
|
|
626
620
|
|
|
627
|
-
[
|
|
628
|
-
|
|
629
|
-
[InlineData(false)]
|
|
630
|
-
public async Task TestRepo_Sln(bool useSingleRestore)
|
|
621
|
+
[Fact]
|
|
622
|
+
public async Task TestRepo_Sln()
|
|
631
623
|
{
|
|
632
624
|
await TestDiscoveryAsync(
|
|
633
|
-
experimentsManager: new ExperimentsManager() { UseSingleRestore = useSingleRestore },
|
|
634
625
|
packages: [
|
|
635
626
|
MockNuGetPackage.CreateSimplePackage("Package.A", "1.2.3", "net8.0"),
|
|
636
627
|
MockNuGetPackage.CreateSimplePackage("Package.B", "4.5.6", "net8.0"),
|
|
@@ -720,14 +711,11 @@ public partial class DiscoveryWorkerTests : DiscoveryWorkerTestBase
|
|
|
720
711
|
);
|
|
721
712
|
}
|
|
722
713
|
|
|
723
|
-
[
|
|
724
|
-
|
|
725
|
-
[InlineData(false)]
|
|
726
|
-
public async Task TestRepo_Slnx(bool useSingleRestore)
|
|
714
|
+
[Fact]
|
|
715
|
+
public async Task TestRepo_Slnx()
|
|
727
716
|
{
|
|
728
717
|
var solutionPath = "solution.slnx";
|
|
729
718
|
await TestDiscoveryAsync(
|
|
730
|
-
experimentsManager: new ExperimentsManager() { UseSingleRestore = useSingleRestore },
|
|
731
719
|
packages:
|
|
732
720
|
[
|
|
733
721
|
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net7.0"),
|
|
@@ -863,77 +851,6 @@ public partial class DiscoveryWorkerTests : DiscoveryWorkerTestBase
|
|
|
863
851
|
);
|
|
864
852
|
}
|
|
865
853
|
|
|
866
|
-
[Fact]
|
|
867
|
-
public async Task TestDirsProj_CasingMismatchIsResolved()
|
|
868
|
-
{
|
|
869
|
-
var dirsProjPath = "dirs.proj";
|
|
870
|
-
await TestDiscoveryAsync(
|
|
871
|
-
packages:
|
|
872
|
-
[
|
|
873
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net7.0"),
|
|
874
|
-
],
|
|
875
|
-
workspacePath: "",
|
|
876
|
-
files: new[]
|
|
877
|
-
{
|
|
878
|
-
("src/project.csproj", """
|
|
879
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
|
880
|
-
<PropertyGroup>
|
|
881
|
-
<TargetFrameworks>net7.0;net8.0</TargetFrameworks>
|
|
882
|
-
</PropertyGroup>
|
|
883
|
-
|
|
884
|
-
<ItemGroup>
|
|
885
|
-
<PackageReference Include="Some.Package" />
|
|
886
|
-
</ItemGroup>
|
|
887
|
-
</Project>
|
|
888
|
-
"""),
|
|
889
|
-
("Directory.Build.props", "<Project />"),
|
|
890
|
-
("Directory.Packages.props", """
|
|
891
|
-
<Project>
|
|
892
|
-
<PropertyGroup>
|
|
893
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
|
894
|
-
<SomePackageVersion>9.0.1</SomePackageVersion>
|
|
895
|
-
</PropertyGroup>
|
|
896
|
-
|
|
897
|
-
<ItemGroup>
|
|
898
|
-
<PackageVersion Include="Some.Package" Version="$(SomePackageVersion)" />
|
|
899
|
-
</ItemGroup>
|
|
900
|
-
</Project>
|
|
901
|
-
"""),
|
|
902
|
-
// Introduce a casing difference in the project reference
|
|
903
|
-
(dirsProjPath, """
|
|
904
|
-
<Project>
|
|
905
|
-
<ItemGroup>
|
|
906
|
-
<ProjectReference Include="SRC/PROJECT.CSPROJ" />
|
|
907
|
-
</ItemGroup>
|
|
908
|
-
</Project>
|
|
909
|
-
""")
|
|
910
|
-
},
|
|
911
|
-
expectedResult: new()
|
|
912
|
-
{
|
|
913
|
-
Path = "",
|
|
914
|
-
Projects = [
|
|
915
|
-
new()
|
|
916
|
-
{
|
|
917
|
-
FilePath = "src/project.csproj",
|
|
918
|
-
TargetFrameworks = ["net7.0", "net8.0"],
|
|
919
|
-
Dependencies = [
|
|
920
|
-
new("Some.Package", "9.0.1", DependencyType.PackageReference, TargetFrameworks: ["net7.0", "net8.0"], IsDirect: true)
|
|
921
|
-
],
|
|
922
|
-
Properties = [
|
|
923
|
-
new("TargetFrameworks", "net7.0;net8.0", "src/project.csproj"),
|
|
924
|
-
],
|
|
925
|
-
ReferencedProjectPaths = [],
|
|
926
|
-
ImportedFiles = [
|
|
927
|
-
"../Directory.Build.props",
|
|
928
|
-
"../Directory.Packages.props",
|
|
929
|
-
],
|
|
930
|
-
AdditionalFiles = [],
|
|
931
|
-
}
|
|
932
|
-
],
|
|
933
|
-
}
|
|
934
|
-
);
|
|
935
|
-
}
|
|
936
|
-
|
|
937
854
|
[Fact]
|
|
938
855
|
public async Task NonSupportedProjectExtensionsAreSkipped()
|
|
939
856
|
{
|
|
@@ -1617,4 +1534,42 @@ public partial class DiscoveryWorkerTests : DiscoveryWorkerTestBase
|
|
|
1617
1534
|
}
|
|
1618
1535
|
);
|
|
1619
1536
|
}
|
|
1537
|
+
|
|
1538
|
+
[Fact]
|
|
1539
|
+
public async Task ExpandEntryPoints()
|
|
1540
|
+
{
|
|
1541
|
+
using var tempDir = await TemporaryDirectory.CreateWithContentsAsync(
|
|
1542
|
+
("src/dirs.proj", """
|
|
1543
|
+
<Project>
|
|
1544
|
+
<ItemGroup>
|
|
1545
|
+
<ProjectFile Include="project1\project1.csproj" /><!-- relative -->
|
|
1546
|
+
<ProjectFile Include="$(MSBuildThisFileDirectory)project2\project2.csproj" /><!-- absolute -->
|
|
1547
|
+
</ItemGroup>
|
|
1548
|
+
</Project>
|
|
1549
|
+
"""),
|
|
1550
|
+
("src/project1/project1.csproj", $"""
|
|
1551
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
|
1552
|
+
<PropertyGroup>
|
|
1553
|
+
<TargetFramework>net9.0</TargetFramework>
|
|
1554
|
+
</PropertyGroup>
|
|
1555
|
+
</Project>
|
|
1556
|
+
"""),
|
|
1557
|
+
("src/project2/project2.csproj", """
|
|
1558
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
|
1559
|
+
<PropertyGroup>
|
|
1560
|
+
<TargetFramework>net9.0</TargetFramework>
|
|
1561
|
+
</PropertyGroup>
|
|
1562
|
+
</Project>
|
|
1563
|
+
""")
|
|
1564
|
+
);
|
|
1565
|
+
var actualEntryPoints = (await DiscoveryWorker.ExpandEntryPointsIntoProjectsAsync([Path.Combine(tempDir.DirectoryPath, "src/dirs.proj")], new ExperimentsManager()))
|
|
1566
|
+
.Select(p => p.NormalizePathToUnix())
|
|
1567
|
+
.ToArray();
|
|
1568
|
+
var expectedEntryPoints = new[]
|
|
1569
|
+
{
|
|
1570
|
+
Path.Combine(tempDir.DirectoryPath, "src/project1/project1.csproj").NormalizePathToUnix(),
|
|
1571
|
+
Path.Combine(tempDir.DirectoryPath, "src/project2/project2.csproj").NormalizePathToUnix(),
|
|
1572
|
+
};
|
|
1573
|
+
AssertEx.Equal(expectedEntryPoints, actualEntryPoints);
|
|
1574
|
+
}
|
|
1620
1575
|
}
|
|
@@ -580,63 +580,12 @@ public class SdkProjectDiscoveryTests : DiscoveryWorkerTestBase
|
|
|
580
580
|
);
|
|
581
581
|
}
|
|
582
582
|
|
|
583
|
-
[Fact]
|
|
584
|
-
public async Task ExistingPackageIncompatibilityShouldNotPreventRestore()
|
|
585
|
-
{
|
|
586
|
-
// Package.A tries to pull in a transitive dependency of Transitive.Package/2.0.0 but that package is explicitly pinned at 1.0.0
|
|
587
|
-
// Normally this would cause a restore failure which means discovery would also fail
|
|
588
|
-
// This test ensures we can still run discovery
|
|
589
|
-
await TestDiscoverAsync(
|
|
590
|
-
useSingleRestore: false,
|
|
591
|
-
packages: [
|
|
592
|
-
MockNuGetPackage.CreateSimplePackage("Package.A", "1.0.0", "net8.0", [(null, [("Transitive.Package", "2.0.0")])]),
|
|
593
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Package", "1.0.0", "net8.0"),
|
|
594
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Package", "2.0.0", "net8.0"),
|
|
595
|
-
],
|
|
596
|
-
startingDirectory: "src",
|
|
597
|
-
projectPath: "src/library.csproj",
|
|
598
|
-
files: [
|
|
599
|
-
("src/library.csproj", """
|
|
600
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
|
601
|
-
<PropertyGroup>
|
|
602
|
-
<TargetFramework>net8.0</TargetFramework>
|
|
603
|
-
</PropertyGroup>
|
|
604
|
-
<ItemGroup>
|
|
605
|
-
<PackageReference Include="Package.A" Version="1.0.0" />
|
|
606
|
-
<PackageReference Include="Transitive.Package" Version="1.0.0" />
|
|
607
|
-
</ItemGroup>
|
|
608
|
-
</Project>
|
|
609
|
-
""")
|
|
610
|
-
],
|
|
611
|
-
expectedProjects: [
|
|
612
|
-
new()
|
|
613
|
-
{
|
|
614
|
-
FilePath = "library.csproj",
|
|
615
|
-
Dependencies =
|
|
616
|
-
[
|
|
617
|
-
new("Package.A", "1.0.0", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true),
|
|
618
|
-
new("Transitive.Package", "1.0.0", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true)
|
|
619
|
-
],
|
|
620
|
-
ImportedFiles = [],
|
|
621
|
-
Properties =
|
|
622
|
-
[
|
|
623
|
-
new("TargetFramework", "net8.0", "src/library.csproj"),
|
|
624
|
-
],
|
|
625
|
-
TargetFrameworks = ["net8.0"],
|
|
626
|
-
ReferencedProjectPaths = [],
|
|
627
|
-
AdditionalFiles = [],
|
|
628
|
-
}
|
|
629
|
-
]
|
|
630
|
-
);
|
|
631
|
-
}
|
|
632
|
-
|
|
633
583
|
[Fact]
|
|
634
584
|
public async Task DependenciesCanBeDiscoveredWithoutCompiling_FromProjectWithSingleTfm()
|
|
635
585
|
{
|
|
636
586
|
using var tempDir = new TemporaryDirectory();
|
|
637
587
|
var errorSentinelPath = Path.Combine(tempDir.DirectoryPath, "error-sentinel.txt");
|
|
638
588
|
await TestDiscoverAsync(
|
|
639
|
-
useSingleRestore: true,
|
|
640
589
|
startingDirectory: "src",
|
|
641
590
|
packages: [
|
|
642
591
|
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net8.0"),
|
|
@@ -691,7 +640,6 @@ public class SdkProjectDiscoveryTests : DiscoveryWorkerTestBase
|
|
|
691
640
|
using var tempDir = new TemporaryDirectory();
|
|
692
641
|
var errorSentinelPath = Path.Combine(tempDir.DirectoryPath, "error-sentinel.txt");
|
|
693
642
|
await TestDiscoverAsync(
|
|
694
|
-
useSingleRestore: true,
|
|
695
643
|
startingDirectory: "src",
|
|
696
644
|
packages: [
|
|
697
645
|
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net8.0"),
|
|
@@ -747,19 +695,6 @@ public class SdkProjectDiscoveryTests : DiscoveryWorkerTestBase
|
|
|
747
695
|
ImmutableArray<ExpectedSdkProjectDiscoveryResult> expectedProjects,
|
|
748
696
|
MockNuGetPackage[]? packages = null
|
|
749
697
|
)
|
|
750
|
-
{
|
|
751
|
-
await TestDiscoverAsync(useSingleRestore: true, startingDirectory, projectPath, files, expectedProjects, packages);
|
|
752
|
-
await TestDiscoverAsync(useSingleRestore: false, startingDirectory, projectPath, files, expectedProjects, packages);
|
|
753
|
-
}
|
|
754
|
-
|
|
755
|
-
private static async Task TestDiscoverAsync(
|
|
756
|
-
bool useSingleRestore,
|
|
757
|
-
string startingDirectory,
|
|
758
|
-
string projectPath,
|
|
759
|
-
TestFile[] files,
|
|
760
|
-
ImmutableArray<ExpectedSdkProjectDiscoveryResult> expectedProjects,
|
|
761
|
-
MockNuGetPackage[]? packages = null
|
|
762
|
-
)
|
|
763
698
|
{
|
|
764
699
|
using var testDirectory = await TemporaryDirectory.CreateWithContentsAsync(files);
|
|
765
700
|
|
|
@@ -767,7 +702,7 @@ public class SdkProjectDiscoveryTests : DiscoveryWorkerTestBase
|
|
|
767
702
|
|
|
768
703
|
var logger = new TestLogger();
|
|
769
704
|
var fullProjectPath = Path.Combine(testDirectory.DirectoryPath, projectPath);
|
|
770
|
-
var experimentsManager = new ExperimentsManager()
|
|
705
|
+
var experimentsManager = new ExperimentsManager();
|
|
771
706
|
var projectDiscovery = await SdkProjectDiscovery.DiscoverAsync(testDirectory.DirectoryPath, Path.GetDirectoryName(fullProjectPath)!, fullProjectPath, experimentsManager, logger);
|
|
772
707
|
ValidateProjectResults(expectedProjects, projectDiscovery);
|
|
773
708
|
}
|
|
@@ -4,6 +4,7 @@ using NuGet.Versioning;
|
|
|
4
4
|
|
|
5
5
|
using NuGetUpdater.Core.Analyze;
|
|
6
6
|
using NuGetUpdater.Core.Run.ApiModel;
|
|
7
|
+
using NuGetUpdater.Core.Test.Utilities;
|
|
7
8
|
|
|
8
9
|
using Xunit;
|
|
9
10
|
|
|
@@ -379,6 +380,44 @@ public class JobTests
|
|
|
379
380
|
];
|
|
380
381
|
}
|
|
381
382
|
|
|
383
|
+
[Fact]
|
|
384
|
+
public async Task ExpandJobDirectories()
|
|
385
|
+
{
|
|
386
|
+
// arrange
|
|
387
|
+
using var tempDir = await TemporaryDirectory.CreateWithContentsAsync(
|
|
388
|
+
// file names are irrelevant, but make this function easy to use
|
|
389
|
+
("src/client/android/ui/file.txt", "contents irrelevant"),
|
|
390
|
+
("src/client/ios/ui/file.txt", "contents irrelevant"),
|
|
391
|
+
("src/legacy/winphone/ui/file.txt", "contents irrelevant"),
|
|
392
|
+
("src/server/linux/cloud/file.txt", "contents irrelevant"),
|
|
393
|
+
("src/server/windows/file.txt", "contents irrelevant")
|
|
394
|
+
);
|
|
395
|
+
var job = new Job()
|
|
396
|
+
{
|
|
397
|
+
Source = new()
|
|
398
|
+
{
|
|
399
|
+
Provider = "github",
|
|
400
|
+
Repo = "test/repo",
|
|
401
|
+
Directories = [
|
|
402
|
+
"src/server/linux", // single value
|
|
403
|
+
"src/client/*/ui", // wildcard
|
|
404
|
+
]
|
|
405
|
+
}
|
|
406
|
+
};
|
|
407
|
+
|
|
408
|
+
// act
|
|
409
|
+
var actualDirectories = job.GetAllDirectories(tempDir.DirectoryPath);
|
|
410
|
+
|
|
411
|
+
// assert - directories were expanded and original order maintained
|
|
412
|
+
var expectedDirectories = new[]
|
|
413
|
+
{
|
|
414
|
+
"/src/server/linux",
|
|
415
|
+
"/src/client/android/ui",
|
|
416
|
+
"/src/client/ios/ui"
|
|
417
|
+
}.ToImmutableArray();
|
|
418
|
+
AssertEx.Equal(expectedDirectories, actualDirectories);
|
|
419
|
+
}
|
|
420
|
+
|
|
382
421
|
private static Job CreateJob(
|
|
383
422
|
ImmutableArray<AllowedUpdate> allowedUpdates,
|
|
384
423
|
ImmutableArray<string> dependencies,
|
|
@@ -995,6 +995,148 @@ public class EndToEndTests
|
|
|
995
995
|
);
|
|
996
996
|
}
|
|
997
997
|
|
|
998
|
+
[Fact]
|
|
999
|
+
public async Task WildcardDirectory_OneOfWhichIsEmpty()
|
|
1000
|
+
{
|
|
1001
|
+
// job is run with a wildcard which will expand to
|
|
1002
|
+
// /src
|
|
1003
|
+
// /src/other
|
|
1004
|
+
// /src/project
|
|
1005
|
+
// but only `/src/project` contains a project file that can be operated on
|
|
1006
|
+
await RunAsync(
|
|
1007
|
+
packages: [
|
|
1008
|
+
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net9.0"),
|
|
1009
|
+
MockNuGetPackage.CreateSimplePackage("Some.Package", "2.0.0", "net9.0"),
|
|
1010
|
+
],
|
|
1011
|
+
job: new()
|
|
1012
|
+
{
|
|
1013
|
+
Source = new()
|
|
1014
|
+
{
|
|
1015
|
+
Provider = "github",
|
|
1016
|
+
Repo = "test/repo",
|
|
1017
|
+
Directory = "src/**/*",
|
|
1018
|
+
}
|
|
1019
|
+
},
|
|
1020
|
+
files: [
|
|
1021
|
+
("src/Directory.Build.props", "<Project />"),
|
|
1022
|
+
("src/Directory.Build.targets", "<Project />"),
|
|
1023
|
+
("src/Directory.Packages.props", """
|
|
1024
|
+
<Project>
|
|
1025
|
+
<PropertyGroup>
|
|
1026
|
+
<ManagePackageVersionsCentrally>false</ManagePackageVersionsCentrally>
|
|
1027
|
+
</PropertyGroup>
|
|
1028
|
+
</Project>
|
|
1029
|
+
"""),
|
|
1030
|
+
("src/other/not-a-nuget-file.txt", "contents irrelevant"),
|
|
1031
|
+
("src/project/project.csproj", """
|
|
1032
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
|
1033
|
+
<PropertyGroup>
|
|
1034
|
+
<TargetFramework>net9.0</TargetFramework>
|
|
1035
|
+
</PropertyGroup>
|
|
1036
|
+
<ItemGroup>
|
|
1037
|
+
<PackageReference Include="Some.Package" Version="1.0.0" />
|
|
1038
|
+
</ItemGroup>
|
|
1039
|
+
</Project>
|
|
1040
|
+
""")
|
|
1041
|
+
],
|
|
1042
|
+
discoveryWorker: null, // use real worker
|
|
1043
|
+
analyzeWorker: null, // use real worker
|
|
1044
|
+
updaterWorker: null, // use real worker
|
|
1045
|
+
expectedApiMessages: [
|
|
1046
|
+
new IncrementMetric()
|
|
1047
|
+
{
|
|
1048
|
+
Metric = "updater.started",
|
|
1049
|
+
Tags = new()
|
|
1050
|
+
{
|
|
1051
|
+
["operation"] = "group_update_all_versions"
|
|
1052
|
+
}
|
|
1053
|
+
},
|
|
1054
|
+
// no dependencies reported for `/src`
|
|
1055
|
+
// no dependencies reported for `/src/other`
|
|
1056
|
+
// but dependencies _are_ reported for `/src/project`
|
|
1057
|
+
new UpdatedDependencyList()
|
|
1058
|
+
{
|
|
1059
|
+
Dependencies = [
|
|
1060
|
+
new()
|
|
1061
|
+
{
|
|
1062
|
+
Name = "Some.Package",
|
|
1063
|
+
Version = "1.0.0",
|
|
1064
|
+
Requirements = [
|
|
1065
|
+
new()
|
|
1066
|
+
{
|
|
1067
|
+
Requirement = "1.0.0",
|
|
1068
|
+
File = "/src/project/project.csproj",
|
|
1069
|
+
Groups = ["dependencies"],
|
|
1070
|
+
}
|
|
1071
|
+
]
|
|
1072
|
+
},
|
|
1073
|
+
],
|
|
1074
|
+
DependencyFiles = [
|
|
1075
|
+
"/src/Directory.Build.props",
|
|
1076
|
+
"/src/Directory.Build.targets",
|
|
1077
|
+
"/src/Directory.Packages.props",
|
|
1078
|
+
"/src/project/project.csproj",
|
|
1079
|
+
],
|
|
1080
|
+
},
|
|
1081
|
+
new CreatePullRequest()
|
|
1082
|
+
{
|
|
1083
|
+
Dependencies = [
|
|
1084
|
+
new()
|
|
1085
|
+
{
|
|
1086
|
+
Name = "Some.Package",
|
|
1087
|
+
Version = "2.0.0",
|
|
1088
|
+
Requirements = [
|
|
1089
|
+
new()
|
|
1090
|
+
{
|
|
1091
|
+
Requirement = "2.0.0",
|
|
1092
|
+
File = "/src/project/project.csproj",
|
|
1093
|
+
Groups = ["dependencies"],
|
|
1094
|
+
Source = new()
|
|
1095
|
+
{
|
|
1096
|
+
SourceUrl = null,
|
|
1097
|
+
Type = "nuget_repo",
|
|
1098
|
+
}
|
|
1099
|
+
}
|
|
1100
|
+
],
|
|
1101
|
+
PreviousVersion = "1.0.0",
|
|
1102
|
+
PreviousRequirements = [
|
|
1103
|
+
new()
|
|
1104
|
+
{
|
|
1105
|
+
Requirement = "1.0.0",
|
|
1106
|
+
File = "/src/project/project.csproj",
|
|
1107
|
+
Groups = ["dependencies"],
|
|
1108
|
+
}
|
|
1109
|
+
],
|
|
1110
|
+
},
|
|
1111
|
+
],
|
|
1112
|
+
UpdatedDependencyFiles = [
|
|
1113
|
+
new()
|
|
1114
|
+
{
|
|
1115
|
+
Directory = "/src/project",
|
|
1116
|
+
Name = "project.csproj",
|
|
1117
|
+
Content = """
|
|
1118
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
|
1119
|
+
<PropertyGroup>
|
|
1120
|
+
<TargetFramework>net9.0</TargetFramework>
|
|
1121
|
+
</PropertyGroup>
|
|
1122
|
+
<ItemGroup>
|
|
1123
|
+
<PackageReference Include="Some.Package" Version="2.0.0" />
|
|
1124
|
+
</ItemGroup>
|
|
1125
|
+
</Project>
|
|
1126
|
+
"""
|
|
1127
|
+
},
|
|
1128
|
+
],
|
|
1129
|
+
BaseCommitSha = "TEST-COMMIT-SHA",
|
|
1130
|
+
CommitMessage = TestPullRequestCommitMessage,
|
|
1131
|
+
PrTitle = TestPullRequestTitle,
|
|
1132
|
+
PrBody = TestPullRequestBody,
|
|
1133
|
+
DependencyGroup = null,
|
|
1134
|
+
},
|
|
1135
|
+
new MarkAsProcessed("TEST-COMMIT-SHA")
|
|
1136
|
+
]
|
|
1137
|
+
);
|
|
1138
|
+
}
|
|
1139
|
+
|
|
998
1140
|
public const string TestPullRequestCommitMessage = "test-pull-request-commit-message";
|
|
999
1141
|
public const string TestPullRequestTitle = "test-pull-request-title";
|
|
1000
1142
|
public const string TestPullRequestBody = "test-pull-request-body";
|
|
@@ -147,6 +147,7 @@ public class HttpApiHandlerTests
|
|
|
147
147
|
yield return [new DependencyFileNotParseable("unused"), "record_update_job_error"];
|
|
148
148
|
yield return [new DependencyNotFound("unused"), "record_update_job_error"];
|
|
149
149
|
yield return [new JobRepoNotFound("unused"), "record_update_job_error"];
|
|
150
|
+
yield return [new OutOfDisk(), "record_update_job_error"];
|
|
150
151
|
yield return [new PrivateSourceAuthenticationFailure(["unused"]), "record_update_job_error"];
|
|
151
152
|
yield return [new PrivateSourceBadResponse(["unused"], "unused"), "record_update_job_error"];
|
|
152
153
|
yield return [new PrivateSourceTimedOut("unused"), "record_update_job_error"];
|
|
@@ -40,6 +40,13 @@ public class JobErrorBaseTests : TestBase
|
|
|
40
40
|
|
|
41
41
|
public static IEnumerable<object[]> GenerateErrorFromExceptionTestData()
|
|
42
42
|
{
|
|
43
|
+
// disk full
|
|
44
|
+
yield return
|
|
45
|
+
[
|
|
46
|
+
new IOException("No space left on device : '/path/to/directory'"),
|
|
47
|
+
new OutOfDisk(),
|
|
48
|
+
];
|
|
49
|
+
|
|
43
50
|
// something elevated to a bad response
|
|
44
51
|
yield return
|
|
45
52
|
[
|