Skip to content

Commit daca5cb

Browse files
authored
Merge pull request #141 from strongdm/schema-guided-entity-parsing
Schema-guided entity parsing
2 parents c8c5815 + ea3a918 commit daca5cb

File tree

92 files changed

+2761
-28
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+2761
-28
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ tmp/
33
.DS_Store
44
coverage.out
55
test/cedar-validation-tool/target/
6+
test/cedar-entity-parsing-tool/target/
67
corpus-tests/
78
corpus-tests-json-schemas/
89
corpus-tests-validation/

Makefile

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.PHONY: test linters corpus-update check-upstream-corpus testdata-validation
1+
.PHONY: test linters corpus-update check-upstream-corpus testdata-validation testdata-entity-parsing
22

33
# Run all tests
44
test:
@@ -77,5 +77,22 @@ testdata-validation: test/cedar-validation-tool/target/release/cedar-validation-
7777
done
7878
@echo "Done! Regenerated testdata validation files."
7979

80+
# Build cedar-entity-parsing-tool and generate entity parsing results
81+
test/cedar-entity-parsing-tool/target/release/cedar-entity-parsing-tool: test/cedar-entity-parsing-tool/src/main.rs test/cedar-entity-parsing-tool/Cargo.toml
82+
@echo "Building cedar-entity-parsing-tool..."
83+
@cd test/cedar-entity-parsing-tool && cargo build --release
84+
85+
# Regenerate entity parsing data for x/exp/types/testdata
86+
testdata-entity-parsing: test/cedar-entity-parsing-tool/target/release/cedar-entity-parsing-tool
87+
@echo "Regenerating entity parsing test files..."
88+
@for testjson in x/exp/types/testdata/*.json; do \
89+
case "$$testjson" in *.entities.json|*.parsing.json) continue ;; esac; \
90+
basename=$$(basename $$testjson .json); \
91+
echo " Parsing $$basename..."; \
92+
test/cedar-entity-parsing-tool/target/release/cedar-entity-parsing-tool \
93+
"$$testjson" "x/exp/types/testdata/$${basename}.parsing.json"; \
94+
done
95+
@echo "Done! Regenerated entity parsing test files."
96+
8097
# Download, convert, and validate
81-
corpus-update: corpus-tests-json-schemas.tar.gz corpus-tests-validation.tar.gz testdata-validation
98+
corpus-update: corpus-tests-json-schemas.tar.gz corpus-tests-validation.tar.gz testdata-validation testdata-entity-parsing

corpus_test.go

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"github.com/cedar-policy/cedar-go/types"
1919
"github.com/cedar-policy/cedar-go/x/exp/batch"
2020
"github.com/cedar-policy/cedar-go/x/exp/schema"
21+
exptypes "github.com/cedar-policy/cedar-go/x/exp/types"
2122
)
2223

2324
// jsonEntity is not part of entityValue as I can find
@@ -161,16 +162,6 @@ func TestCorpus(t *testing.T) {
161162
t.Fatal("error unmarshalling test", err)
162163
}
163164

164-
entitiesContent, err := fdm.GetFileData(tt.Entities)
165-
if err != nil {
166-
t.Fatal("error reading entities content", err)
167-
}
168-
169-
var entities cedar.EntityMap
170-
if err := json.Unmarshal(entitiesContent, &entities); err != nil {
171-
t.Fatal("error unmarshalling test", err)
172-
}
173-
174165
schemaContent, err := fdm.GetFileData(tt.Schema)
175166
if err != nil {
176167
t.Fatal("error reading schema content", err)
@@ -261,6 +252,18 @@ func TestCorpus(t *testing.T) {
261252
rs, err := s.Resolve()
262253
testutil.OK(t, err)
263254

255+
// Load and parse entities using schema-guided parsing
256+
entitiesContent, err := fdm.GetFileData(tt.Entities)
257+
if err != nil {
258+
t.Fatal("error reading entities content", err)
259+
}
260+
261+
var expEntities exptypes.EntityMap
262+
if err := expEntities.UnmarshalJSONWithSchema(entitiesContent, rs); err != nil {
263+
t.Fatal("error unmarshalling entities", err)
264+
}
265+
entities := types.EntityMap(expEntities)
266+
264267
// Build requests for validation checks
265268
var requests []cedar.Request
266269
for _, r := range tt.Requests {

0 commit comments

Comments
 (0)