Files
ollama-ai-answers-searxng/.github/workflows/validate.yml
T

75 lines
2.2 KiB
YAML

name: CI Test Guard
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
validate-code:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Set up Node.js (For JS Validation)
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install Python Linters
run: |
python -m pip install --upgrade pip
pip install flake8
- name: Python Syntax Check
run: python -m py_compile ai_answers.py
- name: Python Undefined Variable Check
run: flake8 ai_answers.py --select=E9,F63,F7,F82 --show-source
- name: JavaScript Extraction & Syntax Check
run: |
python -c '
import re, sys
with open("ai_answers.py", "r", encoding="utf-8") as f:
content = f.read()
match = re.search(r"FRONTEND_JS_TEMPLATE\s*=\s*r\"\"\"(.*?)\"\"\"", content, re.DOTALL)
if not match:
print("Could not find FRONTEND_JS_TEMPLATE")
sys.exit(1)
js_code = match.group(1)
replacements = {
"__IS_INTERACTIVE__": "true",
"__JS_Q__": "\"dummy_query\"",
"__JS_LANG__": "\"en\"",
"__JS_URLS__": "[]",
"__B64_CONTEXT__": "\"YmFzZTY0\"",
"__TK__": "\"dummy_token\"",
"__SCRIPT_ROOT__": "\"/searxng\"",
"__CITATION_HELPER_JS__": "/* citation helper */",
"__INTERACTIVE_JS_INIT__": "/* init */",
"__STREAM_FN_SIG__": "async function startStream(overrideQ = null, prevAnswer = null, auxContext = null)",
"__STREAM_Q__": "\"dummy_q\"",
"__STREAM_BODY__": "",
"__INTERACTIVE_JS_COMPLETE__": "/* complete */"
}
for key, val in replacements.items():
js_code = js_code.replace(key, val)
with open("frontend_test.js", "w", encoding="utf-8") as f:
f.write(js_code)
'
node --check frontend_test.js