예제 #1
0
            public void InsertBeforeClearTag()
            {
                //arrange
                string configContent  = @"<configuration><system.web><compilation><assemblies><clear /></assemblies></compilation></system.web></configuration>";
                string finalWebConfig = "";
                var    mockFileSystem = new Mock <global::NuGet.IFileSystem>(MockBehavior.Strict);

                mockFileSystem.Setup(fs => fs.FileExists("web.config")).Returns(true);
                mockFileSystem.Setup(fs => fs.Root).Returns("");
                mockFileSystem.Setup(fs => fs.OpenFile("web.config")).Returns(new MemoryStream(System.Text.Encoding.Default.GetBytes(configContent)));
                // and we need to intercept the result when it is saved
                mockFileSystem.Setup(fs => fs.AddFile("web.config", It.IsAny <Stream>()))
                .Callback <string, Stream>((wc, stream) =>
                {
                    finalWebConfig = new StreamReader(stream).ReadToEnd();
                });

                // act
                NuGetWebProjectSystem.AddReferencesToConfig(mockFileSystem.Object, "FooAssembly");

                // assert
                string expected = @"<configuration><system.web><compilation><assemblies><add assembly=""FooAssembly"" /><clear /></assemblies></compilation></system.web></configuration>";

                Assert.Equal <string>(expected, finalWebConfig);
            }
예제 #2
0
            public void EmptyReferencePath()
            {
                var mockFileSystem = new Mock <IFileSystem>(MockBehavior.Strict);

                NuGetWebProjectSystem projSystem = new NuGetWebProjectSystem(@"C:\TestRoot", mockFileSystem.Object, Dependencies.AssemblyResolver);

                Assert.Throws <ArgumentNullException>(() => projSystem.AddReference(null, Stream.Null));
                Assert.Throws <ArgumentNullException>(() => projSystem.AddReference(@"", Stream.Null));
            }
예제 #3
0
            public void FileDoesNotExist()
            {
                var mockFileSystem = new Mock <IFileSystem>(MockBehavior.Strict);

                mockFileSystem.Setup(fs => fs.FileExists(@"C:\TestRoot\packages\DoesNotExist.1.0\lib\DoesNotExist.dll")).Returns(false);

                NuGetWebProjectSystem projSystem = new NuGetWebProjectSystem(@"C:\TestRoot", mockFileSystem.Object, Dependencies.AssemblyResolver);

                Assert.Throws <FileNotFoundException>(() => projSystem.GetReferenceFilesToAdd(@"TestRoot\packages\DoesNotExist.1.0\lib\DoesNotExist.dll"));
            }
예제 #4
0
            public void EmptyWebConfig()
            {
                //arrange
                string configContent  = @"";
                var    mockFileSystem = new Mock <global::NuGet.IFileSystem>(MockBehavior.Strict);

                mockFileSystem.Setup(fs => fs.FileExists("web.config")).Returns(true);
                mockFileSystem.Setup(fs => fs.Root).Returns("");
                mockFileSystem.Setup(fs => fs.OpenFile("web.config")).Returns(new MemoryStream(System.Text.Encoding.Unicode.GetBytes(configContent)));

                Assert.Throws <XmlException>(() => NuGetWebProjectSystem.AddReferencesToConfig(mockFileSystem.Object, "FooAssembly"));
            }
예제 #5
0
            public void NoChangeIfAssemblyExists()
            {
                //arrange
                string configContent  = @"<configuration><system.web><compilation><assemblies><add assembly=""FooAssembly"" /></assemblies></compilation></system.web></configuration>";
                var    mockFileSystem = new Mock <global::NuGet.IFileSystem>(MockBehavior.Strict);

                mockFileSystem.Setup(fs => fs.FileExists("web.config")).Returns(true);
                mockFileSystem.Setup(fs => fs.Root).Returns("");
                mockFileSystem.Setup(fs => fs.OpenFile("web.config")).Returns(new MemoryStream(System.Text.Encoding.Default.GetBytes(configContent)));

                // act
                // assert: Moq's strict behavior will verify AddFile is not called
                NuGetWebProjectSystem.AddReferencesToConfig(mockFileSystem.Object, "FooAssembly");
            }
