Commit e529c8a8238ce7a9a382971e27fb7903532e05c8

Authored by Miguel Barão
1 parent 203495c3
Exists in master and in 1 other branch dev

- show error when yaml parsing questions fails.

Showing 3 changed files with 8 additions and 4 deletions   Show diff stats
BUGS.md
... ... @@ -6,7 +6,6 @@
6 6  
7 7 - parece que é preciso criar à mão a pasta para as respostas (ans/...) depois apercebo-me que os caminhos no teste dizem respeito à directoria donde o teste é corrido... as respostas deveriam guardadas no directório dado.
8 8 - se database for mal configurada, é criada uma base de dados vazia e rebenta na autenticacao.
9   -- mostrar erro quando nao consegue importar questions files
10 9 - testar regex na definicao das perguntas. como se faz rawstring em yaml? singlequote? problemas de backslash??? sim... necessário fazer \\ em varios casos, mas não é claro! e.g. \n é convertido em espaço mas \w é convertido em \\ e w.
11 10 - testar envio de parametros para stdin para perguntas tipo generator.
12 11  
... ... @@ -27,6 +26,7 @@
27 26  
28 27 # FIXED
29 28  
  29 +- mostrar erro quando nao consegue importar questions files
30 30 - pacotes exactos usados para instalar.
31 31 - detectar colisoes nas referencias das perguntas.
32 32 - usar pomba da ue moderna.
... ...
demo/questions.yaml
  1 +a: dskld
1 2 -
2 3 ref: solar-system-jupiter
3 4 type: radio
... ...
questions.py
... ... @@ -3,7 +3,7 @@ import yaml
3 3 import random
4 4 import re
5 5 import subprocess
6   -import os
  6 +import sys
7 7  
8 8 # Example usage:
9 9 #
... ... @@ -30,8 +30,11 @@ class QuestionsPool(dict):
30 30 with open(filename, 'r') as f:
31 31 questions = yaml.load(f)
32 32 except(FileNotFoundError):
33   - print(' * Questions file "%s" not found. Aborting...' % filename)
34   - os.sys.exit(1)
  33 + print(' * Questions file "{0}" not found. Aborting...'.format(filename))
  34 + sys.exit(1)
  35 + except(yaml.parser.ParserError):
  36 + print(' * Error in questions file "{0}". Aborting...'.format(filename))
  37 + sys.exit(1)
35 38  
36 39 # add defaults if missing from sources
37 40 for i, q in enumerate(questions):
... ...