コード例 #1
0
            public void ShouldReturnErrorIfThereIsCompileException(
                [Frozen] Mock <IFileSystem> fileSystem,
                [Frozen] Mock <IScriptExecutor> executor,
                [Frozen] TestLogProvider logProvider,
                [Frozen] Mock <IInitializationServices> initializationServices,
                [Frozen] Mock <IScriptServicesBuilder> servicesBuilder,
                ScriptServices services)
            {
                // arrange
                var args = new Config
                {
                    AllowPreRelease = false,
                    PackageName     = "",
                    ScriptName      = "test.csx",
                };

                executor.Setup(i => i.Execute(It.IsAny <string>(), It.IsAny <string[]>()))
                .Returns(new ScriptResult(compilationException: new Exception("test")));

                initializationServices.Setup(i => i.GetFileSystem()).Returns(fileSystem.Object);
                servicesBuilder.SetupGet(b => b.InitializationServices).Returns(initializationServices.Object);
                servicesBuilder.Setup(b => b.Build()).Returns(services);

                var factory = new CommandFactory(servicesBuilder.Object);
                var sut     = factory.CreateCommand(args, new string[0]);

                // act
                var result = sut.Execute();

                // assert
                result.ShouldEqual(CommandResult.Error);
                logProvider.Output.ShouldContain("ERROR:");
            }
コード例 #2
0
            public void ShouldReturnErrorIfTheScriptIsIncomplete(
                [Frozen] Mock <IFileSystem> fileSystem,
                [Frozen] Mock <IScriptExecutor> executor,
                [Frozen] TestLogProvider logProvider,
                [Frozen] Mock <IInitializationServices> initializationServices,
                [Frozen] Mock <IScriptServicesBuilder> servicesBuilder,
                ScriptServices services)
            {
                // arrange
                var args = new Config {
                    Eval = "foo"
                };

                executor.Setup(i => i.ExecuteScript(It.IsAny <string>(), It.IsAny <string[]>()))
                .Returns(ScriptResult.Incomplete);

                initializationServices.Setup(i => i.GetFileSystem()).Returns(fileSystem.Object);
                servicesBuilder.SetupGet(b => b.InitializationServices).Returns(initializationServices.Object);
                servicesBuilder.Setup(b => b.Build()).Returns(services);

                var factory = new CommandFactory(servicesBuilder.Object);
                var sut     = factory.CreateCommand(args, new string[0]);

                // act
                var result = sut.Execute();

                // assert
                result.ShouldEqual(CommandResult.Error);
                logProvider.Output.ShouldContain("ERROR:");
            }
コード例 #3
0
 public void ShouldNotLoadScriptPacksIfLoadScriptPacksIsFalse(IConsole console, TestLogProvider logProvider, IScriptEngine engine)
 {
     var builder = new ScriptServicesBuilder(console, logProvider);
     builder.Overrides[typeof(IScriptEngine)] = engine.GetType();
     builder.LoadScriptPacks(false);
     builder.Build();
     var runtimeServices = (RuntimeServices)builder.RuntimeServices;
     runtimeServices.InitDirectoryCatalog.ShouldBeFalse();
 }
コード例 #4
0
 public void ShouldLoadScriptPacksIfScriptNameIsSet(IConsole console, TestLogProvider logProvider, IScriptEngine engine)
 {
     var builder = new ScriptServicesBuilder(console, logProvider);
     builder.Overrides[typeof(IScriptEngine)] = engine.GetType();
     builder.ScriptName("");
     builder.Build();
     var runtimeServices = (RuntimeServices)builder.RuntimeServices;
     runtimeServices.InitDirectoryCatalog.ShouldBeTrue();
 }
コード例 #5
0
 public void ShouldLogWhenTheAssemblyIsMapped(
     [Frozen] Mock <IAssemblyUtility> assemblyUtilityMock,
     [Frozen] TestLogProvider logProvider,
     AppDomainAssemblyResolver resolver)
 {
     assemblyUtilityMock.Setup(u => u.IsManagedAssembly(It.IsAny <string>())).Returns(true);
     assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
     resolver.AddAssemblyPaths(new[] { _info.Path });
     logProvider.Output.ShouldContain(
         "DEBUG: Mapping Assembly " + _assemblyName.Name + " to version:" + _assemblyName.Version);
 }
