示例#1
0
            public void Should_Execute_Script_Code()
            {
                // Given
                var fixture = new ScriptRunnerFixture();
                var runner  = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Host, fixture.Script, fixture.ArgumentDictionary);

                // Then
                fixture.Session.Received(1).Execute(fixture.GetExpectedSource());
            }
            public void Should_Create_Session_Via_Session_Factory()
            {
                // Given
                var fixture = new ScriptRunnerFixture();
                var runner  = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Host, fixture.Script, fixture.ArgumentDictionary);

                // Then
                fixture.Engine.Received(1).CreateSession(fixture.Host);
            }
示例#3
0
            public void Should_Execute_Script_Code()
            {
                // Given
                var fixture = new ScriptRunnerFixture();
                var runner  = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Host, fixture.Script);

                // Then
                fixture.Session.Received(1).Execute(Arg.Any <Script>());
            }
示例#4
0
            public void Should_Throw_If_Script_Is_Null()
            {
                // Given
                var fixture = new ScriptRunnerFixture();
                var runner  = fixture.CreateScriptRunner();

                // When
                var result = Record.Exception(() => runner.Run(fixture.Host, null, fixture.ArgumentDictionary));

                // Then
                Assert.IsArgumentNullException(result, "script");
            }
示例#5
0
            public void Should_Throw_If_Arguments_Are_Null()
            {
                // Given
                var fixture = new ScriptRunnerFixture();
                var runner  = fixture.CreateScriptRunner();

                // When
                var result = Record.Exception(() => runner.Run(fixture.Host, fixture.Script, null));

                // Then
                Assert.IsArgumentNullException(result, "arguments");
            }
示例#6
0
            public void Should_Add_Namespaces_To_Session(string @namespace)
            {
                // Given
                var fixture = new ScriptRunnerFixture();
                var runner  = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Options);

                // Then
                fixture.Session.Received(1).ImportNamespace(@namespace);
            }
示例#7
0
            public void Should_Set_Working_Directory_To_Script_Directory()
            {
                // Given
                var fixture = new ScriptRunnerFixture("/build/build.cake");
                var runner  = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Host, fixture.Script, fixture.ArgumentDictionary);

                // Then
                Assert.Equal("/build", fixture.Environment.WorkingDirectory.FullPath);
            }
示例#8
0
            public void Should_Execute_Script_Code()
            {
                // Given
                var fixture = new ScriptRunnerFixture();
                var runner  = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Options);

                // Then
                fixture.Session.Received(1).Execute(fixture.Source);
            }
示例#9
0
            public void Should_Initialize_Script_Session_Factory()
            {
                // Given
                var fixture = new ScriptRunnerFixture();
                var runner  = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Options);

                // Then
                fixture.SessionFactory.Received(1).Initialize();
            }
示例#10
0
            public void Should_Create_Session_Via_Session_Factory()
            {
                // Given
                var fixture = new ScriptRunnerFixture();
                var runner  = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Options);

                // Then
                fixture.SessionFactory.Received(1).CreateSession(fixture.Host);
            }
示例#11
0
            public void Should_Add_References_To_Session(string @assemblyName)
            {
                // Given
                var fixture = new ScriptRunnerFixture();
                var runner  = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Options);

                // Then
                fixture.Session.Received(1).AddReference(
                    Arg.Is <Assembly>(a => a.FullName.StartsWith(assemblyName + ", ", StringComparison.OrdinalIgnoreCase)));
            }
示例#12
0
            public void Should_Throw_If_Session_Factory_Is_Null()
            {
                // Given
                var fixture = new ScriptRunnerFixture();

                fixture.SessionFactory = null;

                // When
                var result = Record.Exception(() => fixture.CreateScriptRunner());

                // Then
                Assert.IsArgumentNullException(result, "sessionFactory");
            }
