first
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
#!/bin/bash
|
||||
# Regression: graph build should fail clearly when node/engine path is broken
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
GRAPH_DATA_SAMPLE="$REPO_ROOT/tests/fixtures/graph-data-sample-wiki"
|
||||
|
||||
fail() {
|
||||
echo "FAIL: $1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
assert_text_contains() {
|
||||
local text="$1"
|
||||
local expected="$2"
|
||||
|
||||
if ! printf '%s' "$text" | grep -F -- "$expected" > /dev/null; then
|
||||
fail "Expected output to contain: $expected"
|
||||
fi
|
||||
}
|
||||
|
||||
test_graph_data_exits_without_node() {
|
||||
local tmp_dir fake_bin output
|
||||
tmp_dir="$(mktemp -d)"
|
||||
fake_bin="$tmp_dir/bin"
|
||||
mkdir -p "$fake_bin"
|
||||
|
||||
ln -s /bin/bash "$fake_bin/bash"
|
||||
ln -s "$(command -v jq)" "$fake_bin/jq"
|
||||
|
||||
if output="$(PATH="$fake_bin" bash "$REPO_ROOT/scripts/build-graph-data.sh" "$GRAPH_DATA_SAMPLE" 2>&1)"; then
|
||||
fail "build-graph-data.sh should fail when node is unavailable"
|
||||
fi
|
||||
|
||||
assert_text_contains "$output" "node"
|
||||
assert_text_contains "$output" "Install it via"
|
||||
|
||||
rm -rf "$tmp_dir"
|
||||
}
|
||||
|
||||
test_graph_data_exits_when_helper_missing() {
|
||||
local tmp_dir repo_copy output
|
||||
tmp_dir="$(mktemp -d)"
|
||||
repo_copy="$tmp_dir/repo"
|
||||
|
||||
cp -R "$REPO_ROOT" "$repo_copy"
|
||||
rm -rf "$repo_copy/.git"
|
||||
rm "$repo_copy/scripts/graph-analysis.js"
|
||||
|
||||
if output="$(LLM_WIKI_TEST_MODE=1 bash "$repo_copy/scripts/build-graph-data.sh" "$repo_copy/tests/fixtures/graph-data-sample-wiki" 2>&1)"; then
|
||||
fail "build-graph-data.sh should fail when helper is missing"
|
||||
fi
|
||||
|
||||
assert_text_contains "$output" "graph-analysis.js"
|
||||
assert_text_contains "$output" "图谱分析 helper"
|
||||
|
||||
rm -rf "$tmp_dir"
|
||||
}
|
||||
|
||||
test_graph_html_keeps_existing_html_when_engine_asset_missing() {
|
||||
local tmp_dir repo_copy output html_path
|
||||
tmp_dir="$(mktemp -d)"
|
||||
repo_copy="$tmp_dir/repo"
|
||||
|
||||
cp -R "$REPO_ROOT" "$repo_copy"
|
||||
rm -rf "$repo_copy/.git"
|
||||
rm "$repo_copy/packages/graph-engine/dist/engine.iife.js"
|
||||
|
||||
html_path="$repo_copy/tests/fixtures/graph-interactive-basic/wiki/knowledge-graph.html"
|
||||
printf 'stable old html\n' > "$html_path"
|
||||
|
||||
if output="$(bash "$repo_copy/scripts/build-graph-html.sh" "$repo_copy/tests/fixtures/graph-interactive-basic" 2>&1)"; then
|
||||
fail "build-graph-html.sh should fail when engine asset is missing"
|
||||
fi
|
||||
|
||||
assert_text_contains "$output" "engine.iife.js"
|
||||
assert_text_contains "$output" "graph-engine IIFE 产物"
|
||||
assert_text_contains "$(cat "$html_path")" "stable old html"
|
||||
|
||||
rm -rf "$tmp_dir"
|
||||
}
|
||||
|
||||
main() {
|
||||
test_graph_data_exits_without_node
|
||||
test_graph_data_exits_when_helper_missing
|
||||
test_graph_html_keeps_existing_html_when_engine_asset_missing
|
||||
echo "PASS: graph build failure regression coverage"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user