public virtual void ImportCompletions() { using (var interactive = Prepare()) { if (((ReplWindowProxySettings)interactive.Settings).Version.IsIronPython) { interactive.SubmitCode("import clr"); interactive.WaitForText(">import clr", ">"); } Keyboard.Type("import "); List <string> names; using (var sh = interactive.WaitForSession <ICompletionSession>()) { Assert.IsNotNull(sh.Session.SelectedCompletionSet, "No selected completion set"); names = sh.Session.SelectedCompletionSet.Completions.Select(c => c.DisplayText).ToList(); } Console.WriteLine(string.Join(Environment.NewLine, names)); foreach (var name in names) { Assert.IsFalse(name.Contains('.'), name + " contained a dot"); } Keyboard.Type("os."); using (var sh = interactive.WaitForSession <ICompletionSession>()) { Assert.IsNotNull(sh.Session.SelectedCompletionSet, "No selected completion set"); names = sh.Session.SelectedCompletionSet.Completions.Select(c => c.DisplayText).ToList(); AssertUtil.ContainsExactly(names, "path"); } interactive.ClearInput(); } }
public void InSubFolder() { using (var solution = BasicProject.Generate().ToVs()) { var server = solution.OpenItem("Require", "SomeFolder", "baz.js"); Keyboard.Type("require("); using (var completionSession = server.WaitForSession <ICompletionSession>()) { Assert.AreEqual(1, completionSession.Session.CompletionSets.Count); // we pick up built-ins, folders w/ package.json, and peers AssertUtil.ContainsAtLeast( completionSession.Session.GetDisplayTexts(), "http", "Foo", "quox.js" ); AssertUtil.DoesntContain(completionSession.Session.GetDisplayTexts(), "./SomeFolder/baz.js"); AssertUtil.DoesntContain(completionSession.Session.GetDisplayTexts(), "./myapp.js"); AssertUtil.ContainsAtLeast( completionSession.Session.GetInsertionTexts(), "'http'", "'Foo'", "'quox.js'" ); Keyboard.Type("quo\t)"); server.WaitForText("require('quox.js')"); } } }
private static void TypeRequireStatementAndSelectModuleName(bool doubleQuotes, IEditor window) { Keyboard.Type(string.Format("require({0}ab{0})", doubleQuotes ? "\"" : "'")); window.MoveCaret(1, 10); window.Select(1, 10, 2); Keyboard.Type(Keyboard.CtrlSpace.ToString()); }
public virtual void IPythonSimpleCompletion() { using (var interactive = PrepareIPython(addNewLineAtEndOfFullyTypedWord: false)) { interactive.SubmitCode("x = 42"); interactive.WaitForText(">x = 42", ">"); interactive.ClearScreen(); Keyboard.Type("x."); using (var sh = interactive.WaitForSession <ICompletionSession>()) { // commit entry sh.Commit(); sh.WaitForSessionDismissed(); } interactive.WaitForText(">x." + ((ReplWindowProxySettings)interactive.Settings).IntFirstMember); // clear input at repl interactive.ClearInput(); // try it again, and dismiss the session Keyboard.Type("x."); using (interactive.WaitForSession <ICompletionSession>()) { } } }
public void AddNewFolderLongPathTooLong() { using (var app = new VisualStudioApp()) { var project = OpenLongFileNameProject(app, 24); using (new NodejsOptionHolder(NodejsPackage.Instance.GeneralOptionsPage, "ShowBrowserAndNodeLabels", false)) { var window = app.OpenSolutionExplorer(); // find server.js, send copy & paste, verify copy of file is there var projectNode = window.WaitForItem("Solution 'LongFileNames' (1 project)", "LFN"); AutomationWrapper.Select(projectNode); Keyboard.PressAndRelease(Key.F10, Key.LeftCtrl, Key.LeftShift); Keyboard.PressAndRelease(Key.D); Keyboard.PressAndRelease(Key.Right); Keyboard.PressAndRelease(Key.D); Keyboard.Type("012345678912"); Keyboard.PressAndRelease(Key.Enter); VisualStudioApp.CheckMessageBox("The filename or extension is too long."); } } }
public void AddNewFolderNested() { using (var app = new PythonVisualStudioApp()) { var project = app.OpenProject(@"TestData\HelloWorld.sln"); app.OpenSolutionExplorer().SelectProject(project); app.ExecuteCommand("Project.NewFolder"); Keyboard.Type("FolderX"); Keyboard.PressAndRelease(Key.Enter); var folderNode = app.OpenSolutionExplorer().WaitForChildOfProject(project, "FolderX"); folderNode.Select(); app.ExecuteCommand("Project.NewFolder"); Keyboard.Type("FolderY"); Keyboard.PressAndRelease(Key.Enter); var innerFolderNode = app.OpenSolutionExplorer().WaitForChildOfProject(project, "FolderX", "FolderY"); innerFolderNode.Select(); var newItem = project.ProjectItems.Item("FolderX").ProjectItems.Item("FolderY").ProjectItems.AddFromFile( TestData.GetPath(@"TestData\DebuggerProject\BreakpointTest.py") ); app.OpenSolutionExplorer().WaitForChildOfProject(project, "FolderX", "FolderY", "BreakpointTest.py"); } }
public void AddNewFolder() { using (var app = new VisualStudioApp()) { var project = app.OpenProject(@"TestData\NodejsProjectData\HelloWorld.sln"); using (new NodejsOptionHolder(NodejsPackage.Instance.GeneralOptionsPage, "ShowBrowserAndNodeLabels", false)) { var window = app.OpenSolutionExplorer(); // find server.js, send copy & paste, verify copy of file is there var projectNode = window.WaitForItem("Solution 'HelloWorld' (1 project)", "HelloWorld"); AutomationWrapper.Select(projectNode); var startingDirs = new HashSet <string>(Directory.GetDirectories(@"TestData\NodejsProjectData\HelloWorld"), StringComparer.OrdinalIgnoreCase); Keyboard.PressAndRelease(Key.F10, Key.LeftCtrl, Key.LeftShift); Keyboard.PressAndRelease(Key.D); Keyboard.PressAndRelease(Key.Right); Keyboard.PressAndRelease(Key.D); Keyboard.Type("MyNewFolder"); var curDirs = new HashSet <string>(Directory.GetDirectories(@"TestData\NodejsProjectData\HelloWorld"), StringComparer.OrdinalIgnoreCase); Assert.IsTrue(curDirs.IsSubsetOf(startingDirs) && startingDirs.IsSubsetOf(curDirs), "new directory created" + String.Join(", ", curDirs) + " vs. " + String.Join(", ", startingDirs)); Keyboard.PressAndRelease(Key.Enter); Assert.AreNotEqual(null, window.WaitForItem("Solution 'HelloWorld' (1 project)", "HelloWorld", "MyNewFolder")); Assert.IsTrue(Directory.Exists(@"TestData\NodejsProjectData\HelloWorld\MyNewFolder")); } } }
public void AddNewFolderLongPathBoundary() { using (var app = new VisualStudioApp()) { var project = OpenLongFileNameProject(app, 24); using (new NodejsOptionHolder(NodejsPackage.Instance.GeneralOptionsPage, "ShowBrowserAndNodeLabels", false)) { var window = app.OpenSolutionExplorer(); // find server.js, send copy & paste, verify copy of file is there var projectNode = window.WaitForItem("Solution 'LongFileNames' (1 project)", "LFN"); AutomationWrapper.Select(projectNode); Keyboard.PressAndRelease(Key.F10, Key.LeftCtrl, Key.LeftShift); Keyboard.PressAndRelease(Key.D); Keyboard.PressAndRelease(Key.Right); Keyboard.PressAndRelease(Key.D); Keyboard.Type("01234567891"); Keyboard.PressAndRelease(Key.Enter); Assert.AreNotEqual(null, window.WaitForItem("Solution 'LongFileNames' (1 project)", "LFN", "01234567891")); var projectLoc = Path.GetDirectoryName(project.FullName); var checkedPath = Path.Combine(projectLoc, "LongFileNames", "01234567891"); Assert.IsTrue(Directory.Exists(checkedPath), checkedPath + " does not exist"); } } }
public void DeleteFile() { using (var app = new VisualStudioApp()) { var project = app.OpenProject(@"TestData\NodejsProjectData\DeleteFile.sln"); using (new NodejsOptionHolder(NodejsPackage.Instance.GeneralOptionsPage, "ShowBrowserAndNodeLabels", false)) { var window = app.OpenSolutionExplorer(); // find server.js, send copy & paste, verify copy of file is there var programPy = window.WaitForItem("Solution 'DeleteFile' (1 project)", "HelloWorld", "server.js"); Assert.IsTrue(File.Exists(@"TestData\NodejsProjectData\DeleteFile\server.js")); AutomationWrapper.Select(programPy); Keyboard.Type(Key.Delete); app.WaitForDialog(); VisualStudioApp.CheckMessageBox(MessageBoxButton.Ok, "will be deleted permanently"); app.WaitForDialogDismissed(); window.WaitForItemRemoved("Solution 'DeleteFile' (1 project)", "HelloWorld", "server.js"); Assert.IsFalse(File.Exists(@"TestData\NodejsProjectData\DeleteFile\server.js")); } } }
public void DeleteLockedFolder() { using (var app = new VisualStudioApp()) { var project = app.OpenProject(@"TestData\NodejsProjectData\DeleteLockedFolder.sln"); using (new NodejsOptionHolder(NodejsPackage.Instance.GeneralOptionsPage, "ShowBrowserAndNodeLabels", false)) { var window = app.OpenSolutionExplorer(); var folderNode = window.WaitForItem("Solution 'DeleteLockedFolder' (1 project)", "DeleteLockedFolder", "Folder"); AutomationWrapper.Select(folderNode); var psi = new ProcessStartInfo( Path.Combine(Environment.GetEnvironmentVariable("WINDIR"), "system32", "cmd.exe")); psi.WorkingDirectory = Path.Combine(Environment.CurrentDirectory, @"TestData\NodejsProjectData\DeleteLockedFolder\Folder"); psi.CreateNoWindow = true; psi.UseShellExecute = false; using (var process = System.Diagnostics.Process.Start(psi)) { try { //Ensure the other process started and has time to lock the file System.Threading.Thread.Sleep(1000); Keyboard.Type(Key.Delete); app.WaitForDialog(); Keyboard.Type(Key.Enter); System.Threading.Thread.Sleep(500); VisualStudioApp.CheckMessageBox("The process cannot access the file 'Folder' because it is being used by another process."); } finally { process.Kill(); } } Assert.IsNotNull(window.FindItem("Solution 'DeleteLockedFolder' (1 project)", "DeleteLockedFolder", "Folder")); } } }
public void RequireBuiltinModules() { using (var solution = BasicProject.Generate().ToVs()) { var server = solution.OpenItem("Require", "server.js"); Keyboard.Type("require("); using (var completionSession = server.WaitForSession <ICompletionSession>()) { Assert.AreEqual(1, completionSession.Session.CompletionSets.Count); // we pick up built-ins, folders w/ package.json, and peers AssertUtil.ContainsAtLeast( completionSession.Session.GetDisplayTexts(), "http", "timers", "module", "addons", "util", "tls", "path", "fs", "https", "url", "assert", "child_process", "zlib", "os", "cluster", "tty", "vm" ); } } }
public void RequireAfterContinuedMultiLineStringNoCompletions() { using (var solution = BasicProject.Generate().ToVs()) { var server = solution.OpenItem("Require", "server.js"); Keyboard.Type("'foo\\\rrequire("); server.WaitForText("'foo\\\r\nrequire("); server.AssertNoIntellisenseSession(); } }
public void RequireAfterDotNoCompletions() { using (new OptionHolder("TextEditor", "Node.js", "BraceCompletion", false)) { using (var solution = BasicProject.Generate().ToVs()) { var server = solution.OpenItem("Require", "server.js"); Keyboard.Type("x.require("); server.WaitForText("x.require("); server.AssertNoIntellisenseSession(); } } }
public void RequireKeyboardCompletionBraceCompletionOn() { using (new OptionHolder("TextEditor", "Node.js", "BraceCompletion", true)) { using (var solution = BasicProject.Generate().ToVs()) { var server = solution.OpenItem("Require", "server.js"); Keyboard.Type("require(ad"); WaitForCompletionSessionAndCommit(server); server.WaitForText("require('addons')"); Keyboard.Type(")"); server.WaitForText("require('addons')"); Keyboard.Backspace(20); Keyboard.Type("require('ad"); WaitForCompletionSessionAndCommit(server); server.WaitForText("require('addons')"); Keyboard.Type("')"); server.WaitForText("require('addons')"); Keyboard.Backspace(20); Keyboard.Type("require(\"ad"); WaitForCompletionSessionAndCommit(server); server.WaitForText("require(\"addons\")"); Keyboard.Type("\")"); server.WaitForText("require(\"addons\")"); Keyboard.Backspace(20); TypeRequireStatementAndSelectModuleName(false, server); Keyboard.Type("ad"); WaitForCompletionSessionAndCommit(server); server.WaitForText("require('addons')"); Keyboard.PressAndRelease(Key.Right); Keyboard.PressAndRelease(Key.Right); Keyboard.Backspace(20); TypeRequireStatementAndSelectModuleName(true, server); Keyboard.Type("ad"); WaitForCompletionSessionAndCommit(server); server.WaitForText("require(\"addons\")"); } } }
public void AddNewFolder(PythonVisualStudioApp app) { var project = app.OpenProject(@"TestData\HelloWorld.sln"); app.OpenSolutionExplorer().SelectProject(project); app.ExecuteCommand("Project.NewFolder"); Keyboard.Type("MyNewFolder"); Keyboard.PressAndRelease(Key.Enter); app.OpenSolutionExplorer().WaitForChildOfProject(project, "MyNewFolder"); }
public virtual void RegressionImportMultipleModules() { using (var interactive = Prepare(addNewLineAtEndOfFullyTypedWord: true)) { Keyboard.Type("import "); using (var sh = interactive.WaitForSession <ICompletionSession>()) { var names = sh.Session.SelectedCompletionSet.Completions.Select(c => c.DisplayText).ToList(); var nameset = new HashSet <string>(names); Assert.AreEqual(names.Count, nameset.Count, "Module names were duplicated"); } } }
public void CopyPasteRenameFile() { using (var app = new VisualStudioApp()) { var project = app.OpenProject(@"TestData\CopyPasteRenameProject\CopyPasteRenameProject.sln"); using (new NodejsOptionHolder(NodejsPackage.Instance.GeneralOptionsPage, "ShowBrowserAndNodeLabels", false)) { var window = app.OpenSolutionExplorer(); var jsFile = window.WaitForItem("Solution 'CopyPasteRenameProject' (2 projects)", "CopyPasteRenameJavaScript", "app.js"); AutomationWrapper.Select(jsFile); Keyboard.ControlC(); Keyboard.ControlV(); var copiedJsFile = window.WaitForItem("Solution 'CopyPasteRenameProject' (2 projects)", "CopyPasteRenameJavaScript", "app - Copy.js"); Assert.AreNotEqual(null, copiedJsFile); AutomationWrapper.Select(copiedJsFile); Keyboard.PressAndRelease(Key.F2); System.Threading.Thread.Sleep(100); Keyboard.Type("renamed"); Keyboard.PressAndRelease(Key.Enter); Assert.AreNotEqual(null, window.WaitForItem("Solution 'CopyPasteRenameProject' (2 projects)", "CopyPasteRenameJavaScript", "renamed.js")); var tsFile = window.WaitForItem("Solution 'CopyPasteRenameProject' (2 projects)", "CopyPasteRenameProjectTypeScript", "app.ts"); AutomationWrapper.Select(tsFile); Keyboard.ControlC(); Keyboard.ControlV(); var copiedTsFile = window.WaitForItem("Solution 'CopyPasteRenameProject' (2 projects)", "CopyPasteRenameProjectTypeScript", "app - Copy.ts"); Assert.AreNotEqual(null, copiedTsFile); AutomationWrapper.Select(copiedTsFile); Keyboard.PressAndRelease(Key.F2); System.Threading.Thread.Sleep(100); Keyboard.Type("renamed"); Keyboard.PressAndRelease(Key.Enter); Assert.AreNotEqual(null, window.WaitForItem("Solution 'CopyPasteRenameProject' (2 projects)", "CopyPasteRenameProjectTypeScript", "renamed.ts")); } } }
public void RequireAfterSemiColon() { using (var solution = BasicProject.Generate().ToVs()) { var server = solution.OpenItem("Require", "server.js"); Keyboard.Type("f(x);\rrequire("); using (var completionSession = server.WaitForSession <ICompletionSession>()) { Assert.AreEqual(1, completionSession.Session.CompletionSets.Count); Keyboard.Type("ht\t)"); server.WaitForText("f(x);\r\nrequire('http')"); } } }
public virtual void IPythonSimpleSignatureHelp() { using (var interactive = PrepareIPython()) { Assert.IsNotNull(interactive); interactive.SubmitCode("def f(): pass"); interactive.WaitForText(">def f(): pass", ">"); Keyboard.Type("f("); using (var sh = interactive.WaitForSession <ISignatureHelpSession>()) { Assert.AreEqual("<no docstring>", sh.Session.SelectedSignature.Documentation); } } }
public void UserModuleInFolder() { using (var solution = BasicProject.Generate().ToVs()) { var server = solution.OpenItem("Require", "server.js"); Keyboard.Type("require("); using (var completionSession = server.WaitForSession <ICompletionSession>()) { Assert.AreEqual(1, completionSession.Session.CompletionSets.Count); Keyboard.Type("./Some\t)"); server.WaitForText("require('./SomeFolder/baz.js')"); } } }
public void CloseParenCommits() { using (var solution = BasicProject.Generate().ToVs()) { var server = solution.OpenItem("Require", "server.js"); Keyboard.Type("require("); using (var completionSession = server.WaitForSession <ICompletionSession>()) { Assert.AreEqual(1, completionSession.Session.CompletionSets.Count); Keyboard.Type("ht)"); server.WaitForText("require('http')"); } } }
public void AddNewFolderNested() { using (var app = new VisualStudioApp()) { var project = app.OpenProject(@"TestData\NodejsProjectData\HelloWorld.sln"); using (new NodejsOptionHolder(NodejsPackage.Instance.GeneralOptionsPage, "ShowBrowserAndNodeLabels", false)) { var window = app.OpenSolutionExplorer(); // find server.js, send copy & paste, verify copy of file is there var projectNode = window.WaitForItem("Solution 'HelloWorld' (1 project)", "HelloWorld"); AutomationWrapper.Select(projectNode); Keyboard.PressAndRelease(Key.F10, Key.LeftCtrl, Key.LeftShift); Keyboard.PressAndRelease(Key.D); Keyboard.PressAndRelease(Key.Right); Keyboard.PressAndRelease(Key.D); Keyboard.Type("FolderX"); Keyboard.PressAndRelease(Key.Enter); var folderNode = window.WaitForItem("Solution 'HelloWorld' (1 project)", "HelloWorld", "FolderX"); Assert.AreNotEqual(null, folderNode, "failed to find folder X"); AutomationWrapper.Select(folderNode); Keyboard.PressAndRelease(Key.F10, Key.LeftCtrl, Key.LeftShift); Keyboard.PressAndRelease(Key.D); Keyboard.PressAndRelease(Key.Right); Keyboard.PressAndRelease(Key.D); Keyboard.Type("FolderY"); Keyboard.PressAndRelease(Key.Enter); var innerFolderNode = window.WaitForItem("Solution 'HelloWorld' (1 project)", "HelloWorld", "FolderX", "FolderY"); Assert.AreNotEqual(null, innerFolderNode, "failed to find folder Y"); AutomationWrapper.Select(innerFolderNode); var newItem = project.ProjectItems.Item("FolderX").Collection.Item("FolderY").Collection.AddFromFile( TestData.GetPath(@"TestData\DebuggerProject\BreakpointBreakOn.js") ); Assert.AreNotEqual(null, window.WaitForItem("Solution 'HelloWorld' (1 project)", "HelloWorld", "FolderX", "FolderY", "BreakpointBreakOn.js"), "failed to find added file"); } } }
public void CopyPasteRenameFile() { using (var app = new VisualStudioApp()) { var project = app.OpenProject(@"TestData\CopyPasteRenameProject\CopyPasteRenameProject.sln"); app.OpenSolutionExplorer(); var window = app.SolutionExplorerTreeView; var jsFile = window.WaitForItem("Solution 'CopyPasteRenameProject' (2 projects)", "CopyPasteRenameJavaScript", "app.js"); AutomationWrapper.Select(jsFile); Keyboard.ControlC(); Keyboard.ControlV(); var copiedJsFile = window.WaitForItem("Solution 'CopyPasteRenameProject' (2 projects)", "CopyPasteRenameJavaScript", "app - Copy.js"); Assert.AreNotEqual(null, copiedJsFile); AutomationWrapper.Select(copiedJsFile); Keyboard.PressAndRelease(Key.F2); System.Threading.Thread.Sleep(100); Keyboard.Type("renamed"); Keyboard.PressAndRelease(Key.Enter); Assert.AreNotEqual(null, window.WaitForItem("Solution 'CopyPasteRenameProject' (2 projects)", "CopyPasteRenameJavaScript", "renamed.js")); var tsFile = window.WaitForItem("Solution 'CopyPasteRenameProject' (2 projects)", "CopyPasteRenameProjectTypeScript", "app.ts"); AutomationWrapper.Select(tsFile); Keyboard.ControlC(); Keyboard.ControlV(); var copiedTsFile = window.WaitForItem("Solution 'CopyPasteRenameProject' (2 projects)", "CopyPasteRenameProjectTypeScript", "app - Copy.ts"); Assert.AreNotEqual(null, copiedTsFile); AutomationWrapper.Select(copiedTsFile); Keyboard.PressAndRelease(Key.F2); System.Threading.Thread.Sleep(100); Keyboard.Type("renamed"); Keyboard.PressAndRelease(Key.Enter); Assert.AreNotEqual(null, window.WaitForItem("Solution 'CopyPasteRenameProject' (2 projects)", "CopyPasteRenameProjectTypeScript", "renamed.ts")); } }
public virtual void Comments() { using (var interactive = Prepare()) { const string code = "# fob"; Keyboard.Type(code + "\r"); interactive.WaitForText(">" + code, "."); const string code2 = "# oar"; Keyboard.Type(code2 + "\r"); interactive.WaitForText(">" + code, "." + code2, "."); Keyboard.Type("\r"); interactive.WaitForText(">" + code, "." + code2, ".", ">"); } }
public void RequireAfterComma() { using (new OptionHolder("TextEditor", "Node.js", "BraceCompletion", false)) { using (var solution = BasicProject.Generate().ToVs()) { var server = solution.OpenItem("Require", "server.js"); Keyboard.Type("f(a, require("); using (var completionSession = server.WaitForSession <ICompletionSession>()) { Assert.AreEqual(1, completionSession.Session.CompletionSets.Count); Keyboard.Type("ht\t)"); server.WaitForText("f(a, require('http')"); } } } }
/// <summary> /// Move item to a folder that has a symbolic link. Verify we cannot move /// ourselves to ourselves and that moves are reflected in both the folder and its symbolic link. /// NOTE: Because of symbolic link creation, this test must be run as administrator. /// </summary> private void MoveFileFromFolderToLinkedFolder(MoveDelegate mover) { foreach (var projectType in ProjectTypes) { var projectDefs = new[] { new ProjectDefinition("MoveLinkedFolder", projectType, ItemGroup( Content("textfile.txt", "text file contents"), Folder("Folder"), Content("Folder\\FileInFolder.txt", "File inside of linked folder..."), SymbolicLink("FolderLink", "Folder") ) ) }; using (var solution = SolutionFile.Generate("MoveLinkedFolder", projectDefs).ToVs()) { mover( solution, solution.FindItem("MoveLinkedFolder", "FolderLink"), solution.FindItem("MoveLinkedFolder", "Folder", "FileInFolder.txt") ); // Say okay to the error that pops up since we can't move to ourselves. solution.WaitForDialog(); Keyboard.Type(Key.Enter); solution.WaitForDialogDismissed(); // Verify that after the dialog our files are still present. solution.AssertFileExists("MoveLinkedFolder", "FolderLink", "FileInFolder.txt"); solution.AssertFileExists("MoveLinkedFolder", "Folder", "FileInFolder.txt"); // Now move the text file in the root. Expect it to move and be in both. mover( solution, solution.FindItem("MoveLinkedFolder", "FolderLink"), solution.FindItem("MoveLinkedFolder", "textfile.txt") ); solution.AssertFileExists("MoveLinkedFolder", "FolderLink", "textfile.txt"); solution.AssertFileExists("MoveLinkedFolder", "Folder", "textfile.txt"); } } }
public void SubmodulesFiles() { var project = Project("RequireSubmodules", Compile("server", ""), Folder("mymod"), Compile("mymod\\index", ""), Compile("mymod\\quox", "") ); using (var solution = project.Generate().ToVs()) { var server = solution.OpenItem("RequireSubmodules", "server.js"); server.MoveCaret(1, 1); Keyboard.Type("require('./mymod/q\t"); server.WaitForText("require('./mymod/quox.js')"); } }
public void SubmodulesFiles2() { var project = Project("RequireSubmodules", Compile("server", ""), Folder("mymod"), Compile("mymod\\quox", "") ); using (new OptionHolder("TextEditor", "Node.js", "BraceCompletion", false)) { using (var solution = project.Generate().ToVs()) { var server = solution.OpenItem("RequireSubmodules", "server.js"); server.MoveCaret(1, 1); Keyboard.Type("require('./mymod/q\t)"); server.WaitForText("require('./mymod/quox.js')"); } } }
public virtual void NoSnippets() { // https://pytools.codeplex.com/workitem/2945 is the reason for // disabling snippets; https://pytools.codeplex.com/workitem/2947 is // where we will re-enable them when they work properly. using (var interactive = Prepare()) { int spaces = interactive.TextView.Options.GetOptionValue(DefaultOptions.IndentSizeOptionId); int textWidth = interactive.CurrentPrimaryPrompt.Length + 3; int totalChars = spaces; while (totalChars < textWidth) { totalChars += spaces; } Keyboard.Type("def\t"); interactive.WaitForText(">def" + new string(' ', totalChars - textWidth)); } }
public void DjangoIncludeInProject(PythonVisualStudioApp app) { app.OpenProject(@"TestData\DjangoApplication.sln"); app.OpenSolutionExplorer(); var window = app.SolutionExplorerTreeView; app.Dte.ExecuteCommand("Project.ShowAllFiles"); // start showing all var folderNode = window.WaitForItem("Solution 'DjangoApplication' (1 project)", "DjangoApplication", "Folder"); Mouse.MoveTo(folderNode.GetClickablePoint()); Mouse.Click(MouseButton.Right); Keyboard.Type("j"); // Exclude from Project app.Dte.ExecuteCommand("Project.ShowAllFiles"); // stop showing all Assert.IsNull(window.WaitForItemRemoved("Solution 'DjangoApplication' (1 project)", "DjangoApplication", "notinproject.py")); Assert.IsNotNull(window.WaitForItem("Solution 'DjangoApplication' (1 project)", "DjangoApplication", "Folder", "test.py")); }