Skip to content

Commit

Permalink
Add validation job
Browse files Browse the repository at this point in the history
  • Loading branch information
notherealmarco committed Jun 14, 2024
1 parent be195a0 commit 6988ff0
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 1 deletion.
11 changes: 10 additions & 1 deletion .github/workflows/update-data.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,18 @@ on:
branches: ['main']

jobs:
update-data:
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 changes: 15 additions & 0 deletions .github/workflows/validate-questions.yml
Original file line number Diff line number Diff line change
@@ -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 changes: 33 additions & 0 deletions scripts/validate_questions.py
Original file line number Diff line number Diff line change
@@ -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!")

0 comments on commit 6988ff0

Please sign in to comment.