示例#13
0
            public void Should_Set_Working_Directory_To_Script_Directory()
            {
                // Given
                var fixture = new ScriptRunnerFixture("/build/build.cake");
                var runner  = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Options);

                // Then
                fixture.Environment.Received(1).WorkingDirectory
                    = Arg.Is <DirectoryPath>(p => p.FullPath == "/build");
            }
示例#14
0
            public void Should_Throw_If_Script_Conventions_Is_Null()
            {
                // Given
                var fixture = new ScriptRunnerFixture();

                fixture.ScriptConventions = null;

                // When
                var result = Record.Exception(() => fixture.CreateScriptRunner());

                // Then
                Assert.IsArgumentNullException(result, "conventions");
            }
示例#15
0
            public void Should_Generate_Script_Aliases()
            {
                // Given
                var fixture = new ScriptRunnerFixture();
                var runner  = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Host, fixture.Script, fixture.ArgumentDictionary);

                // Then
                fixture.AliasFinder.Received(1).FindAliases(
                    Arg.Any <IEnumerable <Assembly> >());
            }
示例#16
0
            public void Should_Throw_If_Environment_Is_Null()
            {
                // Given
                var fixture = new ScriptRunnerFixture();

                fixture.Environment = null;

                // When
                var result = Record.Exception(() => fixture.CreateScriptRunner());

                // Then
                Assert.IsArgumentNullException(result, "environment");
            }
示例#17
0
            public void Should_Throw_If_Script_Alias_Generator_Is_Null()
            {
                // Given
                var fixture = new ScriptRunnerFixture();

                fixture.AliasGenerator = null;

                // When
                var result = Record.Exception(() => fixture.CreateScriptRunner());

                // Then
                Assert.IsArgumentNullException(result, "aliasGenerator");
            }
示例#18
0
            public void Should_Throw_If_AssemblyLoader_Is_Null()
            {
                // Given
                var fixture = new ScriptRunnerFixture();

                fixture.AssemblyLoader = null;

                // When
                var result = Record.Exception(() => fixture.CreateScriptRunner());

                // Then
                Assert.IsArgumentNullException(result, "assemblyLoader");
            }
示例#19
0
            public void Should_Throw_If_Script_Host_Is_Null()
            {
                // Given
                var fixture = new ScriptRunnerFixture();

                fixture.Host = null;

                // When
                var result = Record.Exception(() => fixture.CreateScriptRunner());

                // Then
                Assert.IsType <ArgumentNullException>(result);
                Assert.Equal("host", ((ArgumentNullException)result).ParamName);
            }
示例#20
0
            public void Should_Set_Arguments()
            {
                // Given
                var fixture = new ScriptRunnerFixture();

                fixture.Options.Arguments.Add("A", "B");
                var runner = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Options);

                // Then
                Assert.True(fixture.Arguments.HasArgument("A"));
            }
示例#21
0
            public void Should_Send_Absolute_Install_Path_To_Script_Processor_When_Installing_Tools()
            {
                // Given
                var fixture = new ScriptRunnerFixture("/Working/foo/build.cake");
                var runner  = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Host, "./foo/build.cake");

                // Then
                fixture.ScriptProcessor.Received(1).InstallTools(
                    Arg.Any <IReadOnlyCollection <PackageReference> >(),
                    Arg.Is <DirectoryPath>(p => p.FullPath == "/Working/foo/tools"));
            }
示例#22
0
            public void Should_Set_Arguments()
            {
                // Given
                var fixture = new ScriptRunnerFixture();

                fixture.ArgumentDictionary.Add("A", "B");
                var runner = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Host, fixture.Script, fixture.ArgumentDictionary);

                // Then
                fixture.Arguments.Received(1).SetArguments(fixture.ArgumentDictionary);
            }
示例#23
0
            public void Should_Install_Addins_At_Default_Location_If_No_Configuration_Is_Present()
            {
                // Given
                var fixture = new ScriptRunnerFixture();
                var runner  = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Host, fixture.Script, fixture.ArgumentDictionary);

                // Then
                fixture.ScriptProcessor.Received(1).InstallAddins(
                    Arg.Any <ScriptAnalyzerResult>(),
                    Arg.Is <DirectoryPath>(path => path.FullPath == "/Working/tools/Addins"));
            }
示例#24
0
            public void Should_Send_Absolute_Install_Path_To_Script_Processor_When_Installing_Tools()
            {
                // Given
                var fixture = new ScriptRunnerFixture("/Working/foo/build.cake");
                var runner  = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Host, "./foo/build.cake", fixture.ArgumentDictionary);

                // Then
                fixture.ScriptProcessor.Received(1).InstallTools(
                    Arg.Any <ScriptAnalyzerResult>(),
                    Arg.Is <DirectoryPath>(p => p.FullPath == "/Working/foo/tools"));
            }
示例#25
0
            public void Should_Install_Addins_At_Default_Location_If_No_Configuration_Is_Present()
            {
                // Given
                var fixture = new ScriptRunnerFixture();
                var runner  = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Host, fixture.Script);

                // Then
                fixture.ScriptProcessor.Received(1).InstallAddins(
                    Arg.Any <IReadOnlyCollection <PackageReference> >(),
                    Arg.Is <DirectoryPath>(path => path.FullPath == "/Working/tools/Addins"));
            }
示例#26
0
            public void Should_Generate_Script_Aliases()
            {
                // Given
                var fixture = new ScriptRunnerFixture();
                var runner  = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Options);

                // Then
                fixture.AliasGenerator.Received(1).GenerateScriptAliases(
                    Arg.Any <ScriptProcessorContext>(),
                    Arg.Any <IEnumerable <Assembly> >());
            }
示例#27
0
            public void Should_Remove_Directory_From_Script_Path(string path)
            {
                // Given
                var fixture = new ScriptRunnerFixture(path);

                fixture.ScriptProcessor = Substitute.For <IScriptProcessor>();
                var runner = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Host, fixture.Script, fixture.ArgumentDictionary);

                // Then
                fixture.ScriptProcessor.Received(1).Process(
                    Arg.Is <FilePath>(p => p.FullPath == "build.cake"),
                    Arg.Any <ScriptProcessorContext>());
            }
示例#28
0
            public void Should_Install_Addins_At_Location_In_Configuration()
            {
                // Given
                var fixture = new ScriptRunnerFixture();

                fixture.Configuration.GetValue(Constants.Paths.Addins).Returns("./stuff");
                var runner = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Host, fixture.Script, fixture.ArgumentDictionary);

                // Then
                fixture.ScriptProcessor.Received(1).InstallAddins(
                    Arg.Any <ScriptAnalyzerResult>(),
                    Arg.Is <DirectoryPath>(path => path.FullPath == "/Working/stuff"));
            }
示例#29
0
            public void Should_Install_Addins_At_Location_In_Configuration()
            {
                // Given
                var fixture = new ScriptRunnerFixture();

                fixture.Configuration.GetValue(Constants.Paths.Addins).Returns("./stuff");
                var runner = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Host, fixture.Script);

                // Then
                fixture.ScriptProcessor.Received(1).InstallAddins(
                    Arg.Any <IReadOnlyCollection <PackageReference> >(),
                    Arg.Is <DirectoryPath>(path => path.FullPath == "/Working/stuff"));
            }
示例#30
0
            public void Should_Remove_Directory_From_Script_Path(string path)
            {
                // Given
                var fixture = new ScriptRunnerFixture(path);

                fixture.ScriptAnalyzer = Substitute.For <IScriptAnalyzer>();
                fixture.ScriptAnalyzer.Analyze(Arg.Any <FilePath>())
                .Returns(new ScriptAnalyzerResult(new ScriptInformation(path), new List <string>()));
                var runner = fixture.CreateScriptRunner();

                // When
                runner.Run(fixture.Host, fixture.Script, fixture.ArgumentDictionary);

                // Then
                fixture.ScriptAnalyzer.Received(1).Analyze(
                    Arg.Is <FilePath>(f => f.FullPath == "build.cake"));
            }