wip: preserve local engine and agent workflow changes before ganjihong refactor integration
This commit is contained in:
@@ -1041,10 +1041,15 @@ class LoweringTests(unittest.TestCase):
|
||||
cap_extrude = features["f_F5"]
|
||||
self.assertEqual(cap_extrude["atomic_id"], "extrude_from_face")
|
||||
self.assertNotIn("sketch_id", cap_extrude)
|
||||
self.assertEqual(cap_extrude["selectors"], [{
|
||||
selector = cap_extrude["selectors"][0]
|
||||
self.assertEqual({key: selector[key] for key in (
|
||||
"kind", "owner_feature_id", "output_role", "source", "confidence",
|
||||
)}, {
|
||||
"kind": "face", "owner_feature_id": "f_F3", "output_role": "extrude.start",
|
||||
"source": "runtime_snapshot", "confidence": 1.0,
|
||||
}])
|
||||
})
|
||||
self.assertEqual(selector["selector_intent_version"], "1.0")
|
||||
self.assertEqual(selector["selector_intent"]["query_family"], "CAP_FACE")
|
||||
|
||||
from engine.cdsl_engine.runtime import rebuild_cdsl
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
@@ -1691,6 +1696,21 @@ class LoweringTests(unittest.TestCase):
|
||||
self.assertEqual(result.diagnostics[0]["code"], "unsupported_engine_capability")
|
||||
self.assertIn("extrude_profile_topology:cap_face", result.diagnostics[0]["capability"])
|
||||
|
||||
def test_cap_face_selector_retains_versioned_provenance_intent(self):
|
||||
source = SOURCE.replace(
|
||||
'\n});\n',
|
||||
'\n extrude(context, id + "F2", {"entities":makeQuery(id + "F1.opExtrude", "CAP_FACE", FACE, {"isStart":false}), "depth":10 * mm});\n});\n',
|
||||
)
|
||||
result = lower_model(parse_featurescript(source, "cap-intent"), {})
|
||||
self.assertEqual(result.status, "converted_complete")
|
||||
selector = next(item for item in result.cdsl["features"] if item["id"] == "f_F2")["selectors"][0]
|
||||
self.assertEqual(selector["selector_intent"]["query_family"], "CAP_FACE")
|
||||
self.assertEqual(selector["selector_intent_version"], "1.0")
|
||||
self.assertEqual(selector["selector_intent"]["source_query"]["featurescript_version"], "1511")
|
||||
self.assertEqual(selector["selector_intent"]["evidence"], "operation_role")
|
||||
from engine.cdsl_engine.semantic_validation import validate_semantic_cdsl
|
||||
self.assertTrue(validate_semantic_cdsl(result.cdsl)["future_rebuild_ready"])
|
||||
|
||||
def test_conversion_writes_status_and_sidecars(self):
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
root = Path(tmp); source = root / "00000173.txt"; source.write_text(SOURCE)
|
||||
|
||||
@@ -52,6 +52,16 @@ class ParserTests(unittest.TestCase):
|
||||
value = parse_query(query)
|
||||
self.assertEqual((value.owner_feature, value.source_sketch, value.source_entity), ("F1", "F0", "E0"))
|
||||
self.assertFalse(value.is_start)
|
||||
self.assertEqual(value.ast["call"], "makeQuery")
|
||||
self.assertEqual(value.ast["args"][0]["call"], "__binary__")
|
||||
|
||||
def test_source_version_and_standard_library_are_retained(self):
|
||||
source = '''FeatureScript 1511;
|
||||
import(path : "onshape/std/geometry.fs", version : "1511.0");
|
||||
export const f = defineFeature(function(context, id, definition) {});'''
|
||||
model = parse_featurescript(source, "versioned")
|
||||
self.assertEqual(model.featurescript_version, "1511")
|
||||
self.assertEqual(model.standard_library, "onshape/std/geometry.fs")
|
||||
|
||||
def test_block_scoped_query_aliases_do_not_use_the_last_assignment(self):
|
||||
source = r'''
|
||||
|
||||
@@ -123,10 +123,14 @@ class SelectorBindingTests(unittest.TestCase):
|
||||
bound, evidence = bind_candidate_selectors(candidate.cdsl)
|
||||
|
||||
selector = next(item for item in bound["features"] if item["id"] == "f_F3")["selectors"][0]
|
||||
self.assertEqual(selector, {
|
||||
self.assertEqual({key: selector[key] for key in (
|
||||
"kind", "owner_feature_id", "output_role", "source", "confidence",
|
||||
)}, {
|
||||
"kind": "face", "owner_feature_id": "f_F1", "output_role": "extrude.end",
|
||||
"source": "runtime_snapshot", "confidence": 1.0,
|
||||
})
|
||||
self.assertEqual(selector["selector_intent"]["query_family"], "CAP_FACE")
|
||||
self.assertEqual(selector["selector_intent"]["evidence"], "operation_role")
|
||||
self.assertNotIn("stable_id", selector)
|
||||
self.assertNotIn("snapshot_id", selector)
|
||||
self.assertNotIn("geometry", selector)
|
||||
@@ -155,11 +159,15 @@ class SelectorBindingTests(unittest.TestCase):
|
||||
self.assertEqual(first["snapshot_id"], "body:f_F2:face:1")
|
||||
self.assertEqual(first["source"], "runtime_snapshot")
|
||||
self.assertEqual(first["confidence"], 1.0)
|
||||
self.assertEqual(offset, {
|
||||
self.assertEqual({key: offset[key] for key in (
|
||||
"kind", "owner_feature_id", "output_role", "output_role_source", "source", "confidence",
|
||||
)}, {
|
||||
"kind": "face", "owner_feature_id": "f_F2", "output_role": "shell.offset_face",
|
||||
"output_role_source": {"owner_feature_id": "f_F1", "output_role": "extrude.start"},
|
||||
"source": "runtime_snapshot", "confidence": 1.0,
|
||||
})
|
||||
self.assertEqual(offset["selector_intent"]["query_family"], "OFFSET_FACE")
|
||||
self.assertEqual(offset["selector_intent"]["disambiguation"]["type"], "true_dependency")
|
||||
binding = next(item for item in evidence if item["feature_id"] == "f_F3")
|
||||
self.assertEqual(binding["resolved"][0]["snapshot_id"], "body:f_F2:face:1")
|
||||
self.assertEqual(binding["resolved"][1]["record_id"], "body:f_F2:face:5")
|
||||
|
||||
Reference in New Issue
Block a user