Add strict read-only source and database investigation tools
This commit is contained in:
1 parent
798925d25d
commit
66c76a9930
14 files changed
+2069
-2
No files matched your search
@@ -93,4 +93,25 @@ def test_full_bug20_package_pair(tmp_path):
|
||||
if name != "manifest.json":
|
||||
assert before.read_bytes(name) == after.read_bytes(name)
|
||||
assert CaseBuilder(store).build(*identity).reused
|
||||
from viano_bug_analysis.tools import InvestigationToolRouter
|
||||
from viano_bug_analysis.tools.database_query import DatabaseQueryTool
|
||||
from viano_bug_analysis.profiles.vcore.db_tools import normalize_schema_descriptor
|
||||
code_ref = next(r["path"] for r in case["source_context"]["refs"] if r["path"].endswith(".cpp"))
|
||||
schema_ref = next(r["path"] for r in case["database_context"]["refs"] if r["path"].endswith("/database/schemas/quest_template.json"))
|
||||
rows_ref = next(r["path"] for r in case["database_context"]["refs"] if r["path"].endswith("/database/quest_template.json"))
|
||||
request = {"format":"viano-investigation-request","format_version":1,"case_id":identity[0],"package_id":identity[1],"analysis_revision":1,
|
||||
"requests":[{"request_id":"source-query","hypothesis_id":"H1","action_id":"source-query","operation":"source.read_context",
|
||||
"arguments":{"source_ref":code_ref,"start_line":1,"end_line":3}},
|
||||
{"request_id":"schema-query","hypothesis_id":"H2","action_id":"schema-query","operation":"database.describe",
|
||||
"arguments":{"source_ref":schema_ref}},
|
||||
{"request_id":"rows-query","hypothesis_id":"H3","action_id":"rows-query","operation":"database.lookup",
|
||||
"arguments":{"source_ref":rows_ref,"filters":{"ID":11117},"columns":["ID"],"offset":0,"limit":10}}]}
|
||||
before_query_hash = hashlib.sha256(accounted.package.read_bytes()).hexdigest()
|
||||
queried = InvestigationToolRouter(database_tool=DatabaseQueryTool(normalize_schema_descriptor)).query(accounted.package,request)
|
||||
assert len(queried["results"][0]["data"]["matches"]) == 3
|
||||
assert queried["results"][1]["data"]["table"] == "quest_template"
|
||||
assert queried["results"][1]["data"]["coverage"] == "schema_only"
|
||||
assert queried["results"][2]["data"]["matches"][0]["row"] == {"ID":11117}
|
||||
assert queried["results"][2]["data"]["coverage"] == "unknown"
|
||||
assert hashlib.sha256(accounted.package.read_bytes()).hexdigest() == before_query_hash
|
||||
assert [hashlib.sha256(path.read_bytes()).hexdigest() for path in (diag, src)] == original_hashes
|
||||
Reference in new issue
Block a user