Skip to content

Commit fee5b50

Browse files
committed
updated based on PR comments
1 parent 8efadc1 commit fee5b50

4 files changed

Lines changed: 143 additions & 129 deletions

File tree

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace ScriptCs.Package
1+
namespace ScriptCs
22
{
33
public static class Constants
44
{

src/ScriptCs.Core/PackageAssemblyResolver.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@
22
using System.ComponentModel.Composition;
33
using System.IO;
44
using System.Linq;
5-
using ScriptCs;
65
using ScriptCs.Exceptions;
76
using ScriptCs.Package;
8-
using Constants = ScriptCs.Package.Constants;
97

108
namespace ScriptCs
119
{

src/ScriptCs.Core/ScriptCs.Core.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
<Compile Include="IScriptExecutor.cs" />
6666
<Compile Include="ISession.cs" />
6767
<Compile Include="PackageAssemblyResolver.cs" />
68-
<Compile Include="Package\Constants.cs" />
68+
<Compile Include="Constants.cs" />
6969
<Compile Include="Package\IPackageContainer.cs" />
7070
<Compile Include="Package\IPackageObject.cs" />
7171
<Compile Include="Package\IPackageReference.cs" />

test/ScriptCs.Core.Tests/PackageAssemblyResolverTests.cs

Lines changed: 141 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -13,133 +13,149 @@ namespace ScriptCs.Core.Tests
1313
{
1414
public class PackageAssemblyResolverTests
1515
{
16-
private readonly Mock<IFileSystem> _filesystem;
17-
private readonly Mock<IPackageObject> _package;
18-
private readonly Mock<IPackageContainer> _packageContainer;
19-
private readonly List<IPackageReference> _packageIds;
20-
private string _workingDirectory;
21-
22-
public PackageAssemblyResolverTests()
23-
{
24-
_workingDirectory = "c:\\test";
25-
26-
_filesystem = new Mock<IFileSystem>();
27-
_filesystem.SetupGet(i => i.CurrentDirectory).Returns("c:\\test");
28-
_filesystem.Setup(i => i.DirectoryExists(It.IsAny<string>())).Returns(true);
29-
_filesystem.Setup(i => i.FileExists(It.IsAny<string>())).Returns(true);
30-
31-
_package = new Mock<IPackageObject>();
32-
_package.Setup(i => i.GetCompatibleDlls(It.IsAny<FrameworkName>())).Returns(new List<string> { "test.dll", "test2.dll" });
33-
_package.SetupGet(i => i.Id).Returns("id");
34-
_package.SetupGet(i => i.Version).Returns("3.0");
35-
_package.SetupGet(i => i.FullName).Returns(_package.Object.Id + "." + _package.Object.Version);
36-
37-
_packageIds = new List<IPackageReference> { new PackageReference("testId", VersionUtility.ParseFrameworkName("net40")) };
38-
39-
_packageContainer = new Mock<IPackageContainer>();
40-
_packageContainer.Setup(i => i.FindReferences(It.IsAny<string>())).Returns(_packageIds);
41-
_packageContainer.Setup(i => i.FindPackage(It.IsAny<string>(), It.IsAny<string>())).Returns(_package.Object);
42-
}
43-
44-
[Fact]
45-
public void WhenPackageIsMatchedItsMatchingDllsShouldBeReturned()
46-
{
47-
var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);
48-
49-
var found = resolver.GetAssemblyNames(_workingDirectory).ToList();
50-
51-
found.ShouldNotBeEmpty();
52-
found.Count.ShouldEqual(2);
53-
}
54-
55-
[Fact]
56-
public void WhenManyPackagesAreMatchedAllMatchingDllsShouldBeReturned()
57-
{
58-
var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);
59-
_packageIds.Add(new PackageReference("testId2", VersionUtility.ParseFrameworkName("net40")));
60-
61-
var found = resolver.GetAssemblyNames(_workingDirectory).ToList();
62-
63-
found.ShouldNotBeEmpty();
64-
found.Count.ShouldEqual(4);
65-
}
66-
67-
[Fact]
68-
public void WhenPackageIsMatchedItsNonMatchingDllsShouldBeExcluded()
69-
{
70-
_package.Setup(i => i.GetCompatibleDlls(It.Is<FrameworkName>(x => x.FullName == VersionUtility.ParseFrameworkName("net40").FullName))).Returns(new List<string> { "test.dll" });
71-
72-
var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);
73-
74-
var found = resolver.GetAssemblyNames(_workingDirectory).ToList();
75-
76-
found.ShouldNotBeEmpty();
77-
found.Count.ShouldEqual(1);
78-
}
79-
80-
[Fact]
81-
public void WhenManyPackagesAreMatchedAllNonMatchingDllsShouldBeExcluded()
82-
{
83-
_package.Setup(i => i.GetCompatibleDlls(It.Is<FrameworkName>(x => x.FullName == VersionUtility.ParseFrameworkName("net40").FullName))).Returns(new List<string> { "test.dll" });
84-
_packageIds.Add(new PackageReference("testId2", VersionUtility.ParseFrameworkName("net40")));
85-
86-
var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);
87-
88-
var found = resolver.GetAssemblyNames(_workingDirectory).ToList();
89-
90-
found.ShouldNotBeEmpty();
91-
found.Count.ShouldEqual(2);
92-
}
93-
94-
[Fact]
95-
public void WhenDllsAreMatchedDllFilePathsAreCorrectlyConcatenated()
96-
{
97-
var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);
98-
99-
var found = resolver.GetAssemblyNames(_workingDirectory);
100-
101-
found.First().ShouldEqual("c:\\test\\packages\\id.3.0\\test.dll");
102-
found.ElementAt(1).ShouldEqual("c:\\test\\packages\\id.3.0\\test2.dll");
103-
}
104-
105-
[Fact]
106-
public void WhenNoPackagesAreFoundShouldThrowArgumentEx()
107-
{
108-
_packageContainer.Setup(i => i.FindPackage(It.IsAny<string>(), It.IsAny<string>())).Returns<List<IPackageObject>>(null);
109-
110-
var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);
111-
112-
Assert.Throws<MissingAssemblyException>(() => resolver.GetAssemblyNames(_workingDirectory));
113-
}
114-
115-
[Fact]
116-
public void WhenPackagesAreFoundButNoMatchingDllsExistShouldThrowArgumentEx()
117-
{
118-
_package.Setup(i => i.GetCompatibleDlls(It.IsAny<FrameworkName>())).Returns<List<string>>(null);
119-
120-
var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);
121-
122-
Assert.Throws<MissingAssemblyException>(() => resolver.GetAssemblyNames(_workingDirectory));
123-
}
124-
125-
[Fact]
126-
public void WhenPackageDirectoryDoesNotExistShouldReturnEmptyPackagesList()
127-
{
128-
var resolver = new PackageAssemblyResolver(_filesystem.Object, new Mock<IPackageContainer>().Object);
129-
_filesystem.Setup(i => i.DirectoryExists(It.IsAny<string>())).Returns(false);
130-
131-
var found = resolver.GetAssemblyNames(_workingDirectory);
132-
found.ShouldBeEmpty();
133-
}
134-
135-
[Fact]
136-
public void WhenPackagesConfigDoesNotExistShouldReturnEmptyPackagesList()
16+
public class GetAssemblyNamesMethod
13717
{
138-
var resolver = new PackageAssemblyResolver(_filesystem.Object, new Mock<IPackageContainer>().Object);
139-
_filesystem.Setup(i => i.FileExists(It.IsAny<string>())).Returns(false);
18+
private readonly Mock<IFileSystem> _filesystem;
19+
private readonly Mock<IPackageObject> _package;
20+
private readonly Mock<IPackageContainer> _packageContainer;
21+
private readonly List<IPackageReference> _packageIds;
22+
private readonly string _workingDirectory;
23+
24+
public GetAssemblyNamesMethod()
25+
{
26+
_workingDirectory = "c:\\test";
27+
28+
_filesystem = new Mock<IFileSystem>();
29+
_filesystem.SetupGet(i => i.CurrentDirectory).Returns("c:\\test");
30+
_filesystem.Setup(i => i.DirectoryExists(It.IsAny<string>())).Returns(true);
31+
_filesystem.Setup(i => i.FileExists(It.IsAny<string>())).Returns(true);
32+
33+
_package = new Mock<IPackageObject>();
34+
_package.Setup(i => i.GetCompatibleDlls(It.IsAny<FrameworkName>()))
35+
.Returns(new List<string> {"test.dll", "test2.dll"});
36+
_package.SetupGet(i => i.Id).Returns("id");
37+
_package.SetupGet(i => i.Version).Returns("3.0");
38+
_package.SetupGet(i => i.FullName).Returns(_package.Object.Id + "." + _package.Object.Version);
39+
40+
_packageIds = new List<IPackageReference>
41+
{
42+
new PackageReference("testId", VersionUtility.ParseFrameworkName("net40"))
43+
};
44+
45+
_packageContainer = new Mock<IPackageContainer>();
46+
_packageContainer.Setup(i => i.FindReferences(It.IsAny<string>())).Returns(_packageIds);
47+
_packageContainer.Setup(i => i.FindPackage(It.IsAny<string>(), It.IsAny<string>())).Returns(_package.Object);
48+
}
49+
50+
[Fact]
51+
public void WhenPackageIsMatchedItsMatchingDllsShouldBeReturned()
52+
{
53+
var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);
54+
55+
var found = resolver.GetAssemblyNames(_workingDirectory).ToList();
56+
57+
found.ShouldNotBeEmpty();
58+
found.Count.ShouldEqual(2);
59+
}
60+
61+
[Fact]
62+
public void WhenManyPackagesAreMatchedAllMatchingDllsShouldBeReturned()
63+
{
64+
var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);
65+
_packageIds.Add(new PackageReference("testId2", VersionUtility.ParseFrameworkName("net40")));
66+
67+
var found = resolver.GetAssemblyNames(_workingDirectory).ToList();
68+
69+
found.ShouldNotBeEmpty();
70+
found.Count.ShouldEqual(4);
71+
}
72+
73+
[Fact]
74+
public void WhenPackageIsMatchedItsNonMatchingDllsShouldBeExcluded()
75+
{
76+
_package.Setup(
77+
i =>
78+
i.GetCompatibleDlls(
79+
It.Is<FrameworkName>(x => x.FullName == VersionUtility.ParseFrameworkName("net40").FullName)))
80+
.Returns(new List<string> {"test.dll"});
81+
82+
var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);
83+
84+
var found = resolver.GetAssemblyNames(_workingDirectory).ToList();
85+
86+
found.ShouldNotBeEmpty();
87+
found.Count.ShouldEqual(1);
88+
}
89+
90+
[Fact]
91+
public void WhenManyPackagesAreMatchedAllNonMatchingDllsShouldBeExcluded()
92+
{
93+
_package.Setup(
94+
i =>
95+
i.GetCompatibleDlls(
96+
It.Is<FrameworkName>(x => x.FullName == VersionUtility.ParseFrameworkName("net40").FullName)))
97+
.Returns(new List<string> {"test.dll"});
98+
_packageIds.Add(new PackageReference("testId2", VersionUtility.ParseFrameworkName("net40")));
99+
100+
var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);
101+
102+
var found = resolver.GetAssemblyNames(_workingDirectory).ToList();
103+
104+
found.ShouldNotBeEmpty();
105+
found.Count.ShouldEqual(2);
106+
}
107+
108+
[Fact]
109+
public void WhenDllsAreMatchedDllFilePathsAreCorrectlyConcatenated()
110+
{
111+
var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);
112+
113+
var found = resolver.GetAssemblyNames(_workingDirectory);
114+
115+
found.First().ShouldEqual("c:\\test\\packages\\id.3.0\\test.dll");
116+
found.ElementAt(1).ShouldEqual("c:\\test\\packages\\id.3.0\\test2.dll");
117+
}
118+
119+
[Fact]
120+
public void WhenNoPackagesAreFoundShouldThrowArgumentEx()
121+
{
122+
_packageContainer.Setup(i => i.FindPackage(It.IsAny<string>(), It.IsAny<string>()))
123+
.Returns<List<IPackageObject>>(null);
124+
125+
var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);
126+
127+
Assert.Throws<MissingAssemblyException>(() => resolver.GetAssemblyNames(_workingDirectory));
128+
}
129+
130+
[Fact]
131+
public void WhenPackagesAreFoundButNoMatchingDllsExistShouldThrowArgumentEx()
132+
{
133+
_package.Setup(i => i.GetCompatibleDlls(It.IsAny<FrameworkName>())).Returns<List<string>>(null);
134+
135+
var resolver = new PackageAssemblyResolver(_filesystem.Object, _packageContainer.Object);
136+
137+
Assert.Throws<MissingAssemblyException>(() => resolver.GetAssemblyNames(_workingDirectory));
138+
}
139+
140+
[Fact]
141+
public void WhenPackageDirectoryDoesNotExistShouldReturnEmptyPackagesList()
142+
{
143+
var resolver = new PackageAssemblyResolver(_filesystem.Object, new Mock<IPackageContainer>().Object);
144+
_filesystem.Setup(i => i.DirectoryExists(It.IsAny<string>())).Returns(false);
145+
146+
var found = resolver.GetAssemblyNames(_workingDirectory);
147+
found.ShouldBeEmpty();
148+
}
140149

141-
var found = resolver.GetAssemblyNames(_workingDirectory);
142-
found.ShouldBeEmpty();
150+
[Fact]
151+
public void WhenPackagesConfigDoesNotExistShouldReturnEmptyPackagesList()
152+
{
153+
var resolver = new PackageAssemblyResolver(_filesystem.Object, new Mock<IPackageContainer>().Object);
154+
_filesystem.Setup(i => i.FileExists(It.IsAny<string>())).Returns(false);
155+
156+
var found = resolver.GetAssemblyNames(_workingDirectory);
157+
found.ShouldBeEmpty();
158+
}
143159
}
144160
}
145161
}

0 commit comments

Comments
 (0)