mirror of
https://github.com/appinfosapienza/so-un-bot.git
synced 2025-03-13 09:25:23 +01:00
Add validation job
This commit is contained in:
parent
be195a0de7
commit
6988ff0549
3 changed files with 58 additions and 1 deletions
11
.github/workflows/update-data.yml
vendored
11
.github/workflows/update-data.yml
vendored
|
@ -6,9 +6,18 @@ on:
|
|||
branches: ['main']
|
||||
|
||||
jobs:
|
||||
validate-questions:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Validate questions
|
||||
run: python scripts/validate_questions.py
|
||||
shell: sh
|
||||
|
||||
update-data:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Call webhook
|
||||
run: curl -X POST ${{secrets.DEPLOY_WEBHOOK}}
|
15
.github/workflows/validate-questions.yml
vendored
Normal file
15
.github/workflows/validate-questions.yml
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
name: Validate questions
|
||||
|
||||
# Configures this workflow to run every time a change is pushed to the branch called `release`.
|
||||
on: [pull_request]
|
||||
|
||||
jobs:
|
||||
validate-questions:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Validate questions
|
||||
run: python scripts/validate_questions.py
|
||||
shell: sh
|
33
scripts/validate_questions.py
Normal file
33
scripts/validate_questions.py
Normal file
|
@ -0,0 +1,33 @@
|
|||
import os
|
||||
import json
|
||||
import logging
|
||||
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
|
||||
for filename in os.listdir("data/questions"):
|
||||
logging.info("Analyzing " + filename)
|
||||
with open(os.path.join("data/questions", filename), 'r') as f:
|
||||
text = f.read()
|
||||
try:
|
||||
data = json.loads(text)
|
||||
|
||||
for q in data:
|
||||
if q["quest"] == "" and q["image"] == "":
|
||||
raise Exception(str(data.index(q)) + ") Question's text and image cannot both be empty.")
|
||||
if q["quest"] is None or q["image"] is None or q["answers"] is None or q["correct"] is None:
|
||||
raise Exception(str(data.index(q)) + ") Some parameters are null or missing.")
|
||||
|
||||
if len(q["answers"]) == 0:
|
||||
raise Exception(str(data.index(q)) + ") Question has no answers.")
|
||||
|
||||
for a in q["answers"]:
|
||||
if a["text"] == "" and a["image"] == "":
|
||||
raise Exception(str(data.index(q)) + ") Answer's text and image cannot both be empty.")
|
||||
if a["text"] is None or a["image"] is None:
|
||||
raise Exception(str(data.index(q)) + ") Some answer's parameters are null or missing.")
|
||||
|
||||
except Exception as e:
|
||||
logging.error(getattr(e, 'message', repr(e)))
|
||||
logging.fatal(filename + " is invalid. Aborting.")
|
||||
|
||||
logging.info("Parsing successful!")
|
Loading…
Reference in a new issue