コード例 #6
0
 public void ShouldLogAWarningIfThePackageIsMissing(
     [Frozen] TestLogProvider logProvider,
     [Frozen] Mock <IPackageContainer> packageContainer,
     ScriptLibraryComposer composer,
     Mock <IPackageReference> reference)
 {
     packageContainer.Setup(c => c.FindPackage(It.IsAny <string>(), It.IsAny <IPackageReference>()))
     .Returns((IPackageObject)null);
     reference.SetupGet(r => r.PackageId).Returns("test");
     composer.ProcessPackage("", reference.Object, new StringBuilder(), new List <string>(), new List <string>());
     packageContainer.Verify(c => c.FindPackage(It.IsAny <string>(), It.IsAny <IPackageReference>()));
     logProvider.Output.ShouldContain("WARN: Package missing: test");
 }
コード例 #7
0
            public void ShouldLogTheAssemblyThatIsBeingResolved(
                [Frozen] Mock <IAssemblyUtility> assemblyUtilityMock,
                [Frozen] TestLogProvider logProvider,
                [Frozen] IDictionary <string, AssemblyInfo> assemblyInfoMap,
                AppDomainAssemblyResolver resolver)
            {
                assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
                assemblyUtilityMock.Setup(u => u.LoadFile(_info.Path)).Returns(typeof(Mock).Assembly);
                assemblyInfoMap[_assemblyName.Name] = _info;

                resolver.AssemblyResolve(this, new ResolveEventArgs(_assemblyName.Name));
                logProvider.Output.ShouldContain(
                    "DEBUG: Resolving from: " + _assemblyName.Name + " to: " + _assemblyName.ToString());
            }
コード例 #8
0
 public void ShouldWarnIfTheAssemblyVersionIsGreaterThanTheMappedAssemblyAndItWasLoaded(
     [Frozen] Mock <IAssemblyUtility> assemblyUtilityMock,
     [Frozen] IDictionary <string, AssemblyInfo> assemblyInfoMap,
     [Frozen] TestLogProvider logProvider,
     AppDomainAssemblyResolver resolver)
 {
     _info.Version = new Version(0, 0);
     assemblyUtilityMock.Setup(u => u.IsManagedAssembly(It.IsAny <string>())).Returns(true);
     assemblyUtilityMock.Setup(u => u.GetAssemblyName(_info.Path)).Returns(_assemblyName);
     _info.Assembly = typeof(Mock).Assembly;
     assemblyInfoMap[_assemblyName.Name] = _info;
     resolver.AddAssemblyPaths(new[] { _info.Path });
     logProvider.Output.ShouldContain(
         "WARN: Conflict: Assembly " + _info.Path + " with version " + _assemblyName.Version +
         " cannot be added as it has already been resolved");
 }
コード例 #9
0
ファイル: ReplTests.cs プロジェクト: AsCloud/scriptcs
 public Mocks()
 {
     FileSystem = new Mock<IFileSystem>();
     FileSystem.SetupGet(x => x.CurrentDirectory).Returns("");
     FileSystem.SetupGet(x => x.BinFolder).Returns("bin");
     FileSystem.SetupGet(x => x.DllCacheFolder).Returns(".cache");
     FileSystem.SetupGet(x => x.PackagesFolder).Returns("scriptcs_packages");
     ScriptEngine = new Mock<IScriptEngine>();
     LogProvider = new TestLogProvider();
     ScriptLibraryComposer = new Mock<IScriptLibraryComposer>();
     ScriptLibraryComposer.SetupGet(p => p.ScriptLibrariesFile).Returns("PackageScripts.csx");
     Console = new Mock<IConsole>();
     ScriptPack = new Mock<IScriptPack>();
     FilePreProcessor = new Mock<IFilePreProcessor>();
     ObjectSerializer = new Mock<IObjectSerializer>();
     ReplCommands = new[] { new Mock<IReplCommand>() };
 }
