Textmate “Django test executator tabajara”

O script a seguir pode ser usado para executar testes automatizados em uma aplicação Django a partir do Textmate.

Ele deve ser usado como um “command” no bundle “Python Django” do Textmate e funciona exclusivamente com o sistema de testes do próprio Django (manage.py test).

#!/bin/bash

python=$(/usr/bin/which ${TM_PYTHON:-python})
project="$(dirname "$TM_DIRECTORY")"
app="$(basename "$TM_DIRECTORY")"

# virtualenv
if [ -x "$project/../bin/python" ]; then
   python="$project/../bin/python"
fi

class_filter="s/^ *class +([A-Za-z0-9_]+Test)(.*Test.*):/1/p"
test_filter="s/^ *def +(test[a-zA-Z0-9_]+) *(self.*$/1/p"

echo ""
echo "Django test results"
echo ""
echo "

Django test results

" if [ -f "${project}/settings.py" -a -f "${project}/manage.py" ]; then echo "

Test Results for: $app

" echo "
"

  # selected text test
  tests=$(
    if [ x"$TM_FILENAME" = x"tests.py" -a 
         "$TM_SELECTED_TEXT" ]; then
      classname=$(
        sed -nE "1,${TM_INPUT_START_LINE}p" "${TM_FILEPATH}" |
        sed -nE "$class_filter" |
        tail -1
      )
      echo "$TM_SELECTED_TEXT" | while read l; do
        class_parse=$(echo "$l" | sed -nE "$class_filter")
        [ "$class_parse" ] && classname="$class_parse"
        test_parse=$(echo "$l" | sed -nE "$test_filter")
        [ "$test_parse" ] && echo "$app.$classname.$test_parse"
      done
    fi
  )
	
  [ -z "$tests" ] && tests="$app"
  $python $project/manage.py test $tests
  # I don't have time to "fight" against wordpress
  # echo "CLOSE_pre_tag"
else
  echo "

Error: Django App expected.

" fi # Again, I don't have time to "fight" against wordpress # echo "CLOSE_body_tag CLOSE_html_tag""
  • Este comando requer que o Bundle "Python Django" esteja instalado. Existe uma versão no repositório do próprio Textmate e uma versão atualizada no bitbucket.
  • Acione "Bundles->Bundle Editor->Show Bundle Editor".
  • Selecione "Python Django" e clique no botão "+ New Command".
  • Escolha um nome para o comando. Aqui eu uso "Run App Tests".
  • Configure as opções do comando conforme abaixo:
    • Save: All files in Project
    • Commands: O script acima
    • Input: None
    • Output: Show as HTML
    • Activation: Key Equivalent ⌃⌥⌘R
    • Scope Selector: source.python.django

Modo de usar

  • O comando é acionado com as teclas ⌃⌥⌘R.
  • O comando executa apenas os testes da aplicação à qual o arquivo que você está editando pertence.
  • Por padrão o comando executará todos os testes da aplicação.
  • Se você selecionar o os testes que você quer executar no arquivo django_app/tests.py o comando executará apenas esses testes.
  • O comando tem um suporte básico para usuários do virtualenv. Para que o comando use o virtualenv é necessário estruturar os seus diretórios da seguinte maneira: virtualenv_root/django_project/django_app. Isso é necessário para que o comando encontre o interpretador virtualenv_root/bin/python.

Publicado por

Osvaldo Santana

Desenvolvedor Python e Django, Empreendedor, dono de uma motocicleta esportiva, hobbysta de eletrônica, fã de automobilismo e corinthiano