예제 #6
0
            public void NoWebConfig()
            {
                string finalWebConfig = "";
                var    mockFileSystem = new Mock <global::NuGet.IFileSystem>(MockBehavior.Strict);

                mockFileSystem.Setup(fs => fs.FileExists("web.config")).Returns(false);
                mockFileSystem.Setup(fs => fs.Root).Returns("");
                mockFileSystem.Setup(fs => fs.AddFile("web.config", It.Is <Stream>((s) => true)))
                .Callback <string, Stream>((wc, stream) =>
                {
                    finalWebConfig = new StreamReader(stream).ReadToEnd();
                });

                NuGetWebProjectSystem.AddReferencesToConfig(mockFileSystem.Object, "FooAssembly");

                string expected = @"<configuration><system.web><compilation><assemblies><add assembly=""FooAssembly"" /></assemblies></compilation></system.web></configuration>";

                Assert.Equal <string>(expected, finalWebConfig);
            }
예제 #7
0
            public void SingleAssembly()
            {
                // arrange
                var    mockFileSystem = new Mock <IFileSystem>(MockBehavior.Strict);
                string mockDirectory  = @"C:\TestRoot\packages\FooPackage.1.0\lib";

                mockFileSystem.Setup(fs => fs.DirectoryGetSubDirs(mockDirectory)).Returns(new string[] { });
                mockFileSystem.Setup(fs => fs.FileExists(Path.Combine(mockDirectory, "FooPackage.dll"))).Returns(true);

                NuGetWebProjectSystem projSystem = new NuGetWebProjectSystem(@"C:\TestRoot", mockFileSystem.Object, Dependencies.AssemblyResolver);

                // act
                var files = projSystem.GetReferenceFilesToAdd(@"TestRoot\packages\FooPackage.1.0\lib\FooPackage.dll");

                // assert
                Dictionary <string, string> expected = new Dictionary <string, string> {
                    { @"C:\TestRoot\packages\FooPackage.1.0\lib\FooPackage.dll", @"C:\TestRoot\bin\FooPackage.dll" }
                };

                Assert.Equal <Dictionary <string, string> >(expected, files);
            }
예제 #8
0
            public void IncludeSatelliteAssembly()
            {
                string mockDirectory    = @"C:\TestRoot\packages\FooPackage.1.0\lib";
                string mockLocDirectory = Path.Combine(mockDirectory, "ja-JP");
                var    mockFileSystem   = new Mock <IFileSystem>();

                mockFileSystem.Setup(fs => fs.DirectoryGetSubDirs(mockDirectory)).Returns(new string[] { mockLocDirectory });
                mockFileSystem.Setup(fs => fs.DirectoryGetFiles(mockLocDirectory)).Returns(new string[] { Path.Combine(mockLocDirectory, "FooPackage.resources.dll") });
                mockFileSystem.Setup(fs => fs.FileExists(Path.Combine(mockDirectory, "FooPackage.dll"))).Returns(true);

                NuGetWebProjectSystem projSystem = new NuGetWebProjectSystem(@"C:\TestRoot", mockFileSystem.Object, Dependencies.AssemblyResolver);

                // act
                var files = projSystem.GetReferenceFilesToAdd(@"TestRoot\packages\FooPackage.1.0\lib\FooPackage.dll");

                // assert
                Dictionary <string, string> expected = new Dictionary <string, string> {
                    { @"C:\TestRoot\packages\FooPackage.1.0\lib\FooPackage.dll", @"C:\TestRoot\bin\FooPackage.dll" },
                    { @"C:\TestRoot\packages\FooPackage.1.0\lib\ja-JP\FooPackage.resources.dll", @"C:\TestRoot\bin\ja-JP\FooPackage.resources.dll" },
                };

                Assert.Equal <Dictionary <string, string> >(expected, files);
            }
예제 #9
0
            public void ExcludeAnyAppConfig(string path)
            {
                NuGetWebProjectSystem projSystem = new NuGetWebProjectSystem("Dummy");

                Assert.False(projSystem.IsSupportedFile(path));
            }
예제 #10
0
            public void ThrowIfNotGACAssembly()
            {
                var projSystem = new NuGetWebProjectSystem("Dummy");

                Assert.Throws <InvalidOperationException>(() => projSystem.AddFrameworkReference("DoesNotExist"));
            }
예제 #11
0
            public void ResolvePaths(string input, string expected)
            {
                var projSystem = new NuGetWebProjectSystem("Dummy");

                Assert.Equal <string>(expected, projSystem.ResolvePath(input));
            }
예제 #12
0
            public void AcceptAnyNonConfig(string path)
            {
                NuGetWebProjectSystem projSystem = new NuGetWebProjectSystem("Dummy");

                Assert.True(projSystem.IsSupportedFile(path));
            }