[TxMt] Re: odd pymate output bug

Dirk van Oosterbosch, IR labs labs at ixopusada.com
Thu Nov 2 22:33:36 UTC 2006


On 2-nov-2006, at 6:32, Bill Bumgarner wrote:

> [...]  There are three major features that I'd like to have right  
> about now:
>
> (1) be able to trigger pymate (scriptmate or whatever the new thing  
> is called) to run a sort of "designated driver script" at the root  
> level of a project directory.   Specifically:  I'm editing a unit  
> test in my testsuite/ subdirectory and I want to hit a single  
> command sequence to cause the run-tests.py script (found in the top  
> level "project" directory -- top level directory resulting from a  
> 'mate .' at the command line) to be executed.

At least your first wish-feature can easily be done.
I just finished a (global) command, "attached" to my project, which  
does something remotely connected.

It only runs if there is a special project variable saying so. It  
restarts Apache and after that's been successful, it loads (or  
refreshes) a "designated" test url.

It uses a project variable ($MY_SITE_TEST ) to check whether it  
actually should do it's thing. And then, if there is no project  
variable $MY_SITE_TEST_URL given, it runs TextMateTestUrl.py, which  
just outputs a url to test. I like to get that url from this python  
script, for this allows me to add extra clauses (when to test what)  
and lets me add comments to these test urls.

writing this script was fairly easy. The hardest part was to check on  
the stopping and starting of Apache.

I'm not sure if this helps any to the discussion, but I thought it  
was related, and I thought I share.
Below is the complete script, if this is usefull for anybody

best
dirk





if [[ "$MY_SITE_TEST" == 1 ]]; then
   if [[ "$MY_SITE_TEST_RESTART_APACHE" == 1 ]]; then
     #
     # For restarting apache we need to first stop it
     # and wait till all processes has been halted and
     # then restart it again.
     # We assume here that Apache has 4 (httpd) processes running
     # when fully functional and active
     #
     "${TM_BUNDLE_SUPPORT}/apachectlUsingKeychain.sh" stop
     for (( i = 0; i < 50 && $(echo $(ps -ax | grep [h]ttpd | wc -l))  
 > 0; i++ )); do
       sleep .2;
     done
     if [ $(ps -ax | grep [h]ttpd | wc -l) == 0 ]; then
       echo Apache has stopped
       "${TM_BUNDLE_SUPPORT}/apachectlUsingKeychain.sh" start
       for (( i = 0; i < 50 && $(echo $(ps -ax | grep [h]ttpd | wc - 
l)) < 4; i++ )); do
         sleep .2;
       done
       if [ $(ps -ax | grep [h]ttpd | wc -l) == 4 ]; then
         echo Apache has started again
       else
         echo "$(date +%Y-%m-%d\ %H:%M:%S): Apache not yet fully  
running. Run test aborted."
         exit
       fi
     else
       echo "$(date +%Y-%m-%d\ %H:%M:%S): Apache is still running.  
Relaunch aborted."
       exit
     fi
   fi
   if [[ $MY_SITE_TEST_URL ]]; then
     echo From the Project Preferences
     T_URL=$MY_SITE_TEST_URL
   else
     echo From the TextMateTestUrl script
     TPY=${TM_PYTHON:-pythonw}
     T_URL=$(echo $("$TPY" "$TM_PROJECT_DIRECTORY/TextMateTestUrl.py"))
   fi
   osascript -e "tell app \"Safari\" to open location \"$T_URL\""
fi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macromates.com/textmate/attachments/20061102/eb15c997/attachment.html>


More information about the textmate mailing list