コード例 #10
0
 public Mocks()
 {
     FileSystem = new Mock <IFileSystem>();
     FileSystem.SetupGet(x => x.CurrentDirectory).Returns("");
     FileSystem.SetupGet(x => x.BinFolder).Returns("bin");
     FileSystem.SetupGet(x => x.DllCacheFolder).Returns(".cache");
     FileSystem.SetupGet(x => x.PackagesFolder).Returns("scriptcs_packages");
     ScriptEngine          = new Mock <IScriptEngine>();
     LogProvider           = new TestLogProvider();
     ScriptLibraryComposer = new Mock <IScriptLibraryComposer>();
     ScriptLibraryComposer.SetupGet(p => p.ScriptLibrariesFile).Returns("PackageScripts.csx");
     Console          = new Mock <IConsole>();
     ScriptPack       = new Mock <IScriptPack>();
     FilePreProcessor = new Mock <IFilePreProcessor>();
     ObjectSerializer = new Mock <IObjectSerializer>();
     ReplCommands     = new[] { new Mock <IReplCommand>() };
 }
コード例 #11
0
            public void ShouldPreProcessTheScriptLibrariesFileIfPresent(
                [Frozen] Mock <IFileSystem> fileSystem,
                [Frozen] Mock <IFilePreProcessor> preProcessor,
                [Frozen] Mock <IScriptEngine> engine,
                [Frozen] TestLogProvider logProvider,
                [Frozen] Mock <IScriptLibraryComposer> composer)
            {
                // arrange
                fileSystem.Setup(fs => fs.FileExists(It.IsAny <string>())).Returns(true);
                var executor = new ScriptExecutor(
                    fileSystem.Object, preProcessor.Object, engine.Object, logProvider, composer.Object);

                // act
                executor.LoadScriptLibraries("");

                // assert
                preProcessor.Verify(p => p.ProcessFile(It.IsAny <string>()));
            }
コード例 #12
0
 public void ShouldWarnIfMultipleMainFilesArePresent(
     [Frozen] Mock <IPackageContainer> packageContainer,
     [Frozen] Mock <IFilePreProcessor> preProcessor,
     [Frozen] TestLogProvider logProvider,
     ScriptLibraryComposer composer,
     Mock <IPackageReference> reference,
     Mock <IPackageObject> package)
 {
     packageContainer.Setup(c => c.FindPackage(It.IsAny <string>(), It.IsAny <IPackageReference>()))
     .Returns(package.Object);
     package.SetupGet(p => p.FullName).Returns("Test");
     package.Setup(p => p.GetContentFiles()).Returns(new List <string> {
         "Test1Main.csx", "Test2Main.csx"
     });
     preProcessor.Setup(p => p.ProcessFile(It.IsAny <string>())).Returns(new FilePreProcessorResult());
     composer.ProcessPackage(@"c:\packages", reference.Object, new StringBuilder(), new List <string>(), new List <string>());
     logProvider.Output.ShouldContain(
         "WARN: Script Libraries in 'Test' ignored due to multiple Main files being present");
 }
コード例 #13
0
            public void ShouldSubscribeToTheResolveEvent(
                TestLogProvider logProvider,
                IFileSystem fileSystem,
                IAssemblyResolver assemblyResolver,
                [Frozen] Mock<IAssemblyUtility> assemblyUtilityMock)
            {
                bool called = false;

                assemblyUtilityMock.Setup(a => a.IsManagedAssembly(It.IsAny<string>())).Returns(true);
                var assemblyUtility = assemblyUtilityMock.Object;

                new AppDomainAssemblyResolver(logProvider, fileSystem, assemblyResolver,
                    assemblyUtility,
                    resolveHandler: (o, r) =>
                    {
                        called = true;
                        return Assembly.GetExecutingAssembly();
                    }
                );
                Assembly.Load("test");
                called.ShouldBeTrue();
            }
