public void Should_Throw_If_Package_Directory_Is_Null() { // Given var fileSystem = Substitute.For <IFileSystem>(); var log = Substitute.For <ICakeLog>(); var assemblyCompatibilityFilter = Substitute.For <INuGetAssemblyCompatibilityFilter>(); var environment = Substitute.For <ICakeEnvironment>(); var locator = new NuGetPackageAssembliesLocator(fileSystem, log, assemblyCompatibilityFilter, environment); // When var result = Record.Exception(() => locator.FindAssemblies(null)); // Then Assert.IsArgumentNullException(result, "packageDirectory"); }
public void Should_Return_Empty_If_Package_Directory_Does_Not_Exist() { // Given var environment = FakeEnvironment.CreateUnixEnvironment(); var fileSystem = new FakeFileSystem(environment); var log = Substitute.For <ICakeLog>(); var assemblyCompatibilityFilter = Substitute.For <INuGetAssemblyCompatibilityFilter>(); var locator = new NuGetPackageAssembliesLocator(fileSystem, log, assemblyCompatibilityFilter, environment); var addinDirectory = DirectoryPath.FromString("/NonExistentDir"); // When var result = locator.FindAssemblies(addinDirectory); // Then Assert.Empty(result); }
public void Should_Throw_If_Package_Directory_Is_Not_Absolute() { // Given var environment = FakeEnvironment.CreateUnixEnvironment(); var fileSystem = new FakeFileSystem(environment); var log = Substitute.For <ICakeLog>(); var assemblyCompatibilityFilter = Substitute.For <INuGetAssemblyCompatibilityFilter>(); var locator = new NuGetPackageAssembliesLocator(fileSystem, log, assemblyCompatibilityFilter, environment); var addinDirectory = DirectoryPath.FromString("RelativeDirPath"); Assert.True(addinDirectory.IsRelative); // When var result = Record.Exception(() => locator.FindAssemblies(addinDirectory)); // Then Assert.IsCakeException(result, "Package directory (RelativeDirPath) must be an absolute path."); }
public void Should_Return_Compatible_Packages_For_NuGet_Compliant_Package() { // Given var targetFramework = new FrameworkName(".NETFramework,Version=v4.5"); var environment = FakeEnvironment.CreateUnixEnvironment(); environment.SetTargetFramework(targetFramework); var log = Substitute.For <ICakeLog>(); var fileSystem = new FakeFileSystem(environment); var packageDirectory = fileSystem.CreateDirectory("/Working/addins/MyPackage"); fileSystem.CreateFile(packageDirectory.Path.CombineWithFilePath("lib/net40/myassembly1.dll")); fileSystem.CreateFile(packageDirectory.Path.CombineWithFilePath("lib/net40/myassembly2.dll")); var compatibleDll1 = fileSystem.CreateFile(packageDirectory.Path.CombineWithFilePath("lib/net45/myassembly1.dll")); var compatibleDll2 = fileSystem.CreateFile(packageDirectory.Path.CombineWithFilePath("lib/net45/myassembly2.dll")); fileSystem.CreateFile(packageDirectory.Path.CombineWithFilePath("lib/net452/myassembly1.dll")); fileSystem.CreateFile(packageDirectory.Path.CombineWithFilePath("lib/net452/myassembly2.dll")); var assemblyCompatibilityFilter = Substitute.For <INuGetAssemblyCompatibilityFilter>(); assemblyCompatibilityFilter.FilterCompatibleAssemblies(targetFramework, Arg.Any <IEnumerable <FilePath> >()) .Returns(ci => new FilePath[] { "lib/net45/myassembly1.dll", "lib/net45/myassembly2.dll" }); var locator = new NuGetPackageAssembliesLocator(fileSystem, log, assemblyCompatibilityFilter, environment); // When var result = locator.FindAssemblies(packageDirectory.Path); // Then Assert.Equal(new List <IFile> { compatibleDll1, compatibleDll2 }.AsReadOnly(), result); }