Пример #1
0
        public void GivenConfigWithProjectWithJobAndUpdateSteamWorkshopItemTask__WhenParsing__JobShouldHaveTask()
        {
            const string lua = @"
                local p = project('test')
                local j = p:add_job('test-job')
                j:add_task(update_steam_workshop_item {
                    app_id = 32470,
                    title = 'my-test-item',
                    description_file = 'path/to/description',
                    item_folder = 'path/to/folder',
                    visibility = visibility.private,
                    language = 'English'
                })  
            ";

            _mockFileData.TextContents = lua;

            JobStub   jobStub   = new JobStub();
            TaskDummy taskDummy = new TaskDummy();
            BuildComponentFactoryStub factoryStub = MakeBuildComponentFactoryStub(jobStub, taskDummy);

            MakeSutAndParse(factoryStub);

            ITask actualTask = jobStub.Tasks.First();

            Assert.AreEqual(taskDummy, actualTask);
        }
        public void Execute_JobClassProvided_ShouldScheduleNewJob()
        {
            const string groupName = "Group";
            const string jobName   = "Job";

            var stub = new SchedulerHostStub(new[] { typeof(System.Object) });

            var command = new AddTriggerCommand(() => stub.Value, new RegisteredInputType[0]);

            AddTriggerOutput result = (AddTriggerOutput)command.Execute(new AddTriggerInput
            {
                Group       = groupName,
                Job         = jobName,
                JobClass    = typeof(System.Object).ToString(),
                Name        = "Trigger",
                TriggerType = "Simple"
            });

            result.AssertSuccessfull();

            GroupStub   group   = stub.GetSingleGroup();
            JobStub     job     = group.GetSingleJob();
            TriggerStub trigger = job.GetSingleTrigger();

            Assert.That(group.Name, Is.EqualTo(groupName));
            Assert.That(job.Name, Is.EqualTo(jobName));
            Assert.That(job.JobType, Is.EqualTo(typeof(System.Object)));
            Assert.That(trigger.Name, Is.EqualTo("Trigger"));
        }
Пример #3
0
        public void GivenJobWithMultipleTasks__WhenCallingParse__JobShouldHaveAllTasks()
        {
            const string lua = @"
                local p = project('test')
                local j = p:add_job('test-job')
                j:add_tasks { run_process('echo'), copy('a', 'b') }  
            ";

            _mockFileData.TextContents = lua;

            JobStub jobStub = new JobStub();

            ITask[] expectedTasks = { new TaskDummy(), new TaskDummy() };
            BuildComponentFactoryStub factoryStub = new BuildComponentFactoryStub
            {
                Job         = jobStub,
                TaskBuilder = new IteratingTaskBuilderStub
                {
                    Tasks = expectedTasks.ToList()
                }
            };

            MakeSutAndParse(factoryStub);

            List <ITask> actualTasks = jobStub.Tasks;

            CollectionAssert.AreEqual(expectedTasks, actualTasks);
        }
        public void Execute_NoJobClass_ShouldAddTriggerToExistingJob()
        {
            const string groupName = "Group";
            const string jobName   = "Job";

            var stub = new SchedulerHostStub();

            var command = new AddTriggerCommand(() => stub.Value, new RegisteredInputType[0]);

            AddTriggerOutput result = (AddTriggerOutput)command.Execute(new AddTriggerInput
            {
                Group       = groupName,
                Job         = jobName,
                Name        = "Trigger",
                TriggerType = "Simple"
            });

            result.AssertSuccessfull();

            GroupStub   group   = stub.GetSingleGroup();
            JobStub     job     = group.GetSingleJob();
            TriggerStub trigger = job.GetSingleTrigger();

            Assert.That(group.Name, Is.EqualTo(groupName));
            Assert.That(job.Name, Is.EqualTo(jobName));
            Assert.That(job.JobType, Is.Null);
            Assert.That(trigger.Name, Is.EqualTo("Trigger"));
        }