コード例 #14
0
            public void ShouldSubscribeToTheResolveEvent(
                TestLogProvider logProvider,
                IFileSystem fileSystem,
                IAssemblyResolver assemblyResolver,
                [Frozen] Mock <IAssemblyUtility> assemblyUtilityMock)
            {
                bool called = false;

                assemblyUtilityMock.Setup(a => a.IsManagedAssembly(It.IsAny <string>())).Returns(true);
                var assemblyUtility = assemblyUtilityMock.Object;

                new AppDomainAssemblyResolver(logProvider, fileSystem, assemblyResolver,
                                              assemblyUtility,
                                              resolveHandler: (o, r) =>
                {
                    called = true;
                    return(Assembly.GetExecutingAssembly());
                }
                                              );
                Assembly.Load("test");
                called.ShouldBeTrue();
            }
コード例 #15
0
        void ICustomization.Customize(IFixture fixture)
        {
            this.Customize(fixture);

            fixture.Register(() =>
                {
                    var fileSystem = new Mock<IFileSystem>();
                    fileSystem.SetupGet(f => f.PackagesFile).Returns("scriptcs_packages.config");
                    fileSystem.SetupGet(f => f.PackagesFolder).Returns("scriptcs_packages");
                    fileSystem.SetupGet(f => f.BinFolder).Returns("scriptcs_bin");
                    fileSystem.SetupGet(f => f.DllCacheFolder).Returns(".scriptcs_cache");
                    fileSystem.SetupGet(f => f.NugetFile).Returns("scriptcs_nuget.config");
                    fileSystem.SetupGet(f => f.CurrentDirectory).Returns("workingdirectory");
                    fileSystem.Setup(f => f.FileExists(@"workingdirectory\scriptcs_packages\PackageScripts.csx")).Returns(false);
                    fileSystem.Setup(f => f.DirectoryExists(@"workingdirectory\scriptcs_packages")).Returns(true);
                    fileSystem.Setup(f => f.GetWorkingDirectory(It.IsAny<string>())).Returns("workingdirectory");
                    return fileSystem;
                });

            fixture.Register(() =>
                {
                    var composer = new Mock<IScriptLibraryComposer>();
                    composer.SetupGet(c => c.ScriptLibrariesFile).Returns("ScriptLibraries.csx");
                    return composer;
                });

            var logProvider = new TestLogProvider();
            fixture.Register(() => logProvider);
            fixture.Register<ILogProvider>(() => logProvider);

            fixture.Register(()=>new AppDomainAssemblyResolver(
                fixture.Create<ILogProvider>(),
                fixture.Create<IFileSystem>(),
                fixture.Create<IAssemblyResolver>(),
                fixture.Create<IAssemblyUtility>(),
                fixture.Create<IDictionary<string, AssemblyInfo>>()));

            fixture.Register(()=> new ScriptLibraryComposer(
                fixture.Create<IFileSystem>(),
                fixture.Create<IFilePreProcessor>(),
                fixture.Create<IPackageContainer>(),
                fixture.Create<IPackageAssemblyResolver>(),
                fixture.Create<ILogProvider>()));

            fixture.Register(() => new ScriptServices(
                fixture.Create<IFileSystem>(),
                fixture.Create<IPackageAssemblyResolver>(),
                fixture.Create<IScriptExecutor>(),
                fixture.Create<IRepl>(),
                fixture.Create<IScriptEngine>(),
                fixture.Create<IFilePreProcessor>(),
                fixture.Create<IScriptPackResolver>(),
                fixture.Create<IPackageInstaller>(),
                fixture.Create<IObjectSerializer>(),
                fixture.Create<ILogProvider>(),
                fixture.Create<IAssemblyResolver>(),
                fixture.Create<IEnumerable<IReplCommand>>(),
                fixture.Create<IFileSystemMigrator>(),
                fixture.Create<IConsole>(),
                fixture.Create<IInstallationProvider>(),
                fixture.Create<IScriptLibraryComposer>()));
        }
