Skip to content

Commit 0451894

Browse files
committed
C#: Handle special case when no feeds are reachable.
1 parent 0511243 commit 0451894

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ internal sealed partial class NugetPackageRestorer : IDisposable
2727
private readonly IDiagnosticsWriter diagnosticsWriter;
2828
private readonly DependencyDirectory legacyPackageDirectory;
2929
private readonly DependencyDirectory missingPackageDirectory;
30+
private readonly DependencyDirectory emptyPackageDirectory;
3031
private readonly ILogger logger;
3132
private readonly ICompilationInfoContainer compilationInfoContainer;
3233
private readonly Lazy<bool> lazyCheckNugetFeedResponsiveness = new(() => EnvironmentVariables.GetBooleanOptOut(EnvironmentVariableNames.CheckNugetFeedResponsiveness));
@@ -56,6 +57,7 @@ public NugetPackageRestorer(
5657
PackageDirectory = new DependencyDirectory("packages", "package", logger);
5758
legacyPackageDirectory = new DependencyDirectory("legacypackages", "legacy package", logger);
5859
missingPackageDirectory = new DependencyDirectory("missingpackages", "missing package", logger);
60+
emptyPackageDirectory = new DependencyDirectory("empty", "empty package", logger);
5961
}
6062

6163
public string? TryRestore(string package)
@@ -323,6 +325,12 @@ private IEnumerable<string> RestoreSolutions(string? nugetSources, out Dependenc
323325

324326
private string? MakeRestoreSourcesArgument(IEnumerable<string> feeds)
325327
{
328+
// If there are no feeds, we want to override any default feeds that `dotnet restore` would use by passing a dummy source argument.
329+
if (!feeds.Any())
330+
{
331+
return $" -s \"{emptyPackageDirectory.DirInfo.FullName}\"";
332+
}
333+
326334
// Add package sources. If any are present, they override all sources specified in
327335
// the configuration file(s).
328336
var feedArgs = new StringBuilder();
@@ -973,6 +981,7 @@ public void Dispose()
973981
PackageDirectory?.Dispose();
974982
legacyPackageDirectory?.Dispose();
975983
missingPackageDirectory?.Dispose();
984+
emptyPackageDirectory?.Dispose();
976985
}
977986

978987
/// <summary>

0 commit comments

Comments
 (0)