Пример #5
0
        public void GivenProjectWithJobAndTwoTasks__WhenCallingParse__ShouldAddBothTasksToJob()
        {
            const string xml = @"<?xml version=""1.0"" encoding=""UTF-8""?>
                                <eaw-ci:BuildConfiguration
                                  ConfigVersion=""1.0.0"" 
                                  xmlns:eaw-ci=""eaw-ci""
                                  xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">
                                  <Projects>
                                    <Project Id=""idvalue0"">
                                      <Jobs>
                                        <Job Id=""idvalue1"" Name=""TestJob"">
                                          <Tasks>
                                            <Task Id=""idvalue2"" Name=""FirstTask"" xsi:type=""eaw-ci:Copy"">
                                              <CopyFromPath>path/to/first/source</CopyFromPath>
                                              <CopyToPath>path/to/first/dest</CopyToPath>
                                              <CopySubfolders>true</CopySubfolders>
                                              <CopyFileByPattern>*</CopyFileByPattern>
                                              <AlwaysOverwrite>false</AlwaysOverwrite>
                                            </Task>

                                            <Task Id=""idvalue3"" Name=""SecondTask"" xsi:type=""eaw-ci:Copy"">
                                              <CopyFromPath>path/to/second/source</CopyFromPath>
                                              <CopyToPath>path/to/second/dest</CopyToPath>
                                              <CopySubfolders>true</CopySubfolders>
                                              <CopyFileByPattern>*</CopyFileByPattern>
                                              <AlwaysOverwrite>false</AlwaysOverwrite>
                                            </Task>
                                          </Tasks>
                                        </Job>
                                      </Jobs>
                                    </Project>
                                  </Projects>
                                </eaw-ci:BuildConfiguration>";

            _mockFileData.TextContents = xml;

            JobStub   jobStub    = new JobStub();
            TaskDummy firstTask  = new TaskDummy();
            TaskDummy secondTask = new TaskDummy();

            IteratingTaskBuilderStub taskBuilderStub = new IteratingTaskBuilderStub();

            taskBuilderStub.Tasks.Add(firstTask);
            taskBuilderStub.Tasks.Add(secondTask);

            BuildComponentFactoryStub factoryStub = new BuildComponentFactoryStub
            {
                Job = jobStub, TaskBuilder = taskBuilderStub
            };
            XmlBuildConfigParser sut = new XmlBuildConfigParser(_fileSystem, factoryStub);

            sut.Parse(Path);

            AssertJobHasExpectedTask(jobStub, firstTask);
            AssertJobHasExpectedTask(jobStub, secondTask);
        }
Пример #6
0
        public void GivenLuaJobWithJob__WhenCallingAddTasksWithNonTaskValue__ShouldThrowLuaScriptException()
        {
            using NLua.Lua luaInterpreter = new NLua.Lua();
            LuaTable invalidTable = MakeLuaTable(luaInterpreter, "invalidTable");

            invalidTable[1] = "Invalid";

            JobStub jobStub = new JobStub();
            LuaJob  sut     = new LuaJob(jobStub);

            sut.add_tasks(invalidTable);
        }
Пример #7
0
        public void GivenLuaProject__WhenAddingJob__ShouldReturnLuaJob()
        {
            JobStub jobStub = new JobStub();
            BuildComponentFactoryStub factoryStub = new BuildComponentFactoryStub
            {
                Project = new ProjectStub(),
                Job     = jobStub
            };

            LuaProject sut    = new LuaProject("TestProject", factoryStub);
            LuaJob     actual = sut.add_job("test-job");

            Assert.IsInstanceOfType(actual, typeof(LuaJob));
        }
Пример #8
0
        public void GivenLuaJobWithJob__WhenCallingAddTask__ContainedJobShouldHaveTask()
        {
            JobStub   jobStub   = new JobStub();
            TaskDummy taskDummy = new TaskDummy();

            LuaJob      sut         = new LuaJob(jobStub);
            LuaTaskStub luaTaskStub = new LuaTaskStub {
                Task = taskDummy
            };

            sut.add_task(luaTaskStub);

            CollectionAssert.Contains(jobStub.Tasks, taskDummy);
        }
        public void New_activator_given_kernel_should_call_kernel_to_resolve_job_type()
        {
            var jobType = typeof(JobStub);
            var actualJob = new JobStub();

            var kernel = A.Fake<IKernel>();
            A.CallTo(() => kernel.Resolve(jobType)).Returns(actualJob);

            var activator = new WindsorJobActivator(kernel);

            var returnedJob = activator.ActivateJob(jobType);

            A.CallTo(() => kernel.Resolve(jobType)).MustHaveHappened();

            Assert.AreEqual(actualJob, returnedJob);
        }
