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 "<html><head>" echo "<title>Django test results</title>" echo "</head><body>" echo "<h1>Django test results</h1>" if [ -f "${project}/settings.py" -a \ -f "${project}/manage.py" ]; then echo "<h2>Test Results for: $app</h2>" echo "<pre>" # 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 "<p style=\"color:red;\">Error: Django App expected.</p>" 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.


