public void DoNotReuseExpandedFolderIfLastModifedTimeChanged() { // Arrange var ms = GetPackageStream(); var fileSystem = new MockFileSystem("x:\\"); fileSystem.AddFile("pam.nupkg", ms); var expandedFileSystem = new MockFileSystem("y:\\"); // Act var ozp1 = new TestableOptimizedZipPackage(fileSystem, "pam.nupkg", expandedFileSystem, forceUseCache: true); ozp1.GetFiles().ToList(); // add some delay to make sure the time from DateTime.Now will be different System.Threading.Thread.Sleep(100); // now add the file again to simulate file change ms.Seek(0, SeekOrigin.Begin); fileSystem.AddFile("pam.nupkg", ms); var ozp2 = new TestableOptimizedZipPackage(fileSystem, "pam.nupkg", expandedFileSystem, forceUseCache: true); ozp2.GetFiles().ToList(); // Assert Assert.True(ozp1.HasCalledExpandedFolderPath); Assert.True(ozp2.HasCalledExpandedFolderPath); }
public void CallingGetFilesTwiceDoesNotExpandFilesIntoSpecifiedFileSystemAgain() { // Arrange var ms = GetPackageStream(); var fileSystem = new MockFileSystem("x:\\"); fileSystem.AddFile("pam.nupkg", ms); var expandedFileSystem = new MockFileSystem("y:\\"); var ozp = new TestableOptimizedZipPackage(fileSystem, "pam.nupkg", expandedFileSystem); ozp.GetFiles().ToList(); Assert.True(expandedFileSystem.FileExists("random\\content\\foo")); Assert.True(expandedFileSystem.FileExists("random\\lib\\40\\A.dll")); ozp.Reset(); // Act ozp.GetFiles().ToList(); // Assert Assert.False(ozp.HasCalledExpandedFolderPath); }
public void AssemblyReferencesIsFilteredCorrectlyWhenReferenceIsEmpty() { // Arrange var files = new IPackageFile[] { CreatePackageFile(@"lib\net40\one.dll"), }; var references = new PackageReferenceSet[] { }; var ms = GetPackageStream(files, references); var fileSystem = new MockFileSystem("x:\\"); fileSystem.AddFile("pam.nupkg", ms); var expandedFileSystem = new MockFileSystem("y:\\"); var ozp = new TestableOptimizedZipPackage(fileSystem, "pam.nupkg", expandedFileSystem); // Act var assemblies = ozp.AssemblyReferences.ToList(); // Assert Assert.Equal(1, assemblies.Count); Assert.Equal(@"lib\net40\one.dll", assemblies[0].Path); }
public void DoNotOverwriteExistingFilesWhileExpandingFilesIfContentsAreEqual() { // Arrange var ms = GetPackageStream(); var fileSystem = new MockFileSystem("x:\\"); fileSystem.AddFile("pam.nupkg", ms); var expandedFileSystem = new Mock <MockFileSystem>("y:\\") { CallBase = true }; expandedFileSystem.Object.AddFile("random\\content\\foo", "content\\foo"); expandedFileSystem.Setup(f => f.CreateFile("random\\content\\foo")) .Throws(new InvalidOperationException()); var ozp = new TestableOptimizedZipPackage( fileSystem, "pam.nupkg", expandedFileSystem.Object); // Act ozp.GetFiles().ToList(); // Assert Assert.True(expandedFileSystem.Object.FileExists("random\\content\\foo")); Assert.True(expandedFileSystem.Object.FileExists("random\\lib\\40\\A.dll")); Assert.Equal("content\\foo", expandedFileSystem.Object.ReadAllText("random\\content\\foo")); }
public void AssemblyReferencesIsFilteredCorrectlyAccordingToTargetFramework() { // Arrange var files = new IPackageFile[] { CreatePackageFile(@"lib\net40\one.dll"), CreatePackageFile(@"lib\net40\two.dll"), CreatePackageFile(@"lib\sl30\one.dll"), CreatePackageFile(@"lib\sl30\two.dll"), CreatePackageFile(@"lib\net45\foo.dll"), CreatePackageFile(@"lib\net45\bar.dll") }; var references = new PackageReferenceSet[] { new PackageReferenceSet( new FrameworkName("Silverlight, Version=2.0"), new [] { "two.dll" }), new PackageReferenceSet( new FrameworkName(".NET, Version=4.0"), new string[0]), new PackageReferenceSet( new FrameworkName(".NET, Version=4.5"), new string[] { "foo.dll", "bar.dll" }), }; var ms = GetPackageStream(files, references); var fileSystem = new MockFileSystem("x:\\"); fileSystem.AddFile("pam.nupkg", ms); var expandedFileSystem = new MockFileSystem("y:\\"); var ozp = new TestableOptimizedZipPackage(fileSystem, "pam.nupkg", expandedFileSystem); // Act var assemblies = ozp.AssemblyReferences.OrderBy(p => p.Path).ToList(); // Assert Assert.Equal(3, assemblies.Count); Assert.Equal(@"lib\net45\bar.dll", assemblies[0].Path); Assert.Equal(@"lib\net45\foo.dll", assemblies[1].Path); Assert.Equal(@"lib\sl30\two.dll", assemblies[2].Path); }
public void CallingCtorDoesNotExpandFiles() { // Arrange var ms = GetPackageStream(); var fileSystem = new MockFileSystem("x:\\"); fileSystem.AddFile("pam.nupkg", ms); var expandedFileSystem = new MockFileSystem(); // Act var ozp = new TestableOptimizedZipPackage(fileSystem, "pam.nupkg", expandedFileSystem); // Assert Assert.False(ozp.HasCalledExpandedFolderPath); Assert.Equal(0, expandedFileSystem.Paths.Count); }
public void CallingGetFilesExpandFilesIntoSpecifiedFileSystem() { // Arrange var ms = GetPackageStream(); var fileSystem = new MockFileSystem("x:\\"); fileSystem.AddFile("pam.nupkg", ms); var expandedFileSystem = new MockFileSystem("y:\\"); var ozp = new TestableOptimizedZipPackage(fileSystem, "pam.nupkg", expandedFileSystem); // Act var files = ozp.GetFiles().ToList(); // Assert Assert.Equal(2, files.Count); Assert.True(expandedFileSystem.FileExists("random\\content\\foo")); Assert.True(expandedFileSystem.FileExists("random\\lib\\40\\A.dll")); }
public void IsValidIsTrueWhenNupkgFileIsDeleted() { // Arrange var ms = GetPackageStream(); var fileSystem = new MockFileSystem("x:\\"); fileSystem.AddFile("pam.nupkg", ms); var expandedFileSystem = new MockFileSystem("y:\\"); var ozp = new TestableOptimizedZipPackage(fileSystem, "pam.nupkg", expandedFileSystem); Assert.True(ozp.IsValid); // Act fileSystem.DeleteFile("pam.nupkg"); // Assert Assert.False(ozp.IsValid); }
public void DoNotSkipExistingFilesWhileExpandingFiles() { // Arrange var ms = GetPackageStream(); var fileSystem = new MockFileSystem("x:\\"); fileSystem.AddFile("pam.nupkg", ms); var expandedFileSystem = new MockFileSystem("y:\\"); expandedFileSystem.AddFile("random\\content\\foo", "happy new year"); var ozp = new TestableOptimizedZipPackage(fileSystem, "pam.nupkg", expandedFileSystem); // Act ozp.GetFiles().ToList(); // Assert Assert.True(expandedFileSystem.FileExists("random\\content\\foo")); Assert.True(expandedFileSystem.FileExists("random\\lib\\40\\A.dll")); Assert.Equal("content\\foo", expandedFileSystem.ReadAllText("random\\content\\foo")); }
public void AssemblyReferencesIsNotFilteredAccordingToTargetFramework() { // Arrange var files = new IPackageFile[] { CreatePackageFile(@"lib\net40\one.dll"), CreatePackageFile(@"lib\net40\two.dll"), CreatePackageFile(@"lib\sl30\one.dll"), CreatePackageFile(@"lib\sl30\two.dll"), CreatePackageFile(@"lib\net45\foo.dll"), CreatePackageFile(@"lib\net45\bar.dll") }; var references = new PackageReferenceSet[] { new PackageReferenceSet( new FrameworkName("Silverlight, Version=2.0"), new [] { "two.dll" }), new PackageReferenceSet( new FrameworkName(".NET, Version=4.5"), new string[] { "foo.dll", "bar.dll" }), }; var ms = GetPackageStream(files, references); var fileSystem = new MockFileSystem("x:\\"); fileSystem.AddFile("pam.nupkg", ms); var expandedFileSystem = new MockFileSystem("y:\\"); var ozp = new TestableOptimizedZipPackage(fileSystem, "pam.nupkg", expandedFileSystem); // Act var assemblies = ozp.AssemblyReferences.OrderBy(p => p.Path).ToList(); // Assert Assert.Equal(6, assemblies.Count); Assert.Equal(@"lib\net40\one.dll", assemblies[0].Path); Assert.Equal(@"lib\net40\two.dll", assemblies[1].Path); Assert.Equal(@"lib\net45\bar.dll", assemblies[2].Path); Assert.Equal(@"lib\net45\foo.dll", assemblies[3].Path); Assert.Equal(@"lib\sl30\one.dll", assemblies[4].Path); Assert.Equal(@"lib\sl30\two.dll", assemblies[5].Path); }
public void DoNotOverwriteExistingFilesWhileExpandingFilesIfContentsAreEqual() { // Arrange var ms = GetPackageStream(); var fileSystem = new MockFileSystem("x:\\"); fileSystem.AddFile("pam.nupkg", ms); var expandedFileSystem = new Mock<MockFileSystem>("y:\\") { CallBase = true }; expandedFileSystem.Object.AddFile("random\\content\\foo", "content\\foo"); expandedFileSystem.Setup(f => f.CreateFile("random\\content\\foo")) .Throws(new InvalidOperationException()); var ozp = new TestableOptimizedZipPackage( fileSystem, "pam.nupkg", expandedFileSystem.Object); // Act ozp.GetFiles().ToList(); // Assert Assert.True(expandedFileSystem.Object.FileExists("random\\content\\foo")); Assert.True(expandedFileSystem.Object.FileExists("random\\lib\\40\\A.dll")); Assert.Equal("content\\foo", expandedFileSystem.Object.ReadAllText("random\\content\\foo")); }
public void AssemblyReferencesIsFilteredCorrectlyWithOnlyNullTargetFramework() { // Arrange var files = new IPackageFile[] { CreatePackageFile(@"lib\net40\one.dll"), CreatePackageFile(@"lib\net40\two.dll"), CreatePackageFile(@"lib\sl30\one.dll"), CreatePackageFile(@"lib\sl30\two.dll"), CreatePackageFile(@"lib\net45\foo.dll"), CreatePackageFile(@"lib\net45\bar.dll") }; var references = new PackageReferenceSet[] { new PackageReferenceSet( null, new [] { "two.dll", "bar.dll" }), }; var ms = GetPackageStream(files, references); var fileSystem = new MockFileSystem("x:\\"); fileSystem.AddFile("pam.nupkg", ms); var expandedFileSystem = new MockFileSystem("y:\\"); var ozp = new TestableOptimizedZipPackage(fileSystem, "pam.nupkg", expandedFileSystem); // Act var assemblies = ozp.AssemblyReferences.OrderBy(p => p.Path).ToList(); // Assert Assert.Equal(3, assemblies.Count); Assert.Equal(@"lib\net40\two.dll", assemblies[0].Path); Assert.Equal(@"lib\net45\bar.dll", assemblies[1].Path); Assert.Equal(@"lib\sl30\two.dll", assemblies[2].Path); }