public void Execute_UsesCorrectCommandLineInvocation_ForValidTargetDiscoveryCommands(string discoveryCommand) { // Arrange var instructions = BuildInstructions(discoveryCommand); var variables = BuildVariables(); var options = BuildOptions(); var commandLineRunner = Substitute.For <ICommandLineRunner>(); var sut = new NodeExecutor(options, variables, commandLineRunner, new InMemoryLog()); CommandLineInvocation capturedInvocation = null; var fakeResult = new CommandResult("fakeCommand", 0); commandLineRunner.Execute(Arg.Do <CommandLineInvocation>(arg => capturedInvocation = arg)).Returns(fakeResult); // Act sut.Execute(instructions); // Assert var arguments = capturedInvocation.Arguments.Split(' '); arguments.Should().HaveCount(7) .And.HaveElementAt(0, $"\"{Path.Combine("expectedBootstrapperPath","bootstrapper.js")}\"") .And.HaveElementAt(1, $"\"{discoveryCommand}\"") .And.HaveElementAt(2, "\"expectedTargetPath\"") .And.HaveElementAt(4, "\"encryptionPassword\"") .And.HaveElementAt(5, "\"Octopuss\"") .And.HaveElementAt(6, "\"discoveryContextKey\""); }
public Handler(IQueryRunner queryRunner, IRepository api, NodeExecutor node, [CurrentUser] ReviewUser currentUser) { _queryRunner = queryRunner; _api = api; _node = node; _currentUser = currentUser; }
public Handler(IQueryRunner queryRunner, [SiteBase] string siteBase, IRepository api, NodeExecutor node, IMemoryCache cache) { _queryRunner = queryRunner; _siteBase = siteBase; _api = api; _node = node; _cache = cache; }
private void ConfigureNodeIntegration(ContainerBuilder builder) { var nodeWorkingDirectory = Path.Combine(Directory.GetCurrentDirectory(), "node-integration"); var cfg = Configuration.GetSection("Node"); var executor = new NodeExecutor(cfg["node"], cfg["npm"], nodeWorkingDirectory); executor.Bootstrap(); builder.RegisterInstance(executor).SingleInstance(); }
public void Execute_ThrowsCommandException_ForUnknownBootstrapperInvocationCommand() { // Arrange var instructions = BuildInstructions("wrongCommand"); var variables = BuildVariables(); var options = BuildOptions(); var commandLineRunner = Substitute.For <ICommandLineRunner>(); var sut = new NodeExecutor(options, variables, commandLineRunner, new InMemoryLog()); // Act Action action = () => sut.Execute(instructions); // Assert action.Should().Throw <CommandException>().WithMessage("Unknown bootstrapper invocation command: 'wrongCommand'"); }
/// <summary> /// Go over all nodes and execute method defined in NodeExecutor /// </summary> /// <param name = "nodeExecutor">Class implementing NodeExecutor interface</param> /// <param name = "level">level in tree</param> protected void doForAllNodes(NodeExecutor nodeExecutor, int level) { //nodeExecutor can change tree, we should remember this in the beginning, QCR #784544 bool isFirstSibling = (Parent != null && this == Parent.FirstChild || (this == _enclosingInstance._root)); if (nodeExecutor.Stop) { return; } nodeExecutor.doBeforeChildren(this, level); if (FirstChild != null) { FirstChild.doForAllNodes(nodeExecutor, level + 1); } if (nodeExecutor.Stop) { return; } nodeExecutor.doAfterChildren(this, level); if (nodeExecutor.Stop) { return; } // if we use recursion for siblings, call stack may explode if (isFirstSibling) { NodeBase curr = NextSibling; while (curr != null) { if (nodeExecutor.Stop) { return; } curr.doForAllNodes(nodeExecutor, level); curr = curr.NextSibling; } } }
/// <summary> /// Go over all nodes and execute method defined in NodeExecutor /// </summary> /// <param name = "nodeExecutor">Class implementing NodeExecutor interface</param> public void doForAllNodes(NodeExecutor nodeExecutor) { doForAllNodes(nodeExecutor, 0); }