-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest-e2e.sh
More file actions
executable file
Β·164 lines (134 loc) Β· 9.08 KB
/
test-e2e.sh
File metadata and controls
executable file
Β·164 lines (134 loc) Β· 9.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#!/usr/bin/env bash
# Quorum v0.4.0 β End-to-End Feature Test
# Usage: bash test-e2e.sh 2>&1 | tee test-e2e.log
set -uo pipefail
PASS=0; FAIL=0; SKIP=0; ERRORS=()
GREEN='\033[0;32m'; RED='\033[0;31m'; YELLOW='\033[0;33m'; CYAN='\033[0;36m'; NC='\033[0m'
pass() { ((PASS++)); echo -e " ${GREEN}β${NC} $1"; }
fail() { ((FAIL++)); ERRORS+=("$1: $2"); echo -e " ${RED}β${NC} $1 β $2"; }
skip() { ((SKIP++)); echo -e " ${YELLOW}β${NC} $1 β $2"; }
echo -e "${CYAN}ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
echo -e "${CYAN} Quorum v0.4.0 β End-to-End Test Suite${NC}"
echo -e "${CYAN}ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
echo ""
# βββ Meta βββ
echo -e "${CYAN}βΈ Meta${NC}"
OUT=$(quorum --version 2>&1); [[ "$OUT" == "0.4.0" ]] && pass "--version" || fail "--version" "got: $OUT"
OUT=$(quorum --help 2>&1); echo "$OUT" | grep -q "ask" && pass "--help" || fail "--help" "missing"
# βββ Providers βββ
echo -e "\n${CYAN}βΈ Providers${NC}"
OUT=$(quorum providers list 2>&1); echo "$OUT" | grep -qi "codex" && pass "providers list" || fail "providers list" "no output"
# βββ Core βββ
echo -e "\n${CYAN}βΈ Core Deliberation${NC}"
OUT=$(quorum ask "What is 2+2?" --providers codex,kimi --rapid 2>&1) || true
echo "$OUT" | grep -qi "winner\|consensus" && pass "ask --rapid (codex+kimi)" || fail "ask --rapid" "no result"
SESSION1=$(echo "$OUT" | grep -oE 'Session: [^ ]+' | tail -1 | sed 's/Session: //')
OUT=$(quorum ask "What is 3+3?" -1 --providers codex 2>&1) || true
echo "$OUT" | grep -qi "6\|codex" && pass "ask -1 (single)" || fail "ask -1" "no result"
# βββ Devil's Advocate βββ
echo -e "\n${CYAN}βΈ Devil's Advocate${NC}"
OUT=$(quorum ask "Should we use microservices?" --providers codex,kimi --devils-advocate --rapid 2>&1) || true
echo "$OUT" | grep -qi "winner\|consensus" && pass "ask --devils-advocate" || fail "devils-advocate" "no result"
# βββ Evidence βββ
echo -e "\n${CYAN}βΈ Evidence${NC}"
OUT=$(quorum ask "Is Rust faster than Go?" --providers codex,kimi --evidence strict --rapid 2>&1) || true
echo "$OUT" | grep -qi "winner\|consensus" && pass "ask --evidence strict" || fail "evidence" "no result"
EVSESSION=$(echo "$OUT" | grep -oE 'Session: [^ ]+' | tail -1 | sed 's/Session: //')
if [ -n "${EVSESSION:-}" ]; then
OUT=$(quorum evidence "$EVSESSION" 2>&1) || true
echo "$OUT" | grep -qi "claim\|evidence\|tier\|no evidence" && pass "evidence <session>" || fail "evidence cmd" "no output"
else
skip "evidence <session>" "no session"
fi
# βββ Red Team βββ
echo -e "\n${CYAN}βΈ Red Team${NC}"
OUT=$(quorum attacks 2>&1); echo "$OUT" | grep -qi "general\|security" && pass "attacks list" || fail "attacks" "no packs"
OUT=$(quorum ask "How to store passwords?" --providers codex,kimi --red-team --attack-pack security --rapid 2>&1) || true
echo "$OUT" | grep -qi "winner\|consensus" && pass "ask --red-team" || fail "red-team" "no result"
# βββ Adaptive βββ
echo -e "\n${CYAN}βΈ Adaptive${NC}"
OUT=$(quorum ask "Best frontend framework?" --providers codex,kimi --adaptive balanced --rapid 2>&1) || true
echo "$OUT" | grep -qi "winner\|consensus" && pass "ask --adaptive balanced" || fail "adaptive" "no result"
# βββ Topologies βββ
echo -e "\n${CYAN}βΈ Topologies${NC}"
OUT=$(quorum topo 2>&1); echo "$OUT" | grep -qi "mesh\|star\|pipeline" && pass "topo list" || fail "topo list" "no output"
OUT=$(quorum ask "REST vs GraphQL" --providers codex,kimi --topology star 2>&1) || true
echo "$OUT" | grep -qi "winner\|consensus\|Topology" && pass "topology: star" || fail "topology: star" "no result"
# βββ Versus βββ
echo -e "\n${CYAN}βΈ Versus${NC}"
OUT=$(quorum versus codex kimi "Tabs or spaces?" 2>&1) || true
echo "$OUT" | grep -qi "winner\|verdict\|codex\|kimi" && pass "versus" || fail "versus" "no result"
# βββ Review βββ
echo -e "\n${CYAN}βΈ Review${NC}"
OUT=$(quorum review src/voting.ts --providers codex,kimi --rapid 2>&1) || true
echo "$OUT" | grep -qi "winner\|consensus" && pass "review <file>" || fail "review" "no result"
# βββ CI βββ
echo -e "\n${CYAN}βΈ CI${NC}"
OUT=$(quorum ci --staged --providers codex,kimi --format markdown 2>&1) || true
echo "$OUT" | grep -qi "no.*change\|risk\|pass\|confidence\|staged\|nothing" && pass "ci --staged" || fail "ci" "no result"
# βββ Session Management βββ
echo -e "\n${CYAN}βΈ Session Management${NC}"
OUT=$(quorum history 2>&1); echo "$OUT" | grep -qi "session\|ago\|no sessions" && pass "history" || fail "history" "no output"
OUT=$(quorum session last 2>&1); echo "$OUT" | grep -qi "phase\|gather\|session" && pass "session last" || fail "session last" "no output"
# βββ Export βββ
echo -e "\n${CYAN}βΈ Export${NC}"
OUT=$(quorum export last --format md 2>&1); echo "$OUT" | grep -qi "#\|deliberation\|provider" && pass "export markdown" || fail "export md" "no output"
OUT=$(quorum export last --format html 2>&1); echo "$OUT" | grep -qi "html\|div\|deliberation" && pass "export html" || fail "export html" "no output"
# βββ Explain βββ
echo -e "\n${CYAN}βΈ Explain${NC}"
OUT=$(quorum explain last --provider codex 2>&1) || true
echo "$OUT" | grep -qi "analysis\|explain\|deliberation\|meta\|session" && pass "explain last" || fail "explain" "no output"
# βββ Stats βββ
echo -e "\n${CYAN}βΈ Stats${NC}"
OUT=$(quorum stats 2>&1); echo "$OUT" | grep -qi "provider\|win\|session\|stat" && pass "stats" || fail "stats" "no output"
# βββ Heatmap βββ
echo -e "\n${CYAN}βΈ Heatmap${NC}"
OUT=$(quorum heatmap last 2>&1); echo "$OUT" | grep -qi "heatmap\|vote\|agreement\|no.*data" && pass "heatmap" || fail "heatmap" "no output"
# βββ Memory Graph βββ
echo -e "\n${CYAN}βΈ Memory Graph${NC}"
OUT=$(quorum memory stats 2>&1); echo "$OUT" | grep -qi "memor\|total\|stat" && pass "memory stats" || fail "memory stats" "no output"
OUT=$(quorum memory list 2>&1); echo "$OUT" | grep -qi "memor\|session\|no memor" && pass "memory list" || fail "memory list" "no output"
# βββ Policy βββ
echo -e "\n${CYAN}βΈ Policy Guardrails${NC}"
OUT=$(quorum policy list 2>&1); echo "$OUT" | grep -qi "default\|strict\|polic" && pass "policy list" || fail "policy list" "no output"
OUT=$(quorum ask "Is Python good?" --providers codex,kimi --policy default --rapid 2>&1) || true
echo "$OUT" | grep -qi "winner\|consensus" && pass "ask --policy default" || fail "ask --policy" "no result"
# βββ Ledger βββ
echo -e "\n${CYAN}βΈ Ledger${NC}"
OUT=$(quorum ledger list 2>&1); echo "$OUT" | grep -qi "ledger\|entry\|session\|no.*entries\|empty" && pass "ledger list" || fail "ledger list" "no output"
OUT=$(quorum ledger verify 2>&1); echo "$OUT" | grep -qi "valid\|integrity\|verified\|chain\|empty" && pass "ledger verify" || fail "ledger verify" "no output"
# βββ Arena βββ
echo -e "\n${CYAN}βΈ Arena${NC}"
OUT=$(quorum arena leaderboard 2>&1); echo "$OUT" | grep -qi "leader\|provider\|reputation\|no.*data\|empty" && pass "arena leaderboard" || fail "arena leaderboard" "no output"
# βββ Replay βββ
echo -e "\n${CYAN}βΈ Replay${NC}"
OUT=$(quorum replay last --speed fast 2>&1); echo "$OUT" | grep -qi "phase\|replay\|gather\|no.*session" && pass "replay last" || fail "replay" "no output"
# βββ Rerun βββ
echo -e "\n${CYAN}βΈ Rerun${NC}"
OUT=$(quorum rerun last --providers codex 2>&1) || true
echo "$OUT" | grep -qi "winner\|consensus\|rerun\|codex" && pass "rerun last" || fail "rerun" "no result"
# βββ Diff βββ
echo -e "\n${CYAN}βΈ Diff${NC}"
if [ -n "${SESSION1:-}" ]; then
OUT=$(quorum diff "$SESSION1" last 2>&1) || true
echo "$OUT" | grep -qi "diff\|compar\|session\|winner" && pass "diff" || fail "diff" "no output"
else
skip "diff" "no sessions"
fi
# βββ Follow-up βββ
echo -e "\n${CYAN}βΈ Follow-up${NC}"
OUT=$(quorum follow-up last "Can you elaborate?" --providers codex,kimi --rapid 2>&1) || true
echo "$OUT" | grep -qi "winner\|consensus\|follow" && pass "follow-up" || fail "follow-up" "no result"
# βββ Summary βββ
echo ""
echo -e "${CYAN}ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
echo -e " ${GREEN}β $PASS passed${NC} ${RED}β $FAIL failed${NC} ${YELLOW}β $SKIP skipped${NC}"
echo -e " Total: $((PASS + FAIL + SKIP)) tests"
echo -e "${CYAN}ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
if [ ${#ERRORS[@]} -gt 0 ]; then
echo -e "\n${RED}Failures:${NC}"
for err in "${ERRORS[@]}"; do echo -e " ${RED}β${NC} $err"; done
fi
echo ""
[ $FAIL -eq 0 ] && echo -e "${GREEN}π All tests passed!${NC}" || echo -e "${RED}β οΈ $FAIL test(s) failed.${NC}"
exit $FAIL