Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 23 additions & 1 deletion crates/compass-cli/tests/review_cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,11 @@ fn local_review_writes_round_trippable_exact_report() -> Result<(), Box<dyn std:
directory.path().join("feature.rs"),
"pub fn feature() -> u8 { 2 }\n",
)?;
git(directory.path(), &["add", "feature.rs"])?;
std::fs::write(
directory.path().join("package.json"),
"{\"dependencies\":{\"fixture-package\":\"1.0.0\"}}\n",
)?;
git(directory.path(), &["add", "feature.rs", "package.json"])?;
git(directory.path(), &["commit", "--quiet", "-m", "feature"])?;
let head = git(directory.path(), &["rev-parse", "HEAD"])?;
git(directory.path(), &["checkout", "--quiet", "main"])?;
Expand Down Expand Up @@ -137,6 +141,24 @@ fn local_review_writes_round_trippable_exact_report() -> Result<(), Box<dyn std:
assert_eq!(report.identity.revisions.target_head, base);
assert_eq!(report.identity.revisions.pull_request_head, head);
assert!(report.identity.revisions.merge_result.is_clean());
let repository = Repository::discover(directory.path())?;
let comparison = report
.identity
.revisions
.merge_result
.object_id()
.ok_or("clean review has no merge result")?;
let history = HistoryStore::open_existing(&repository)?.ok_or("review history store")?;
let realization = history
.preferred(&repository.resolve(comparison)?)?
.ok_or("review comparison realization")?;
let graph = history.reader(&realization.id)?.graph_document()?;
assert!(
graph
.nodes
.iter()
.any(|node| node.string("uri") == "pkg:fixture-package")
);

let preserved_path = directory.path().join("bounded-review.md");
std::fs::write(&preserved_path, "preserve-me")?;
Expand Down
24 changes: 22 additions & 2 deletions crates/compass-history/src/artifacts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,30 @@ const ANALYSIS_KIND: &[u8] = &[4];
const METADATA_SCHEMA: &[u8] = &[1];
const METADATA_KIND: &[u8] = &[5];
const MOVED_NODE_FIELDS: [&str; 3] = ["community", "community_name", "norm_label"];
const NODE_COMPATIBILITY_FIELDS: [&str; 14] = [
const NODE_COMPATIBILITY_FIELDS: &[&str] = &[
"label",
"qualified_name",
"file_type",
"document_format",
"document_kind",
"document_role",
"block_index",
"document_ordinal",
"document_section",
"uri",
"document_content",
"document_significance",
"table_columns",
"table_headers",
"table_alignments",
"table_body_row_count",
"table_omitted_row_count",
"table_omitted_column_count",
"table_truncated",
"table_row_index",
"table_identity_cell_index",
"table_cells",
"document_references",
"source_file",
"source_location",
"line_start",
Expand Down Expand Up @@ -1162,7 +1182,7 @@ fn compat_edge(edge: &compass_model::code_graph::EdgeRecord) -> Result<EdgeRecor
fn trusted_node_value(node: &NodeRecord) -> Value {
let mut object = node.attributes.clone();
for field in NODE_COMPATIBILITY_FIELDS {
object.remove(field);
object.remove(*field);
}
object.insert("id".to_owned(), Value::String(node.id.clone()));
Value::Object(object)
Expand Down
119 changes: 85 additions & 34 deletions crates/compass-history/tests/roundtrip.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,54 +57,105 @@ fn trusted_graph_partitions_store_full_typed_node_records() -> Result<(), Box<dy
"generated":false,
"extractionStatus":"extracted"
}]);
graph["nodes"] = json!([{
"id":"symbol:test",
"kind":"function",
"name":"test",
"qualifiedName":"fixture.test",
"source":{
"file":"src/lib.rs",
"startByte":0,
"endByte":4,
"startLine":1,
"startColumn":0,
"endLine":1,
"endColumn":4
graph["nodes"] = json!([
{
"id":"symbol:test",
"kind":"function",
"name":"test",
"qualifiedName":"fixture.test",
"source":{
"file":"src/lib.rs",
"startByte":0,
"endByte":4,
"startLine":1,
"startColumn":0,
"endLine":1,
"endColumn":4
},
"evidence":[{
"origin":"config",
"extractor":"fixture",
"confidence":"exact",
"anchors":[{
"file":"src/lib.rs",
"startByte":0,
"endByte":4,
"startLine":1,
"startColumn":0,
"endLine":1,
"endColumn":4
}]
}],
"coverage":[{
"capability":"node:function",
"producer":"fixture",
"status":"partial",
"reason":"fixture"
}],
"diagnostics":[{
"severity":"warning",
"code":"fixture",
"message":"fixture warning"
}]
},
"evidence":[{
"origin":"config",
"extractor":"fixture",
"confidence":"exact",
"anchors":[{
{
"id":"resource:guide",
"kind":"resource",
"name":"Guide",
"qualifiedName":"Guide",
"details":{
"type":"resource",
"data":{
"resourceKind":"document",
"uri":"#guide"
}
},
"source":{
"file":"src/lib.rs",
"startByte":0,
"endByte":4,
"startLine":1,
"startColumn":0,
"endLine":1,
"endColumn":4
},
"evidence":[{
"origin":"config",
"extractor":"fixture",
"confidence":"exact",
"anchors":[{
"file":"src/lib.rs",
"startByte":0,
"endByte":4,
"startLine":1,
"startColumn":0,
"endLine":1,
"endColumn":4
}]
}]
}],
"coverage":[{
"capability":"node:function",
"producer":"fixture",
"status":"partial",
"reason":"fixture"
}],
"diagnostics":[{
"severity":"warning",
"code":"fixture",
"message":"fixture warning"
}]
}]);
}
]);
std::fs::write(
directory.path().join("graph.json"),
canonical_json_bytes(&graph)?,
)?;
let partition = GraphArtifacts::load(directory.path())?.partition(&completion())?;
let record = VersionedValue::from_bytes(&partition.nodes[0].1)?;
assert_eq!(record.schema, "compass.graph.node.v1");
let payload: Value = serde_json::from_slice(&record.payload)?;
for (_, encoded) in &partition.nodes {
let record = VersionedValue::from_bytes(encoded)?;
assert_eq!(record.schema, "compass.graph.node.v1");
let _: compass_model::code_graph::NodeRecord = serde_json::from_slice(&record.payload)?;
}
let payload = partition
.nodes
.iter()
.map(|(_, encoded)| VersionedValue::from_bytes(encoded))
.collect::<Result<Vec<_>, _>>()?
.into_iter()
.map(|record| serde_json::from_slice::<Value>(&record.payload))
.collect::<Result<Vec<_>, _>>()?
.into_iter()
.find(|payload| payload["id"] == "symbol:test")
.ok_or("missing symbol payload")?;
assert_eq!(payload["evidence"][0]["origin"], "config");
assert_eq!(payload["coverage"][0]["status"], "partial");
assert_eq!(payload["diagnostics"][0]["code"], "fixture");
Expand Down
4 changes: 2 additions & 2 deletions fuzz/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading