[IronPython] trying to build IronPythonTools locally

Dino Viehland dinov at microsoft.com
Mon Oct 25 19:36:55 CEST 2010

Oh, I should add both of those projects are both standalone EXEs which can be run to run all of the tests and they're also VS unit tests.  So if you have some fancy version of VS w/ unit testing then you can just run all the tests from within VS using Test->Run->All Tests in Solution.  If you don't have the fancy version you can just them from the command line.

From: users-bounces at lists.ironpython.com [mailto:users-bounces at lists.ironpython.com] On Behalf Of Dino Viehland
Sent: Monday, October 25, 2010 10:32 AM
To: Discussion of IronPython
Subject: Re: [IronPython] trying to build IronPythonTools locally

The tests are rather lacking but some do exist.  There's 2 test projects: AnalysisTest and UnitTests.  AnalysisTest contains tests which are directly targeting the analysis engine.  UnitTests includes some mocks for various VS interfaces and handles things like code completion.  I also have a set of tests that I would run through by hand.  I've pasted those below in case anyone wants to automate them.

REPL Window:
            View->IronPython Command Line
                        "def f(): pass" + 2 ENTERS
                        f( should bring signature help up
                        "x = 42"
                        "x." should bring up intellisense completion
                        "x " should not being up any completions.
                        Up-up should scroll back to def f(): pass
                        Enter in a middle of a line should insert new line
                        Escape should clear both lines
                        "x=42" left left ctrl-enter should commit assignment
                        while True: pass / Right Click -> Break Execution (or Ctrl-Break) should break execution
                        Closing window + re-opening should still have contents
                        Ctrl-Enter on previous input should paste input to end of buffer (doing it again should paste again - appending onto previous input)
                        Type some text, hit Ctrl-Enter, should execute current line
                        Type a function definition, go to next line, type pass, navigate left, hit ctrl-enter, should immediately execute func def.
                        Context Menu Cut/Copy/Paste works
                        Context Menu Reset repl works
                        x = 42; x.car[enter] - should type "car" not complete to "conjugate"
                        x = 42; x.conjugate[enter] - should respect enter completes option, and should respect enter at end of word completes option.  When it does execute the text the output should be on the next line.
Define function "def f():\r\n    print 'hi'", scroll back up to history, add print "hello" to 2nd line, enter, scroll back through both function definitions
                        Enter "while True: pass", then hit up/down arrow, should move the caret in the edit buffer
                        Type "raise Exception()", hit enter, raise Exception() should have appropriate syntax color highlighting.
                        Type: "def f():[ENTER]print 'hi'[ENTER][ENTER]", hit up arrow, function should be brought back, cursor should be right after 'hi'.  Press ENTER again, type "print 'hello'"[ENTER][ENTER] and function should be committed.
                        Type "import sys", commit, then type "sys", and hit backspace a couple of times.  No exceptions should occur
                        Tools->Options->Text Editor->IronPython->Advanced->Options.
                                    Add "Frames=True", go to repl, restart repl, import sys, make sure sys._getframe is present
                                    Go back to options, add ";RecursionLimit=50", restart repl, import sys, sys.getrecursionlimit() should return 50, "def f(): f()", call f(), should get a max recursion overflowed exception stack trace
            Debug->Execute * in REPL
                        In Python file should execute text in REPL window
                        Variables assigned in file should be in scope
                        Send to Python Repl from edit buffer should send text to REPL window
                                    Should open REPL if not already open
                                    Should not send enter unless selected in text
                        + View->IronPython Command Line tests
                        import System / System.Environment.Exit(0);
                        Kill remote process
                        Start project, make sure CWD (System.Environment.CurrentDirectory) is project CWD
Close project, open .py file, start .py file, make sure CWD is .py files directory

Navigation Bar:
            Verify displays and greys out 1st item when at top of file not in class/def
            Verify lhs properly transitions into class and func and back out (going back to dimmed & 1st item selected)
            Verify function in class properly transitions when moving in and out (going back to dimmed & 1st item selected)
            "class " and "def " - functions and classes w null names shouldn't break the navigation bar (shouldn't display in navigation bar at all?)

            Verify various left hand sides which need to be successfully parsed:
                        X(0, 0).
                        X(0, *args).
                        X(0, **args).
            Verify from import completions
            Verify import completions
            Verify Ctrl-J/Ctrl-Space reflects all imported members
            "2." Shouldn't bring up completions (typing a float)
            Comma shouldn't bring up signature help in tuples, lists, and dictionaries
            from modulethatdoesnot exist import
            import modulethatdoesnotexist

