public void NullConnectionInfoResultsInEmptyVariables() { var parser = new ExternalToolArgumentParser(null); var parsedText = parser.ParseArguments("test %USERNAME% test"); Assert.That(parsedText, Is.EqualTo("test test")); }
public override bool Connect() { try { if (_externalTool.TryIntegrate == false) { _externalTool.Start(InterfaceControl.Info); Close(); return(false); } ExternalToolArgumentParser argParser = new ExternalToolArgumentParser(_externalTool.ConnectionInfo); _process = new Process(); _process.StartInfo.UseShellExecute = true; _process.StartInfo.FileName = argParser.ParseArguments(_externalTool.FileName); _process.StartInfo.Arguments = argParser.ParseArguments(_externalTool.Arguments); _process.EnableRaisingEvents = true; _process.Exited += ProcessExited; _process.Start(); _process.WaitForInputIdle(Convert.ToInt32(Settings.Default.MaxPuttyWaitTime * 1000)); int startTicks = Environment.TickCount; while (_handle.ToInt32() == 0 & Environment.TickCount < startTicks + (Settings.Default.MaxPuttyWaitTime * 1000)) { _process.Refresh(); if (_process.MainWindowTitle != "Default IME") { _handle = _process.MainWindowHandle; } if (_handle.ToInt32() == 0) { Thread.Sleep(0); } } NativeMethods.SetParent(_handle, InterfaceControl.Handle); Runtime.MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, Language.strIntAppStuff, true); Runtime.MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, string.Format(Language.strIntAppHandle, _handle.ToString()), true); Runtime.MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, string.Format(Language.strIntAppTitle, _process.MainWindowTitle), true); Runtime.MessageCollector.AddMessage(Messages.MessageClass.InformationMsg, string.Format(Language.strIntAppParentHandle, InterfaceControl.Parent.Handle.ToString()), true); Resize(this, new EventArgs()); base.Connect(); return(true); } catch (Exception ex) { Runtime.MessageCollector.AddExceptionMessage(Language.strIntAppConnectionFailed, ex); return(false); } }
public void Setup() { var connectionInfo = new ConnectionInfo { Name = TestString, Hostname = TestString, Port = Port, Username = TestString, Password = TestString, Domain = TestString, Description = TestString, MacAddress = TestString, UserField = TestString }; _argumentParser = new ExternalToolArgumentParser(connectionInfo); }
public override bool Connect() { try { Runtime.MessageCollector?.AddMessage(MessageClass.InformationMsg, $"Attempting to start: {_externalTool.DisplayName}", true); if (_externalTool.TryIntegrate == false) { _externalTool.Start(InterfaceControl.Info); /* Don't call close here... There's nothing for the override to do in this case since * _process is not created in this scenario. When returning false, ProtocolBase.Close() * will be called - which is just going to call IntegratedProgram.Close() again anyway... * Close(); */ Runtime.MessageCollector?.AddMessage(MessageClass.InformationMsg, $"Assuming no other errors/exceptions occurred immediately before this message regarding {_externalTool.DisplayName}, the next \"closed by user\" message can be ignored", true); return(false); } var argParser = new ExternalToolArgumentParser(_externalTool.ConnectionInfo); _process = new Process { StartInfo = { UseShellExecute = true, FileName = argParser.ParseArguments(_externalTool.FileName), Arguments = argParser.ParseArguments(_externalTool.Arguments) }, EnableRaisingEvents = true }; _process.Exited += ProcessExited; _process.Start(); _process.WaitForInputIdle(Settings.Default.MaxPuttyWaitTime * 1000); var startTicks = Environment.TickCount; while (_handle.ToInt32() == 0 & Environment.TickCount < startTicks + Settings.Default.MaxPuttyWaitTime * 1000) { _process.Refresh(); if (_process.MainWindowTitle != "Default IME") { _handle = _process.MainWindowHandle; } if (_handle.ToInt32() == 0) { Thread.Sleep(0); } } NativeMethods.SetParent(_handle, InterfaceControl.Handle); Runtime.MessageCollector?.AddMessage(MessageClass.InformationMsg, Language.strIntAppStuff, true); Runtime.MessageCollector?.AddMessage(MessageClass.InformationMsg, string.Format(Language.strIntAppHandle, _handle), true); Runtime.MessageCollector?.AddMessage(MessageClass.InformationMsg, string.Format(Language.strIntAppTitle, _process.MainWindowTitle), true); Runtime.MessageCollector?.AddMessage(MessageClass.InformationMsg, string.Format(Language.strIntAppParentHandle, InterfaceControl.Parent.Handle), true); Resize(this, new EventArgs()); base.Connect(); return(true); } catch (Exception ex) { Runtime.MessageCollector?.AddExceptionMessage(Language.strIntAppConnectionFailed, ex); return(false); } }
public void Teardown() { _argumentParser = null; }