Пример #10
0
        public void New_activator_given_kernel_should_call_kernel_to_resolve_job_type()
        {
            var jobType   = typeof(JobStub);
            var actualJob = new JobStub();

            var kernel = A.Fake <IKernel>();

            A.CallTo(() => kernel.Resolve(jobType)).Returns(actualJob);

            var activator = new WindsorJobActivator(kernel);

            var returnedJob = activator.ActivateJob(jobType);

            A.CallTo(() => kernel.Resolve(jobType)).MustHaveHappened();

            Assert.AreEqual(actualJob, returnedJob);
        }
Пример #11
0
        public void GivenGlobalCopyTaskAndReferenceInProjectJob__WhenCallingParse__ShouldAddTaskToJob()
        {
            const string xml = @"<?xml version=""1.0"" encoding=""UTF-8""?>
                                <eaw-ci:BuildConfiguration
                                  ConfigVersion=""1.0.0"" 
                                  xmlns:eaw-ci=""eaw-ci""
                                  xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">
                                  <GlobalTasks>
                                    <TaskDefinition Id=""TestTask"" xsi:type=""eaw-ci:Copy"">
                                      <CopyFromPath>path/to/source</CopyFromPath>
                                      <CopyToPath>path/to/dest</CopyToPath>
                                      <CopySubfolders>true</CopySubfolders>
                                      <CopyFileByPattern>*</CopyFileByPattern>
                                      <AlwaysOverwrite>false</AlwaysOverwrite>
                                    </TaskDefinition>
                                  </GlobalTasks>

                                  <Projects>
                                    <Project Id=""idvalue1"">
                                      <Jobs>
                                        <Job Id=""idvalue2"" Name=""TestJob"">
                                          <Tasks>
                                            <TaskReference ReferenceId=""TestTask"" />
                                          </Tasks>
                                        </Job>
                                      </Jobs>
                                    </Project>
                                  </Projects>
                                </eaw-ci:BuildConfiguration>";

            _mockFileData.TextContents = xml;

            JobStub                   jobStub         = new JobStub();
            TaskBuilderStub           taskBuilderStub = new TaskBuilderStub();
            BuildComponentFactoryStub factoryStub     = new BuildComponentFactoryStub
            {
                Job = jobStub, TaskBuilder = taskBuilderStub
            };
            XmlBuildConfigParser sut = new XmlBuildConfigParser(_fileSystem, factoryStub);

            sut.Parse(Path);

            AssertJobHasExpectedTask(jobStub, taskBuilderStub.Task);
        }
Пример #12
0
        public void GivenConfigWithProjectAndJob__WhenParsing__ProjectShouldHaveJob()
        {
            const string lua = @"
                local p = project('test')
                p:add_job('test-job')  
            ";

            _mockFileData.TextContents = lua;

            JobStub jobStub = new JobStub();
            BuildComponentFactoryStub factoryStub = MakeBuildComponentFactoryStub(jobStub);
            IEnumerable <IProject>    projects    = MakeSutAndParse(factoryStub);

            ProjectStub actual    = projects.First() as ProjectStub;
            IJob        actualJob = actual?.Jobs.First();

            Assert.AreSame(jobStub, actualJob);
            Assert.AreEqual("test-job", actualJob?.Name);
        }
Пример #13
0
        public void GivenLuaProjectWithJob__WhenGettingProject__ProjectShouldHaveJob()
        {
            JobStub jobStub = new JobStub();
            BuildComponentFactoryStub factoryStub = new BuildComponentFactoryStub
            {
                Project = new ProjectStub(),
                Job     = jobStub
            };

            LuaProject sut = new LuaProject("TestProject", factoryStub);

            sut.add_job("test-job");

            ProjectStub actual    = sut.Project as ProjectStub;
            IJob        actualJob = actual?.Jobs.First();

            Assert.AreSame(jobStub, actualJob);
            Assert.AreEqual("test-job", actualJob?.Name);
        }
