Skip to content

Commit 0d41e76

Browse files
committed
updated sorbet-typescript, added stricter validations in scripts/export_provider_catalog.rb
1 parent d13307f commit 0d41e76

File tree

3 files changed

+36
-6
lines changed

3 files changed

+36
-6
lines changed

Gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ GEM
381381
sorbet-static-and-runtime (0.5.11888)
382382
sorbet (= 0.5.11888)
383383
sorbet-runtime (= 0.5.11888)
384-
sorbet-typescript (0.1.0)
384+
sorbet-typescript (0.1.1)
385385
sorbet-runtime (>= 0.5)
386386
thor (>= 1.3)
387387
spoom (1.5.4)

Taskfile.ruby.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ tasks:
3636

3737
test:
3838
desc: Run Ruby unit tests
39+
deps: [generate]
3940
cmds:
4041
- bundle exec ruby scripts/test.rb
4142

scripts/export_provider_catalog.rb

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@ def camel_to_snake(value)
3939
groups = Hash.new { |h, k| h[k] = {sources: [], events: []} }
4040

4141
def collect_serialized(field)
42-
return [] unless field.is_a?(Hash)
42+
unless field.is_a?(Hash)
43+
raise "Expected field metadata Hash but got #{field.inspect}"
44+
end
4345

4446
values = []
4547
values << field["default_enum_serialized"]
@@ -54,21 +56,29 @@ def collect_serialized(field)
5456
next unless fq_name.start_with?("LogStruct::Log::")
5557

5658
fields = info["fields"]
57-
next unless fields.is_a?(Hash)
59+
unless fields.is_a?(Hash)
60+
raise "Struct #{fq_name} missing fields metadata"
61+
end
5862

5963
event_field = fields["event"]
64+
next unless event_field
65+
6066
event_values = collect_serialized(event_field)
6167
next if event_values.empty?
6268

6369
log_type = fq_name.split("::")[2]
64-
next unless log_type
70+
unless log_type
71+
raise "Unable to infer log type for #{fq_name}"
72+
end
6573

6674
group = groups[log_type]
6775
group[:events] = (group[:events] | event_values)
6876

6977
source_field = fields["source"]
70-
source_values = collect_serialized(source_field)
71-
group[:sources] = (group[:sources] | source_values) if source_values.any?
78+
if source_field
79+
source_values = collect_serialized(source_field)
80+
group[:sources] = (group[:sources] | source_values)
81+
end
7282
end
7383

7484
catalog_structs = groups.each_with_object({}) do |(log_type, data), memo|
@@ -133,3 +143,22 @@ def go_string(str)
133143
File.write(gen_path, go)
134144

135145
puts "Wrote provider catalog to #{catalog_path} and #{gen_path}"
146+
147+
def assert(condition, message)
148+
raise message unless condition
149+
end
150+
151+
catalog_data = JSON.parse(File.read(catalog_path))
152+
structs = catalog_data.fetch("structs")
153+
154+
refute_empty(structs, "Struct catalog is empty")
155+
assert(structs.key?("GoodJob"), "Struct catalog missing GoodJob")
156+
good_job = structs["GoodJob"]
157+
158+
assert_includes(good_job["allowed_events"], "enqueue", "GoodJob missing enqueue event")
159+
assert_equal("job", good_job["fixed_source"], "GoodJob fixed source incorrect")
160+
161+
go_contents = File.read(gen_path)
162+
163+
assert_includes(go_contents, "\"GoodJob\": {Name: \"GoodJob\"", "catalog_gen.go missing GoodJob entry")
164+
assert_includes(go_contents, "AllowedEvents: []string{\"enqueue\"", "catalog_gen.go missing enqueue event")

0 commit comments

Comments
 (0)