コード例 #16
0
 public RoslynTestScriptEngine(IScriptHostFactory scriptHostFactory, TestLogProvider logProvider)
     : base(scriptHostFactory, logProvider)
 {
 }
コード例 #17
0
 public CSharpTestScriptEngine(IScriptHostFactory scriptHostFactory, TestLogProvider logProvider)
     : base(scriptHostFactory, logProvider)
 {
 }
コード例 #18
0
        void ICustomization.Customize(IFixture fixture)
        {
            this.Customize(fixture);

            fixture.Register(() =>
            {
                var fileSystem = new Mock <IFileSystem>();
                fileSystem.SetupGet(f => f.PackagesFile).Returns("scriptcs_packages.config");
                fileSystem.SetupGet(f => f.PackagesFolder).Returns("scriptcs_packages");
                fileSystem.SetupGet(f => f.BinFolder).Returns("scriptcs_bin");
                fileSystem.SetupGet(f => f.DllCacheFolder).Returns(".scriptcs_cache");
                fileSystem.SetupGet(f => f.NugetFile).Returns("scriptcs_nuget.config");
                fileSystem.SetupGet(f => f.CurrentDirectory).Returns("workingdirectory");
                fileSystem.Setup(f => f.FileExists(@"workingdirectory\scriptcs_packages\PackageScripts.csx"))
                .Returns(false);
                fileSystem.Setup(f => f.DirectoryExists(@"workingdirectory\scriptcs_packages")).Returns(true);
                fileSystem.Setup(f => f.GetWorkingDirectory(It.IsAny <string>())).Returns("workingdirectory");
                return(fileSystem);
            });

            fixture.Register(() =>
            {
                var composer = new Mock <IScriptLibraryComposer>();
                composer.SetupGet(c => c.ScriptLibrariesFile).Returns("ScriptLibraries.csx");
                return(composer);
            });

            var logProvider = new TestLogProvider();

            fixture.Register(() => logProvider);
            fixture.Register <ILogProvider>(() => logProvider);

            fixture.Register(() => new AppDomainAssemblyResolver(
                                 fixture.Create <ILogProvider>(),
                                 fixture.Create <IFileSystem>(),
                                 fixture.Create <IAssemblyResolver>(),
                                 fixture.Create <IAssemblyUtility>(),
                                 fixture.Create <IDictionary <string, AssemblyInfo> >()));

            fixture.Register(() => new ScriptLibraryComposer(
                                 fixture.Create <IFileSystem>(),
                                 fixture.Create <IFilePreProcessor>(),
                                 fixture.Create <IPackageContainer>(),
                                 fixture.Create <IPackageAssemblyResolver>(),
                                 fixture.Create <ILogProvider>()));

            fixture.Register(() => new ScriptServices(
                                 fixture.Create <IFileSystem>(),
                                 fixture.Create <IPackageAssemblyResolver>(),
                                 fixture.Create <IScriptExecutor>(),
                                 fixture.Create <IRepl>(),
                                 fixture.Create <IScriptEngine>(),
                                 fixture.Create <IFilePreProcessor>(),
                                 fixture.Create <IScriptPackResolver>(),
                                 fixture.Create <IPackageInstaller>(),
                                 fixture.Create <IObjectSerializer>(),
                                 fixture.Create <ILogProvider>(),
                                 fixture.Create <IAssemblyResolver>(),
                                 fixture.Create <IEnumerable <IReplCommand> >(),
                                 fixture.Create <IFileSystemMigrator>(),
                                 fixture.Create <IConsole>(),
                                 fixture.Create <IInstallationProvider>(),
                                 fixture.Create <IScriptLibraryComposer>()));

            fixture.Register(() => new ScriptExecutor(
                                 fixture.Create <IFileSystem>(),
                                 fixture.Create <IFilePreProcessor>(),
                                 fixture.Create <IScriptEngine>(),
                                 fixture.Create <ILogProvider>(),
                                 fixture.Create <IScriptLibraryComposer>(),
                                 new ScriptInfo()));
        }