Пример #14
0
        public void GivenConfigWithProjectWithJobAndCopyTask__WhenParsing__JobShouldHaveTask()
        {
            const string lua = @"
                local p = project('test')
                local j = p:add_job('test-job')
                j:add_task(copy('a', 'b'))  
            ";

            _mockFileData.TextContents = lua;

            JobStub   jobStub   = new JobStub();
            TaskDummy taskDummy = new TaskDummy();
            BuildComponentFactoryStub factoryStub = MakeBuildComponentFactoryStub(jobStub, taskDummy);

            MakeSutAndParse(factoryStub);

            ITask actualTask = jobStub.Tasks.First();

            Assert.AreEqual(taskDummy, actualTask);
        }
Пример #15
0
        public void GivenLuaJobWithJob__WhenCallingAddTasks__ContainedJobShouldHaveAllTasks()
        {
            using NLua.Lua luaInterpreter = new NLua.Lua();

            TaskDummy firstTaskDummy  = new TaskDummy();
            TaskDummy secondTaskDummy = new TaskDummy();

            LuaTable taskTable = MakeLuaTable(luaInterpreter, "taskTable");

            taskTable[1] = new LuaTaskStub {
                Task = firstTaskDummy
            };
            taskTable[2] = new LuaTaskStub {
                Task = secondTaskDummy
            };

            JobStub jobStub = new JobStub();
            LuaJob  sut     = new LuaJob(jobStub);

            sut.add_tasks(taskTable);

            ITask[] expectedTasks = { firstTaskDummy, secondTaskDummy };
            CollectionAssert.AreEqual(expectedTasks, jobStub.Tasks);
        }
Пример #16
0
        GivenTwoGlobalTasksAndReferenceToSecondInProjectJob__WhenCallingParse__ShouldBuildSecondGlobalTask()
        {
            const string xml = @"<?xml version=""1.0"" encoding=""UTF-8""?>
                                <eaw-ci:BuildConfiguration
                                  ConfigVersion=""1.0.0"" 
                                  xmlns:eaw-ci=""eaw-ci""
                                  xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">
                                  <GlobalTasks>
                                    <TaskDefinition Id=""TestTask"" xsi:type=""eaw-ci:Copy"">
                                      <CopyFromPath>invalid</CopyFromPath>
                                      <CopyToPath>invalid</CopyToPath>
                                      <CopySubfolders>false</CopySubfolders>
                                      <CopyFileByPattern>*</CopyFileByPattern>
                                      <AlwaysOverwrite>false</AlwaysOverwrite>
                                    </TaskDefinition>

                                    <TaskDefinition Id=""ExpectedTask"" Name=""ExpectedTask"" xsi:type=""eaw-ci:Copy"">
                                      <CopyFromPath>path/to/source</CopyFromPath>
                                      <CopyToPath>path/to/dest</CopyToPath>
                                      <CopySubfolders>true</CopySubfolders>
                                      <CopyFileByPattern>*</CopyFileByPattern>
                                      <AlwaysOverwrite>false</AlwaysOverwrite>
                                    </TaskDefinition>
                                  </GlobalTasks>

                                  <Projects>
                                    <Project Id=""idvalue1"">
                                      <Jobs>
                                        <Job Id=""idvalue2"" Name=""TestJob"">
                                          <Tasks>
                                            <TaskReference ReferenceId=""ExpectedTask"" />
                                          </Tasks>
                                        </Job>
                                      </Jobs>
                                    </Project>
                                  </Projects>
                                </eaw-ci:BuildConfiguration>";

            _mockFileData.TextContents = xml;

            JobStub         jobStub         = new JobStub();
            TaskBuilderMock taskBuilderMock = new TaskBuilderMock(new Dictionary <string, object>
            {
                { "Id", "ExpectedTask" },
                { "Name", "ExpectedTask" },
                { "CopyFromPath", "path/to/source" },
                { "CopyToPath", "path/to/dest" },
                { "CopySubfolders", true },
                { "CopyFileByPattern", "*" },
                { "AlwaysOverwrite", false }
            });

            BuildComponentFactoryStub factoryStub = new BuildComponentFactoryStub
            {
                Job = jobStub, TaskBuilder = taskBuilderMock
            };
            XmlBuildConfigParser sut = new XmlBuildConfigParser(_fileSystem, factoryStub);

            sut.Parse(Path);

            taskBuilderMock.Verify();
        }
Пример #17
0
 private static void AssertJobHasExpectedTask(JobStub jobStub, ITask element)
 {
     CollectionAssert.Contains(jobStub.Tasks, element,
                               "Should Job should have expected task, but does not.");
 }