RunTests Async with nforce-tooling

What do you get when you mix a long holiday weekend with a guy afflicted with ADSO (attention deficit...oh! shiny object)? You get new code for the Salesforce Tooling API! That's right, I added the following functionality over the weekend to the nforce-tooling plugin for nforce. So now you can run the following from your node.js code:

  1. ApexOrgWideCoverage - returns code coverage test results for an entire org.
  2. ApexCodeCoverage - returns code coverage test results for an Apex class or trigger including the percent covered, the number of lines covered and uncovered by tests and the actual line numbers of uncovered the code.
  3. RunTestsAsynchronous - executes the tests for specified classes and returns test coverage status of tests.

For example, here is a test script that deploys 2 Apex class and their accompanying test classes and then runs all tests asychronously to return the results. It then cleans up after itself by deleting the classes that were deployed. The output looks something like:

$ node examples/runTests.js
*** Running tests asynchronously. I know. This is awesome!! ***
Inserted ApexClass ToolingTest1  
Inserted ApexClass ToolingTest2  
Inserted ApexClass ToolingTest2_Test  
Inserted ApexClass ToolingTest1_Test  
Started async runTests job 707o000000AmuQD  
Checking status of runTests job 707o000000AmuQD repeatedly until all tests complete.  
All tests have completed! W00t!  
========================================
** TEST RESULTS **
========================================
Results for ToolingTest2_Test: Fail  
   System.AssertException: Assertion Failed
   Class.df14jeff.ToolingTest2_Test.assertName: line 7, column 1
========================================
Results for ToolingTest1: Pass  
   Percentage covered by tests: 0.3333333333333333
   Lines covered / uncovered: 2 / 4
   Uncovered lines: 7, 8, 11, 12
========================================
Everything complete! Resetting the test environment.  
Deleted ApexClass 01po0000001k9QzAAI  
Deleted ApexClass 01po0000001k9QtAAI  
Deleted ApexClass 01po0000001k9QyAAI  
Deleted ApexClass 01po0000001k9R3AAI  

I'm working on some cool stuff for the tooling plugin and hope to have something to show in the next couple of weeks.