Signature Help:
            ( brings up signature help
            Comma navigiates to next parameter
            Comma when overloads present and exceeds # of args navigates to next overload
            Too many args properly goes to params array (both when params array has more and less arguments vs another overload)
Type: def(f, x): pass, then do f(, backspace over (, signature help should be dismissed.  Type (f( backspace over (, help should be dismissed, new help should be created for previous call.

Object Browser:
            Object browser properly reports class and function members
            Signature help is properly displayed
            Double clicking goes to definition

            Classes and functions are properly outlined
            Collapsing functions/classes works
            Collapsing functions/classes with weird ending white space collapses in a sane manner

            Run through each template, create a new project, run it, run it in debug mode.
            Create each file template in applicable project

Brace matching:
            Test at beginning and end, should high light both braces:
            (), [], {}
            ( ), [ ], { }
                        ([), [(], {(}
                        ( () ), [ [] ], { {} }
            Test ( and ) at beginning and end of file, beginning and end of line

Find All References:
            Ctrl-K-Ctrl-R at start of editor buffer
            Ctrl-K-Ctrl-R at end of editor buffer
            Ctrl-K Ctrl-R at start of identifier
            Ctrl-K Ctrl-R at end of identifier

            Select a region and press enter should clear the region
            Select a region and press backspace - should clear the region
            Enter some text on a line, hit enter, enter 12 characters of white space on the line, move left 8 characters, hit backspace, should delete 4 spaces to the left.
            Enter "abcd" on a line followed by a bunch of spaces.  Then move back to the "d", press backspace, should delete the d.

WPF Designer:
            Drag all controls onto the designer surface successfully (note Image fails if the project is on a network share due to a WPF bug - it fails in C# as well)
            Open .xaml file, close .py file, double click object to add event handler, should open .py file and add event handler
            Add ? control, click on Name over in properties, change name.  Go to code and dot through name on Window object.  Name should be available in intellisense.

From: users-bounces at lists.ironpython.com [mailto:users-bounces at lists.ironpython.com] On Behalf Of José F. Romaniello
Sent: Monday, October 25, 2010 9:02 AM
To: Discussion of IronPython
Subject: Re: [IronPython] trying to build IronPythonTools locally

Oh thanks, you are right!
I can build now.
Another question, is there any unit tests for IronPythonTools? I am using the IronPythonTools.sln in the trunk.

I just want to dig in to the code and see if i can contribute with few bugs I found in the highlighting and code completion.

I've  some experience doing this same thing for other extension (http://hqladdin.codeplex.com)

thank you

2010/10/25 Curt Hagenlocher <curt at hagenlocher.org<mailto:curt at hagenlocher.org>>
This is the "uninstall previous version" task. Is it possible that you've previously installed the extension when running as Administrator and that your current user id doesn't have the rights to delete the files? This might be true if, for instance, you previously installed from the MSI.
On Mon, Oct 25, 2010 at 7:38 AM, José F. Romaniello <jfromaniello at gmail.com<mailto:jfromaniello at gmail.com>> wrote:
Hi all, I am trying to build IronPython Tools on my machine, but i get this exception:

------ Build started: Project: IronPythonTools, Configuration: Debug Any CPU ------
  IronPythonTools ->
  IronPythonTools ->
  IronPythonTools -> D:\pos\IronPython\bin\Debug\IronPythonTools.dll
  Creating intermediate PkgDef file.
  Creating VSIX Container...
  IronPythonTools -> D:\pos\IronPython\bin\Debug\IronPythonTools.vsix
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\VSSDK\Microsoft.VsSDK.targets(420,5): error : Exception has been thrown by the target of an invocation.
========== Build: 11 succeeded or up-to-date, 1 failed, 0 skipped ==========

I tried with a reset of the  Experimental Hive but I have still the same problem.

Thank you in advance!

Users mailing list
Users at lists.ironpython.com<mailto:Users at lists.ironpython.com>

Users mailing list
Users at lists.ironpython.com<mailto:Users at lists.ironpython.com>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20101025/275733cb/attachment.html>

More information about the Ironpython-users mailing list