Skip to content

Commit 6997171

Browse files
committed
add unit test for DotnetRestorer
1 parent 715cc19 commit 6997171

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
using Dotnet.Script.DependencyModel.Context;
2+
using Dotnet.Script.DependencyModel.Process;
3+
using Dotnet.Script.DependencyModel.ProjectSystem;
4+
using Dotnet.Script.Shared.Tests;
5+
using System;
6+
using System.IO;
7+
using Xunit;
8+
using Xunit.Abstractions;
9+
10+
namespace Dotnet.Script.Tests
11+
{
12+
public class DotnetRestorerTests
13+
{
14+
private PackageReference ValidPackageReferenceA => new PackageReference("Newtonsoft.Json", "12.0.3");
15+
private PackageReference ValidPackageReferenceB => new PackageReference("Moq", "4.14.5");
16+
17+
private PackageReference InvalidPackageReferenceA => new PackageReference("7c63e1f5-2248-ed31-9480-e4cb5ac322fe", "1.0.0");
18+
19+
public DotnetRestorerTests(ITestOutputHelper testOutputHelper)
20+
{
21+
testOutputHelper.Capture();
22+
}
23+
24+
[Fact]
25+
public void ShouldRestoreProjectPackageReferences()
26+
{
27+
using (var projectFolder = new DisposableFolder())
28+
{
29+
var pathToProjectFile = Path.Combine(projectFolder.Path, "script.csproj");
30+
31+
var projectFile = new ProjectFile();
32+
projectFile.PackageReferences.Add(ValidPackageReferenceA);
33+
projectFile.PackageReferences.Add(ValidPackageReferenceB);
34+
projectFile.Save(pathToProjectFile);
35+
36+
var projectFileInfo = new ProjectFileInfo(pathToProjectFile, string.Empty);
37+
38+
var logFactory = TestOutputHelper.CreateTestLogFactory();
39+
var commandRunner = new CommandRunner(logFactory);
40+
var restorer = new DotnetRestorer(commandRunner, logFactory);
41+
42+
var pathToProjectObjDirectory = Path.Combine(projectFolder.Path, "obj");
43+
44+
Assert.False(Directory.Exists(pathToProjectObjDirectory));
45+
46+
restorer.Restore(projectFileInfo, Array.Empty<string>());
47+
48+
Assert.True(Directory.Exists(pathToProjectObjDirectory));
49+
}
50+
}
51+
52+
[Fact]
53+
public void ShouldThrowExceptionOnRestoreError()
54+
{
55+
using (var projectFolder = new DisposableFolder())
56+
{
57+
var pathToProjectFile = Path.Combine(projectFolder.Path, "script.csproj");
58+
59+
var projectFile = new ProjectFile();
60+
projectFile.PackageReferences.Add(ValidPackageReferenceA);
61+
projectFile.PackageReferences.Add(InvalidPackageReferenceA);
62+
projectFile.PackageReferences.Add(ValidPackageReferenceB);
63+
projectFile.Save(pathToProjectFile);
64+
65+
var projectFileInfo = new ProjectFileInfo(pathToProjectFile, string.Empty);
66+
67+
var logFactory = TestOutputHelper.CreateTestLogFactory();
68+
var commandRunner = new CommandRunner(logFactory);
69+
var restorer = new DotnetRestorer(commandRunner, logFactory);
70+
71+
var exception = Assert.Throws<Exception>(() =>
72+
{
73+
restorer.Restore(projectFileInfo, Array.Empty<string>());
74+
});
75+
76+
Assert.Contains("NU1101", exception.Message); // unable to find package
77+
}
78+
}
79+
}
80+
}

0 commit comments

Comments
 (0)