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:"); }
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:"); }
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(); }
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(); }
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); }
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"); }
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()); }
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"); }
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>() }; }
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>() }; }
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>())); }
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"); }
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(); }
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(); }
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>())); }
public RoslynTestScriptEngine(IScriptHostFactory scriptHostFactory, TestLogProvider logProvider) : base(scriptHostFactory, logProvider) { }
public CSharpTestScriptEngine(IScriptHostFactory scriptHostFactory, TestLogProvider logProvider) : base(scriptHostFactory, logProvider) { }
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())); }