Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error: attr: 'style :width' failed validation #6

Closed
krish777 opened this issue Aug 15, 2024 · 11 comments
Closed

Error: attr: 'style :width' failed validation #6

krish777 opened this issue Aug 15, 2024 · 11 comments

Comments

@krish777
Copy link

Add width & height attributes to the style property in a dictim file.

Create a d2 file.

Run the dictim command to generate the d2 file.

open the generated d2 file.

the d2 file contains error message: attr: 'style :width' failed validation, in {:classes {"spr" {:style {:stroke-dash 3, :stroke-width 2, :width 200, :height 300, :stroke "'#444499'"}}, "db" {:shape "cylinder", :style {:stroke-width 5, :fill "'#c7f0c5'", :stroke "'#87b085'", :text-transform :uppercase}}}}
dictim copy.txt
in.d2.txt
out2.d2 copy.txt

For more please check out the attachment.

@judepayne
Copy link
Owner

PRs welcome!

@krish777
Copy link
Author

Sure, Will give it a try!

@eddielao
Copy link
Contributor

Is this error with the main branch? Also, when I run clojure -M:test on the main branch without any changes, I am getting "Ran 81 tests containing 357 assertions. 19 failures, 10 errors."

It is probably me missing something.

@krish777
Copy link
Author

I tried the following and it worked for me.

Step 1: Installed latest version of Clojure

Step 2: Installed latest version of Lenin

Step 3: JDK 11 was already installed so internally it is using it.

Step 4: Did a git clone on main branch.

Step 5: Then did a cd to dictim folder

Step 6: Ran clojure -M:test from dictim root folder

Note: In the screenshot/attachment you will notice 82 test cases since I wrote a test case but yet to commit it to the branch.

Screenshot 2024-08-23 at 9 38 37 PM

Hope this helps to resolve the error.

I'm new to Clojure but so far I liking it.

@judepayne
Copy link
Owner

judepayne commented Aug 27, 2024

Hi @eddielao try running clj -X:test instead of clojure -M:test and report back if any problems.
If there are problems still, post a copy of the errors.

@judepayne
Copy link
Owner

Also, if still a problem say which environment you're running in; e.g. Windows, Mac, Linux
Those tests are running in all 3 environments in CI (circle CI for Windows and Mac, Appveyor for Windows) every release so may just be an error in getting your environment properly set up

@judepayne
Copy link
Owner

I resolved this. Your dictim (in the template) is NOT correct. width and height are both top level attributes and not sub-keys of style... exactly as the error message was saying

@judepayne
Copy link
Owner

same as d2 btw

@eddielao
Copy link
Contributor

Hi @eddielao try running clj -X:test instead of clojure -M:test and report back if any problems. If there are problems still, post a copy of the errors.

Windows 11 Pro version 10.0.22631 Build 22631

This is the error I got from running clj -X:test. It could be just my machine as it is my person dev machine and has quite a few things installed.

--- Error---
$ clj -X:test

Running tests in #{"test"}

Testing dictim.d2.compile-test

Testing dictim.d2.parse-test

ERROR in (connections) (utils.cljc:8)
Uncaught exception, not in assertion.
expected: nil
actual: java.lang.Exception: Could not parse: -> super long shape id even longer here
at dictim.utils$error.invokeStatic (utils.cljc:8)
dictim.utils$error.invoke (utils.cljc:8)
dictim.d2.parse$dictim.invokeStatic (parse.cljc:290)
dictim.d2.parse$dictim.doInvoke (parse.cljc:256)
clojure.lang.RestFn.invoke (RestFn.java:410)
dictim.d2.parse_test$fn__4792.invokeStatic (parse_test.clj:74)
dictim.d2.parse_test/fn (parse_test.clj:71)
clojure.test$test_var$fn__9856.invoke (test.clj:717)
clojure.test$test_var.invokeStatic (test.clj:717)
clojure.test$test_var.invoke (test.clj:708)
clojure.test$test_vars$fn__9882$fn__9887.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars$fn__9882.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars.invokeStatic (test.clj:731)
clojure.test$test_all_vars.invokeStatic (test.clj:737)
clojure.test$test_ns.invokeStatic (test.clj:758)
clojure.test$test_ns.invoke (test.clj:743)
clojure.core$map$fn__5935.invoke (core.clj:2772)
clojure.lang.LazySeq.sval (LazySeq.java:42)
clojure.lang.LazySeq.seq (LazySeq.java:51)
clojure.lang.Cons.next (Cons.java:39)
clojure.lang.RT.boundedLength (RT.java:1790)
clojure.lang.RestFn.applyTo (RestFn.java:130)
clojure.core$apply.invokeStatic (core.clj:669)
clojure.test$run_tests.invokeStatic (test.clj:768)
clojure.test$run_tests.doInvoke (test.clj:768)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.core$apply.invoke (core.clj:662)
cognitect.test_runner$test.invokeStatic (test_runner.clj:74)
cognitect.test_runner$test.invoke (test_runner.clj:62)
cognitect.test_runner.api$do_test.invokeStatic (api.clj:14)
cognitect.test_runner.api$do_test.invoke (api.clj:6)
cognitect.test_runner.api$test.invokeStatic (api.clj:28)
cognitect.test_runner.api$test.invoke (api.clj:16)
clojure.lang.Var.invoke (Var.java:384)
clojure.run.exec$exec.invokeStatic (exec.clj:88)
clojure.run.exec$exec.invoke (exec.clj:78)
clojure.run.exec$_main$fn__220.invoke (exec.clj:227)
clojure.run.exec$_main.invokeStatic (exec.clj:223)
clojure.run.exec$_main.doInvoke (exec.clj:191)
clojure.lang.RestFn.invoke (RestFn.java:397)
clojure.lang.AFn.applyToHelper (AFn.java:152)
clojure.lang.RestFn.applyTo (RestFn.java:132)
clojure.lang.Var.applyTo (Var.java:705)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.main$main_opt.invokeStatic (main.clj:514)
clojure.main$main_opt.invoke (main.clj:510)
clojure.main$main.invokeStatic (main.clj:664)
clojure.main$main.doInvoke (main.clj:616)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.lang.Var.applyTo (Var.java:705)
clojure.main.main (main.java:40)

FAIL in (classes) (parse_test.clj:288)
Software Classes
expected: (= 1 (num-parses d2))
actual: (not (= 1 1024))

ERROR in (classes) (utils.cljc:8)
Software Classes
expected: (= true (v/all-valid? dict :d2))
' failed validation, in {"shape" "class\r"} class
at dictim.utils$error.invokeStatic (utils.cljc:8)
dictim.utils$error.invoke (utils.cljc:8)
dictim.d2.attributes$err.invokeStatic (attributes.cljc:12)
dictim.d2.attributes$err.invoke (attributes.cljc:11)
dictim.d2.attributes$validation_error.invokeStatic (attributes.cljc:200)
dictim.d2.attributes$validation_error.invoke (attributes.cljc:199)
dictim.d2.attributes$validate_attr.invokeStatic (attributes.cljc:212)
dictim.d2.attributes$validate_attr.invoke (attributes.cljc:206)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:174)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:151)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_attr_QMARK_.invokeStatic (validate.cljc:193)
dictim.validate$valid_attr_QMARK_.invoke (validate.cljc:191)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$eval2401$fn__2402.invoke (validate.cljc:200)
clojure.lang.MultiFn.invoke (MultiFn.java:229)
dictim.validate$valid_inline_d2_attr_QMARK_.invokeStatic (validate.cljc:216)
dictim.validate$valid_inline_d2_attr_QMARK_.invoke (validate.cljc:210)
dictim.validate$valid_inline_attr_QMARK_.invokeStatic (validate.cljc:222)
dictim.validate$valid_inline_attr_QMARK_.invoke (validate.cljc:220)
dictim.validate$eval2454$fn__2455.invoke (validate.cljc:267)
clojure.lang.MultiFn.invoke (MultiFn.java:229)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$all_valid_QMARK_.invokeStatic (validate.cljc:308)
dictim.validate$all_valid_QMARK_.invoke (validate.cljc:298)
dictim.d2.parse_test$fn__4871$fn__4872$fn__4877.invoke (parse_test.clj:289)
dictim.d2.parse_test$fn__4871$fn__4872.invoke (parse_test.clj:289)
dictim.d2.parse_test$fn__4871.invokeStatic (parse_test.clj:285)
dictim.d2.parse_test/fn (parse_test.clj:284)
clojure.test$test_var$fn__9856.invoke (test.clj:717)
clojure.test$test_var.invokeStatic (test.clj:717)
clojure.test$test_var.invoke (test.clj:708)
clojure.test$test_vars$fn__9882$fn__9887.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars$fn__9882.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars.invokeStatic (test.clj:731)
clojure.test$test_all_vars.invokeStatic (test.clj:737)
clojure.test$test_ns.invokeStatic (test.clj:758)
clojure.test$test_ns.invoke (test.clj:743)
clojure.core$map$fn__5935.invoke (core.clj:2772)
clojure.lang.LazySeq.sval (LazySeq.java:42)
clojure.lang.LazySeq.seq (LazySeq.java:51)
clojure.lang.Cons.next (Cons.java:39)
clojure.lang.RT.boundedLength (RT.java:1790)
clojure.lang.RestFn.applyTo (RestFn.java:130)
clojure.core$apply.invokeStatic (core.clj:669)
clojure.test$run_tests.invokeStatic (test.clj:768)
clojure.test$run_tests.doInvoke (test.clj:768)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.core$apply.invoke (core.clj:662)
cognitect.test_runner$test.invokeStatic (test_runner.clj:74)
cognitect.test_runner$test.invoke (test_runner.clj:62)
cognitect.test_runner.api$do_test.invokeStatic (api.clj:14)
cognitect.test_runner.api$do_test.invoke (api.clj:6)
cognitect.test_runner.api$test.invokeStatic (api.clj:28)
cognitect.test_runner.api$test.invoke (api.clj:16)
clojure.lang.Var.invoke (Var.java:384)
clojure.run.exec$exec.invokeStatic (exec.clj:88)
clojure.run.exec$exec.invoke (exec.clj:78)
clojure.run.exec$_main$fn__220.invoke (exec.clj:227)
clojure.run.exec$_main.invokeStatic (exec.clj:223)
clojure.run.exec$_main.doInvoke (exec.clj:191)
clojure.lang.RestFn.invoke (RestFn.java:397)
clojure.lang.AFn.applyToHelper (AFn.java:152)
clojure.lang.RestFn.applyTo (RestFn.java:132)
clojure.lang.Var.applyTo (Var.java:705)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.main$main_opt.invokeStatic (main.clj:514)
clojure.main$main_opt.invoke (main.clj:510)
clojure.main$main.invokeStatic (main.clj:664)
clojure.main$main.doInvoke (main.clj:616)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.lang.Var.applyTo (Var.java:705)
clojure.main.main (main.java:40)

FAIL in (classes) (parse_test.clj:290)
Software Classes
expected: (= dict (quote (["MyClass" {"shape" "class"} ["field" ""[]string""] ["method(a uint64)" "(x, y int)"]] ["D2 Parser" {"shape" "class"} [:comment "Default visibility is + so no need to specify."] ["+reader" "io.RuneReader"] ["readerPos" "d2ast.Position"] [:comment "Private field."] ["-lookahead" ""[]rune""] [:comment "Protected field."] [:comment "We have to escape the # to prevent the line from being parsed as a comment."] ["\#lookaheadPos" "d2ast.Position"] ["+peek()" "(r rune, eof bool)"] ["rewind()"] ["commit()"] ["\#peekn(n int)" "(s string, eof bool)"]] [""github.com/terrastruct/d2parser.git"" "--" "D2 Parser"])))
actual: (not (= (["MyClass" {"shape" "class\r"} ["field" ""[]string""] ["method(a uint64)" "(x, y int)"]] ["D2 Parser" {"shape" "class\r"} [:comment "Default visibility is + so no need to specify.\r"] ["+reader" "io.RuneReader"] ["readerPos" "d2ast.Position"] [:comment "Private field.\r"] ["-lookahead" ""[]rune""] [:comment "Protected field.\r"] [:comment "We have to escape the # to prevent the line from being parsed as a comment.\r"] ["\#lookaheadPos" "d2ast.Position"] ["+peek()" "(r rune, eof bool)"] ["rewind()"] ["commit()"] ["\#peekn(n int)" "(s string, eof bool)"]] [""github.com/terrastruct/d2parser.git"" "--" "D2 Parser"]) (["MyClass" {"shape" "class"} ["field" ""[]string""] ["method(a uint64)" "(x, y int)"]] ["D2 Parser" {"shape" "class"} [:comment "Default visibility is + so no need to specify."] ["+reader" "io.RuneReader"] ["readerPos" "d2ast.Position"] [:comment "Private field."] ["-lookahead" ""[]rune""] [:comment "Protected field."] [:comment "We have to escape the # to prevent the line from being parsed as a comment."] ["\#lookaheadPos" "d2ast.Position"] ["+peek()" "(r rune, eof bool)"] ["rewind()"] ["commit()"] ["\#peekn(n int)" "(s string, eof bool)"]] [""github.com/terrastruct/d2parser.git"" "--" "D2 Parser"])))

FAIL in (classes) (parse_test.clj:314)
d2 Classes
expected: (= 1 (num-parses d2))
actual: (not (= 1 32))

ERROR in (classes) (utils.cljc:8)
d2 Classes
expected: (= true (v/all-valid? dict :d2))
' failed validation, in {"direction" "right\r"} right
at dictim.utils$error.invokeStatic (utils.cljc:8)
dictim.utils$error.invoke (utils.cljc:8)
dictim.d2.attributes$err.invokeStatic (attributes.cljc:12)
dictim.d2.attributes$err.invoke (attributes.cljc:11)
dictim.d2.attributes$validation_error.invokeStatic (attributes.cljc:200)
dictim.d2.attributes$validation_error.invoke (attributes.cljc:199)
dictim.d2.attributes$validate_attr.invokeStatic (attributes.cljc:212)
dictim.d2.attributes$validate_attr.invoke (attributes.cljc:206)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:174)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:151)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_attr_QMARK_.invokeStatic (validate.cljc:193)
dictim.validate$valid_attr_QMARK_.invoke (validate.cljc:191)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$eval2401$fn__2402.invoke (validate.cljc:200)
clojure.lang.MultiFn.invoke (MultiFn.java:229)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$all_valid_QMARK_.invokeStatic (validate.cljc:308)
dictim.validate$all_valid_QMARK_.invoke (validate.cljc:298)
dictim.d2.parse_test$fn__4871$fn__4888.invoke (parse_test.clj:315)
dictim.d2.parse_test$fn__4871.invokeStatic (parse_test.clj:315)
dictim.d2.parse_test/fn (parse_test.clj:284)
clojure.test$test_var$fn__9856.invoke (test.clj:717)
clojure.test$test_var.invokeStatic (test.clj:717)
clojure.test$test_var.invoke (test.clj:708)
clojure.test$test_vars$fn__9882$fn__9887.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars$fn__9882.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars.invokeStatic (test.clj:731)
clojure.test$test_all_vars.invokeStatic (test.clj:737)
clojure.test$test_ns.invokeStatic (test.clj:758)
clojure.test$test_ns.invoke (test.clj:743)
clojure.core$map$fn__5935.invoke (core.clj:2772)
clojure.lang.LazySeq.sval (LazySeq.java:42)
clojure.lang.LazySeq.seq (LazySeq.java:51)
clojure.lang.Cons.next (Cons.java:39)
clojure.lang.RT.boundedLength (RT.java:1790)
clojure.lang.RestFn.applyTo (RestFn.java:130)
clojure.core$apply.invokeStatic (core.clj:669)
clojure.test$run_tests.invokeStatic (test.clj:768)
clojure.test$run_tests.doInvoke (test.clj:768)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.core$apply.invoke (core.clj:662)
cognitect.test_runner$test.invokeStatic (test_runner.clj:74)
cognitect.test_runner$test.invoke (test_runner.clj:62)
cognitect.test_runner.api$do_test.invokeStatic (api.clj:14)
cognitect.test_runner.api$do_test.invoke (api.clj:6)
cognitect.test_runner.api$test.invokeStatic (api.clj:28)
cognitect.test_runner.api$test.invoke (api.clj:16)
clojure.lang.Var.invoke (Var.java:384)
clojure.run.exec$exec.invokeStatic (exec.clj:88)
clojure.run.exec$exec.invoke (exec.clj:78)
clojure.run.exec$_main$fn__220.invoke (exec.clj:227)
clojure.run.exec$_main.invokeStatic (exec.clj:223)
clojure.run.exec$_main.doInvoke (exec.clj:191)
clojure.lang.RestFn.invoke (RestFn.java:397)
clojure.lang.AFn.applyToHelper (AFn.java:152)
clojure.lang.RestFn.applyTo (RestFn.java:132)
clojure.lang.Var.applyTo (Var.java:705)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.main$main_opt.invokeStatic (main.clj:514)
clojure.main$main_opt.invoke (main.clj:510)
clojure.main$main.invokeStatic (main.clj:664)
clojure.main$main.doInvoke (main.clj:616)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.lang.Var.applyTo (Var.java:705)
clojure.main.main (main.java:40)

FAIL in (classes) (parse_test.clj:316)
d2 Classes
expected: (= dict (quote ({"direction" "right"} {"classes" {"load balancer" {"label" "load\nbalancer", "width" 100, "height" 200, "style" {"stroke-width" 1, "fill" ""#44C7B1"", "shadow" true, "border-radius" 5}}, "unhealthy" {"style" {"fill" ""#FE7070"", "stroke" ""#F69E03""}}}} ["web traffic" "->" "web lb"] ["web lb" {"class" "load balancer"}] ["web lb" "->" "api1"] ["web lb" "->" "api2"] ["web lb" "->" "api3"] ["api2" {"class" "unhealthy"}] ["api1" "->" "cache lb"] ["api3" "->" "cache lb"] ["cache lb" {"class" "load balancer"}])))
actual: (not (= ({"direction" "right\r"} {"classes" {"load balancer" {"label" "load\nbalancer\r", "width" 100.0, "height" 200.0, "style" {"stroke-width" 1.0, "fill" ""#44C7B1"\r", "shadow" true, "border-radius" 5.0}}, "unhealthy" {"style" {"fill" ""#FE7070"\r", "stroke" ""#F69E03"\r"}}}} ["web traffic" "->" "web lb"] ["web lb" {"class" "load balancer\r"}] ["web lb" "->" "api1"] ["web lb" "->" "api2"] ["web lb" "->" "api3"] ["api2" {"class" "unhealthy\r"}] ["api1" "->" "cache lb"] ["api3" "->" "cache lb"] ["cache lb" {"class" "load balancer"}]) ({"direction" "right"} {"classes" {"load balancer" {"label" "load\nbalancer", "width" 100, "height" 200, "style" {"stroke-width" 1, "fill" ""#44C7B1"", "shadow" true, "border-radius" 5}}, "unhealthy" {"style" {"fill" ""#FE7070"", "stroke" ""#F69E03""}}}} ["web traffic" "->" "web lb"] ["web lb" {"class" "load balancer"}] ["web lb" "->" "api1"] ["web lb" "->" "api2"] ["web lb" "->" "api3"] ["api2" {"class" "unhealthy"}] ["api1" "->" "cache lb"] ["api3" "->" "cache lb"] ["cache lb" {"class" "load balancer"}])))

FAIL in (shapes) (parse_test.clj:20)
Shapes
expected: (= 1 (num-parses d2))
actual: (not (= 1 16))

ERROR in (shapes) (utils.cljc:8)
Shapes
expected: (= true (v/all-valid? dict :d2))
' failed validation, in {"shape" "cloud\r"} cloud
at dictim.utils$error.invokeStatic (utils.cljc:8)
dictim.utils$error.invoke (utils.cljc:8)
dictim.d2.attributes$err.invokeStatic (attributes.cljc:12)
dictim.d2.attributes$err.invoke (attributes.cljc:11)
dictim.d2.attributes$validation_error.invokeStatic (attributes.cljc:200)
dictim.d2.attributes$validation_error.invoke (attributes.cljc:199)
dictim.d2.attributes$validate_attr.invokeStatic (attributes.cljc:212)
dictim.d2.attributes$validate_attr.invoke (attributes.cljc:206)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:174)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:151)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_attr_QMARK_.invokeStatic (validate.cljc:193)
dictim.validate$valid_attr_QMARK_.invoke (validate.cljc:191)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$eval2401$fn__2402.invoke (validate.cljc:200)
clojure.lang.MultiFn.invoke (MultiFn.java:229)
dictim.validate$valid_inline_d2_attr_QMARK_.invokeStatic (validate.cljc:216)
dictim.validate$valid_inline_d2_attr_QMARK_.invoke (validate.cljc:210)
dictim.validate$valid_inline_attr_QMARK_.invokeStatic (validate.cljc:222)
dictim.validate$valid_inline_attr_QMARK_.invoke (validate.cljc:220)
dictim.validate$eval2415$fn__2416.invoke (validate.cljc:229)
clojure.lang.MultiFn.invoke (MultiFn.java:229)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$all_valid_QMARK_.invokeStatic (validate.cljc:308)
dictim.validate$all_valid_QMARK_.invoke (validate.cljc:298)
dictim.d2.parse_test$fn__4766$fn__4771.invoke (parse_test.clj:21)
dictim.d2.parse_test$fn__4766.invokeStatic (parse_test.clj:21)
dictim.d2.parse_test/fn (parse_test.clj:16)
clojure.test$test_var$fn__9856.invoke (test.clj:717)
clojure.test$test_var.invokeStatic (test.clj:717)
clojure.test$test_var.invoke (test.clj:708)
clojure.test$test_vars$fn__9882$fn__9887.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars$fn__9882.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars.invokeStatic (test.clj:731)
clojure.test$test_all_vars.invokeStatic (test.clj:737)
clojure.test$test_ns.invokeStatic (test.clj:758)
clojure.test$test_ns.invoke (test.clj:743)
clojure.core$map$fn__5935.invoke (core.clj:2772)
clojure.lang.LazySeq.sval (LazySeq.java:42)
clojure.lang.LazySeq.seq (LazySeq.java:51)
clojure.lang.Cons.next (Cons.java:39)
clojure.lang.RT.boundedLength (RT.java:1790)
clojure.lang.RestFn.applyTo (RestFn.java:130)
clojure.core$apply.invokeStatic (core.clj:669)
clojure.test$run_tests.invokeStatic (test.clj:768)
clojure.test$run_tests.doInvoke (test.clj:768)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.core$apply.invoke (core.clj:662)
cognitect.test_runner$test.invokeStatic (test_runner.clj:74)
cognitect.test_runner$test.invoke (test_runner.clj:62)
cognitect.test_runner.api$do_test.invokeStatic (api.clj:14)
cognitect.test_runner.api$do_test.invoke (api.clj:6)
cognitect.test_runner.api$test.invokeStatic (api.clj:28)
cognitect.test_runner.api$test.invoke (api.clj:16)
clojure.lang.Var.invoke (Var.java:384)
clojure.run.exec$exec.invokeStatic (exec.clj:88)
clojure.run.exec$exec.invoke (exec.clj:78)
clojure.run.exec$_main$fn__220.invoke (exec.clj:227)
clojure.run.exec$_main.invokeStatic (exec.clj:223)
clojure.run.exec$_main.doInvoke (exec.clj:191)
clojure.lang.RestFn.invoke (RestFn.java:397)
clojure.lang.AFn.applyToHelper (AFn.java:152)
clojure.lang.RestFn.applyTo (RestFn.java:132)
clojure.lang.Var.applyTo (Var.java:705)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.main$main_opt.invokeStatic (main.clj:514)
clojure.main$main_opt.invoke (main.clj:510)
clojure.main$main.invokeStatic (main.clj:664)
clojure.main$main.doInvoke (main.clj:616)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.lang.Var.applyTo (Var.java:705)
clojure.main.main (main.java:40)

FAIL in (shapes) (parse_test.clj:22)
Shapes
expected: (= dict (quote (["imAShape"] ["im_a_shape"] ["im a shape"] ["i'm a shape"] [:comment "notice that one-hyphen is not a connection"] [:comment "whereas, a--shape would be a connection"] ["a-shape"] [:list ["SQLite"] ["Cassandra"]] ["pg" "PostgreSQL"] ["Cloud" "my cloud"] ["Cloud" {"shape" "cloud"}])))
actual: (not (= (["imAShape"] ["im_a_shape"] ["im a shape"] ["i'm a shape"] [:comment "notice that one-hyphen is not a connection\r"] [:comment "whereas, a--shape would be a connection\r"] ["a-shape"] [:list ["SQLite"] ["Cassandra"]] ["pg" "PostgreSQL"] ["Cloud" "my cloud"] ["Cloud" {"shape" "cloud\r"}]) (["imAShape"] ["im_a_shape"] ["im a shape"] ["i'm a shape"] [:comment "notice that one-hyphen is not a connection"] [:comment "whereas, a--shape would be a connection"] ["a-shape"] [:list ["SQLite"] ["Cassandra"]] ["pg" "PostgreSQL"] ["Cloud" "my cloud"] ["Cloud" {"shape" "cloud"}])))

FAIL in (interactive) (parse_test.clj:234)
Interactive features
expected: (= 1 (num-parses d2))
actual: (not (= 1 8))

FAIL in (interactive) (parse_test.clj:236)
Interactive features
expected: (= dict (quote (["x" {"tooltip" "Total abstinence is easier than perfect moderation "}] ["y" {"tooltip" "Gee, I feel kind of LIGHT in the head now,\nknowing I can't make my satellite dish PAYMENTS! "}] ["x" "->" "y"] ["x" "I'm a Mac" {"link" "https://apple.com"}] ["y" "And I'm a PC" {"link" "https://microsoft.com"}] ["x" "->" "y" "gazoontit"])))
actual: (not (= (["x" {"tooltip" "Total abstinence is easier than perfect moderation "}] ["y" {"tooltip" "Gee, I feel kind of LIGHT in the head now,\nknowing I can't make my satellite dish PAYMENTS! "}] ["x" "->" "y"] ["x" "I'm a Mac" {"link" "https://apple.com\r"}] ["y" "And I'm a PC" {"link" "https://microsoft.com\r"}] ["x" "->" "y" "gazoontit"]) (["x" {"tooltip" "Total abstinence is easier than perfect moderation "}] ["y" {"tooltip" "Gee, I feel kind of LIGHT in the head now,\nknowing I can't make my satellite dish PAYMENTS! "}] ["x" "->" "y"] ["x" "I'm a Mac" {"link" "https://apple.com"}] ["y" "And I'm a PC" {"link" "https://microsoft.com"}] ["x" "->" "y" "gazoontit"])))

FAIL in (textandcode) (parse_test.clj:252)
Text and Code
expected: (= 1 (num-parses d2))
actual: (not (= 1 2048))

ERROR in (textandcode) (utils.cljc:8)
Text and Code
expected: (= true (v/all-valid? dict :d2))
' failed validation, in {"shape" "text\r", "near" "top-center\r", "style" {"font-size" 55.0, "italic" true}}
at dictim.utils$error.invokeStatic (utils.cljc:8)
dictim.utils$error.invoke (utils.cljc:8)
dictim.d2.attributes$err.invokeStatic (attributes.cljc:12)
dictim.d2.attributes$err.invoke (attributes.cljc:11)
dictim.d2.attributes$validation_error.invokeStatic (attributes.cljc:200)
dictim.d2.attributes$validation_error.invoke (attributes.cljc:199)
dictim.d2.attributes$validate_attr.invokeStatic (attributes.cljc:212)
dictim.d2.attributes$validate_attr.invoke (attributes.cljc:206)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:174)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:151)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_attr_QMARK_.invokeStatic (validate.cljc:193)
dictim.validate$valid_attr_QMARK_.invoke (validate.cljc:191)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$eval2401$fn__2402.invoke (validate.cljc:200)
clojure.lang.MultiFn.invoke (MultiFn.java:229)
dictim.validate$eval2415$fn__2416.invoke (validate.cljc:237)
clojure.lang.MultiFn.invoke (MultiFn.java:229)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$all_valid_QMARK_.invokeStatic (validate.cljc:308)
dictim.validate$all_valid_QMARK_.invoke (validate.cljc:298)
dictim.d2.parse_test$fn__4853$fn__4858.invoke (parse_test.clj:253)
dictim.d2.parse_test$fn__4853.invokeStatic (parse_test.clj:253)
dictim.d2.parse_test/fn (parse_test.clj:248)
clojure.test$test_var$fn__9856.invoke (test.clj:717)
clojure.test$test_var.invokeStatic (test.clj:717)
clojure.test$test_var.invoke (test.clj:708)
clojure.test$test_vars$fn__9882$fn__9887.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars$fn__9882.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars.invokeStatic (test.clj:731)
clojure.test$test_all_vars.invokeStatic (test.clj:737)
clojure.test$test_ns.invokeStatic (test.clj:758)
clojure.test$test_ns.invoke (test.clj:743)
clojure.core$map$fn__5935.invoke (core.clj:2772)
clojure.lang.LazySeq.sval (LazySeq.java:42)
clojure.lang.LazySeq.seq (LazySeq.java:51)
clojure.lang.Cons.next (Cons.java:39)
clojure.lang.RT.boundedLength (RT.java:1790)
clojure.lang.RestFn.applyTo (RestFn.java:130)
clojure.core$apply.invokeStatic (core.clj:669)
clojure.test$run_tests.invokeStatic (test.clj:768)
clojure.test$run_tests.doInvoke (test.clj:768)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.core$apply.invoke (core.clj:662)
cognitect.test_runner$test.invokeStatic (test_runner.clj:74)
cognitect.test_runner$test.invoke (test_runner.clj:62)
cognitect.test_runner.api$do_test.invokeStatic (api.clj:14)
cognitect.test_runner.api$do_test.invoke (api.clj:6)
cognitect.test_runner.api$test.invokeStatic (api.clj:28)
cognitect.test_runner.api$test.invoke (api.clj:16)
clojure.lang.Var.invoke (Var.java:384)
clojure.run.exec$exec.invokeStatic (exec.clj:88)
clojure.run.exec$exec.invoke (exec.clj:78)
clojure.run.exec$_main$fn__220.invoke (exec.clj:227)
clojure.run.exec$_main.invokeStatic (exec.clj:223)
clojure.run.exec$_main.doInvoke (exec.clj:191)
clojure.lang.RestFn.invoke (RestFn.java:397)
clojure.lang.AFn.applyToHelper (AFn.java:152)
clojure.lang.RestFn.applyTo (RestFn.java:132)
clojure.lang.Var.applyTo (Var.java:705)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.main$main_opt.invokeStatic (main.clj:514)
clojure.main$main_opt.invoke (main.clj:510)
clojure.main$main.invokeStatic (main.clj:664)
clojure.main$main.doInvoke (main.clj:616)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.lang.Var.applyTo (Var.java:705)
clojure.main.main (main.java:40)

FAIL in (textandcode) (parse_test.clj:254)
Text and Code
expected: (= dict (quote (["explanation" "|md\n # I can do headers\n - lists\n - lists\n\n And other normal markdown stuff\n|"] ["my_code" "|||ts\n declare function getSmallPet(): Fish | Bird;\n const works = (a > 1) || (b < 2)\n|||"] ["my_code" "|ts\n declare function getSmallPet(): Fish | Bird;\n const works = (a > 1) || (b < 2)\n|"] ["amscd plugin" ["ex" "|tex\n\\begin{CD} B @>{\\text{very long label}}>> C S^{{\\mathcal{W}}\\Lambda}\\otimes T @>j>> T\\\\ @vvv V \\end{CD}\n|"]] ["multilines" ["ex" "|tex\n\\displaylines{x = a + b \\\\ y = b + c}\n\\sum{k=1}^{n} h_{k} \\int_{0}^{1} \\bigl(\\partial_{k} f(x_{k-1}+t h_{k} e_{k}) -\\partial_{k} f(a)\\bigr) \\,dt\n|"]] ["title" "A winning strategy" {"shape" "text", "near" "top-center", "style" {"font-size" 55, "italic" true}}] ["poll the people" "->" "results"] ["results" "->" "unfavorable" "->" "poll the people"] ["results" "->" "favorable" "->" "will of the people"])))
actual: (not (= (["explanation" "|md\r\n # I can do headers\r\n - lists\r\n - lists\r\n\r\n And other normal markdown stuff\r\n|"] ["my_code" "|||ts\r\n declare function getSmallPet(): Fish | Bird;\r\n const works = (a > 1) || (b < 2)\r\n|||"] ["my_code" "|ts\r\n declare function getSmallPet(): Fish | Bird;\r\n const works = (a > 1) || (b < 2)\r\n|"] ["amscd plugin" ["ex" "|tex\r\n\\begin{CD} B @>{\\text{very long label}}>> C S^{{\\mathcal{W}}\\Lambda}\\otimes T @>j>> T\\\\ @vvv V \\end{CD}\r\n|"]] ["multilines" ["ex" "|tex\r\n\\displaylines{x = a + b \\\\ y = b + c}\r\n\\sum{k=1}^{n} h_{k} \\int_{0}^{1} \\bigl(\\partial_{k} f(x_{k-1}+t h_{k} e_{k}) -\\partial_{k} f(a)\\bigr) \\,dt\r\n|"]] ["title" "A winning strategy" {"shape" "text\r", "near" "top-center\r", "style" {"font-size" 55.0, "italic" true}}] ["poll the people" "->" "results"] ["results" "->" "unfavorable" "->" "poll the people"] ["results" "->" "favorable" "->" "will of the people"]) (["explanation" "|md\n # I can do headers\n - lists\n - lists\n\n And other normal markdown stuff\n|"] ["my_code" "|||ts\n declare function getSmallPet(): Fish | Bird;\n const works = (a > 1) || (b < 2)\n|||"] ["my_code" "|ts\n declare function getSmallPet(): Fish | Bird;\n const works = (a > 1) || (b < 2)\n|"] ["amscd plugin" ["ex" "|tex\n\\begin{CD} B @>{\\text{very long label}}>> C S^{{\\mathcal{W}}\\Lambda}\\otimes T @>j>> T\\\\ @vvv V \\end{CD}\n|"]] ["multilines" ["ex" "|tex\n\\displaylines{x = a + b \\\\ y = b + c}\n\\sum{k=1}^{n} h_{k} \\int_{0}^{1} \\bigl(\\partial_{k} f(x_{k-1}+t h_{k} e_{k}) -\\partial_{k} f(a)\\bigr) \\,dt\n|"]] ["title" "A winning strategy" {"shape" "text", "near" "top-center", "style" {"font-size" 55, "italic" true}}] ["poll the people" "->" "results"] ["results" "->" "unfavorable" "->" "poll the people"] ["results" "->" "favorable" "->" "will of the people"])))

FAIL in (containers) (parse_test.clj:40)
Containers
expected: (= 1 (num-parses d2))
actual: (not (= 1 524288))

ERROR in (containers) (utils.cljc:8)
Containers
expected: (= true (v/all-valid? dict :d2))
' failed validation, in {"style.fill" ""#ACE1AF"\r"}
at dictim.utils$error.invokeStatic (utils.cljc:8)
dictim.utils$error.invoke (utils.cljc:8)
dictim.d2.attributes$err.invokeStatic (attributes.cljc:12)
dictim.d2.attributes$err.invoke (attributes.cljc:11)
dictim.d2.attributes$validation_error.invokeStatic (attributes.cljc:200)
dictim.d2.attributes$validation_error.invoke (attributes.cljc:199)
dictim.d2.attributes$validate_attr.invokeStatic (attributes.cljc:212)
dictim.d2.attributes$validate_attr.invoke (attributes.cljc:206)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:174)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_d2_attr_QMARK_$fn__2386.invoke (validate.cljc:170)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:170)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:151)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_attr_QMARK_.invokeStatic (validate.cljc:193)
dictim.validate$valid_attr_QMARK_.invoke (validate.cljc:191)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$eval2401$fn__2402.invoke (validate.cljc:200)
clojure.lang.MultiFn.invoke (MultiFn.java:229)
dictim.validate$valid_inline_d2_attr_QMARK_.invokeStatic (validate.cljc:216)
dictim.validate$valid_inline_d2_attr_QMARK_.invoke (validate.cljc:210)
dictim.validate$valid_inline_attr_QMARK_.invokeStatic (validate.cljc:222)
dictim.validate$valid_inline_attr_QMARK_.invoke (validate.cljc:220)
dictim.validate$eval2415$fn__2416.invoke (validate.cljc:229)
clojure.lang.MultiFn.invoke (MultiFn.java:229)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$eval2454$fn__2455.invoke (validate.cljc:278)
clojure.lang.MultiFn.invoke (MultiFn.java:229)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$all_valid_QMARK_.invokeStatic (validate.cljc:308)
dictim.validate$all_valid_QMARK_.invoke (validate.cljc:298)
dictim.d2.parse_test$fn__4779$fn__4784.invoke (parse_test.clj:41)
dictim.d2.parse_test$fn__4779.invokeStatic (parse_test.clj:41)
dictim.d2.parse_test/fn (parse_test.clj:36)
clojure.test$test_var$fn__9856.invoke (test.clj:717)
clojure.test$test_var.invokeStatic (test.clj:717)
clojure.test$test_var.invoke (test.clj:708)
clojure.test$test_vars$fn__9882$fn__9887.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars$fn__9882.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars.invokeStatic (test.clj:731)
clojure.test$test_all_vars.invokeStatic (test.clj:737)
clojure.test$test_ns.invokeStatic (test.clj:758)
clojure.test$test_ns.invoke (test.clj:743)
clojure.core$map$fn__5935.invoke (core.clj:2772)
clojure.lang.LazySeq.sval (LazySeq.java:42)
clojure.lang.LazySeq.seq (LazySeq.java:51)
clojure.lang.Cons.next (Cons.java:39)
clojure.lang.RT.boundedLength (RT.java:1790)
clojure.lang.RestFn.applyTo (RestFn.java:130)
clojure.core$apply.invokeStatic (core.clj:669)
clojure.test$run_tests.invokeStatic (test.clj:768)
clojure.test$run_tests.doInvoke (test.clj:768)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.core$apply.invoke (core.clj:662)
cognitect.test_runner$test.invokeStatic (test_runner.clj:74)
cognitect.test_runner$test.invoke (test_runner.clj:62)
cognitect.test_runner.api$do_test.invokeStatic (api.clj:14)
cognitect.test_runner.api$do_test.invoke (api.clj:6)
cognitect.test_runner.api$test.invokeStatic (api.clj:28)
cognitect.test_runner.api$test.invoke (api.clj:16)
clojure.lang.Var.invoke (Var.java:384)
clojure.run.exec$exec.invokeStatic (exec.clj:88)
clojure.run.exec$exec.invoke (exec.clj:78)
clojure.run.exec$_main$fn__220.invoke (exec.clj:227)
clojure.run.exec$_main.invokeStatic (exec.clj:223)
clojure.run.exec$_main.doInvoke (exec.clj:191)
clojure.lang.RestFn.invoke (RestFn.java:397)
clojure.lang.AFn.applyToHelper (AFn.java:152)
clojure.lang.RestFn.applyTo (RestFn.java:132)
clojure.lang.Var.applyTo (Var.java:705)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.main$main_opt.invokeStatic (main.clj:514)
clojure.main$main_opt.invoke (main.clj:510)
clojure.main$main.invokeStatic (main.clj:664)
clojure.main$main.doInvoke (main.clj:616)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.lang.Var.applyTo (Var.java:705)
clojure.main.main (main.java:40)

FAIL in (containers) (parse_test.clj:42)
Containers
expected: (= dict (quote (["server"] [:comment "Declares a shape inside of another shape"] ["server.process"] [:comment "Can declare the container and child in same line"] ["im a parent.im a child"] [:comment "Since connections can also declare keys, this works too"] ["apartment.Bedroom.Bathroom" "->" "office.Spare Room.Bathroom" "Portal"] ["clouds" ["aws" ["load_balancer" "->" "api"] ["api" "->" "db"]] ["gcloud" ["auth" "->" "db"]] ["gcloud" "->" "aws"]] ["clouds" ["aws" "AWS" ["load_balancer" "->" "api"] ["api" "->" "db"]] ["gcloud" "Google Cloud" ["auth" "->" "db"]] ["gcloud" "->" "aws"]] ["users" "->" "clouds.aws.load_balancer"] ["users" "->" "clouds.gcloud.auth"] ["ci.deploys" "->" "clouds"] ["christmas" ["presents"]] ["birthdays" ["presents"] [".christmas.presents" "->" "presents" "regift"] [".christmas" {"style.fill" ""#ACE1AF""}]])))
actual: (not (= (["server"] [:comment "Declares a shape inside of another shape\r"] ["server.process"] [:comment "Can declare the container and child in same line\r"] ["im a parent.im a child"] [:comment "Since connections can also declare keys, this works too\r"] ["apartment.Bedroom.Bathroom" "->" "office.Spare Room.Bathroom" "Portal"] ["clouds" ["aws" ["load_balancer" "->" "api"] ["api" "->" "db"]] ["gcloud" ["auth" "->" "db"]] ["gcloud" "->" "aws"]] ["clouds" ["aws" "AWS" ["load_balancer" "->" "api"] ["api" "->" "db"]] ["gcloud" "Google Cloud" ["auth" "->" "db"]] ["gcloud" "->" "aws"]] ["users" "->" "clouds.aws.load_balancer"] ["users" "->" "clouds.gcloud.auth"] ["ci.deploys" "->" "clouds"] ["christmas" ["presents"]] ["birthdays" ["presents"] [".christmas.presents" "->" "presents" "regift"] [".christmas" {"style.fill" ""#ACE1AF"\r"}]]) (["server"] [:comment "Declares a shape inside of another shape"] ["server.process"] [:comment "Can declare the container and child in same line"] ["im a parent.im a child"] [:comment "Since connections can also declare keys, this works too"] ["apartment.Bedroom.Bathroom" "->" "office.Spare Room.Bathroom" "Portal"] ["clouds" ["aws" ["load_balancer" "->" "api"] ["api" "->" "db"]] ["gcloud" ["auth" "->" "db"]] ["gcloud" "->" "aws"]] ["clouds" ["aws" "AWS" ["load_balancer" "->" "api"] ["api" "->" "db"]] ["gcloud" "Google Cloud" ["auth" "->" "db"]] ["gcloud" "->" "aws"]] ["users" "->" "clouds.aws.load_balancer"] ["users" "->" "clouds.gcloud.auth"] ["ci.deploys" "->" "clouds"] ["christmas" ["presents"]] ["birthdays" ["presents"] [".christmas.presents" "->" "presents" "regift"] [".christmas" {"style.fill" ""#ACE1AF""}]])))

FAIL in (sql) (parse_test.clj:141)
Sql Tables
expected: (= 1 (num-parses d2))
actual: (not (= 1 8192))

ERROR in (sql) (utils.cljc:8)
Sql Tables
expected: (= true (v/all-valid? dict :d2))
' failed validation, in {"shape" "sql_table\r"}table
at dictim.utils$error.invokeStatic (utils.cljc:8)
dictim.utils$error.invoke (utils.cljc:8)
dictim.d2.attributes$err.invokeStatic (attributes.cljc:12)
dictim.d2.attributes$err.invoke (attributes.cljc:11)
dictim.d2.attributes$validation_error.invokeStatic (attributes.cljc:200)
dictim.d2.attributes$validation_error.invoke (attributes.cljc:199)
dictim.d2.attributes$validate_attr.invokeStatic (attributes.cljc:212)
dictim.d2.attributes$validate_attr.invoke (attributes.cljc:206)
dictim.validate$valid_d2_attr_QMARK
.invokeStatic (validate.cljc:174)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:151)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_attr_QMARK_.invokeStatic (validate.cljc:193)
dictim.validate$valid_attr_QMARK_.invoke (validate.cljc:191)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$eval2401$fn__2402.invoke (validate.cljc:200)
clojure.lang.MultiFn.invoke (MultiFn.java:229)
dictim.validate$valid_inline_d2_attr_QMARK_.invokeStatic (validate.cljc:216)
dictim.validate$valid_inline_d2_attr_QMARK_.invoke (validate.cljc:210)
dictim.validate$valid_inline_attr_QMARK_.invokeStatic (validate.cljc:222)
dictim.validate$valid_inline_attr_QMARK_.invoke (validate.cljc:220)
dictim.validate$eval2454$fn__2455.invoke (validate.cljc:267)
clojure.lang.MultiFn.invoke (MultiFn.java:229)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$all_valid_QMARK_.invokeStatic (validate.cljc:308)
dictim.validate$all_valid_QMARK_.invoke (validate.cljc:298)
dictim.d2.parse_test$fn__4814$fn__4819.invoke (parse_test.clj:142)
dictim.d2.parse_test$fn__4814.invokeStatic (parse_test.clj:142)
dictim.d2.parse_test/fn (parse_test.clj:137)
clojure.test$test_var$fn__9856.invoke (test.clj:717)
clojure.test$test_var.invokeStatic (test.clj:717)
clojure.test$test_var.invoke (test.clj:708)
clojure.test$test_vars$fn__9882$fn__9887.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars$fn__9882.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars.invokeStatic (test.clj:731)
clojure.test$test_all_vars.invokeStatic (test.clj:737)
clojure.test$test_ns.invokeStatic (test.clj:758)
clojure.test$test_ns.invoke (test.clj:743)
clojure.core$map$fn__5935.invoke (core.clj:2772)
clojure.lang.LazySeq.sval (LazySeq.java:42)
clojure.lang.LazySeq.seq (LazySeq.java:51)
clojure.lang.Cons.next (Cons.java:39)
clojure.lang.RT.boundedLength (RT.java:1790)
clojure.lang.RestFn.applyTo (RestFn.java:130)
clojure.core$apply.invokeStatic (core.clj:669)
clojure.test$run_tests.invokeStatic (test.clj:768)
clojure.test$run_tests.doInvoke (test.clj:768)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.core$apply.invoke (core.clj:662)
cognitect.test_runner$test.invokeStatic (test_runner.clj:74)
cognitect.test_runner$test.invoke (test_runner.clj:62)
cognitect.test_runner.api$do_test.invokeStatic (api.clj:14)
cognitect.test_runner.api$do_test.invoke (api.clj:6)
cognitect.test_runner.api$test.invokeStatic (api.clj:28)
cognitect.test_runner.api$test.invoke (api.clj:16)
clojure.lang.Var.invoke (Var.java:384)
clojure.run.exec$exec.invokeStatic (exec.clj:88)
clojure.run.exec$exec.invoke (exec.clj:78)
clojure.run.exec$_main$fn__220.invoke (exec.clj:227)
clojure.run.exec$_main.invokeStatic (exec.clj:223)
clojure.run.exec$_main.doInvoke (exec.clj:191)
clojure.lang.RestFn.invoke (RestFn.java:397)
clojure.lang.AFn.applyToHelper (AFn.java:152)
clojure.lang.RestFn.applyTo (RestFn.java:132)
clojure.lang.Var.applyTo (Var.java:705)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.main$main_opt.invokeStatic (main.clj:514)
clojure.main$main_opt.invoke (main.clj:510)
clojure.main$main.invokeStatic (main.clj:664)
clojure.main$main.doInvoke (main.clj:616)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.lang.Var.applyTo (Var.java:705)
clojure.main.main (main.java:40)

FAIL in (sql) (parse_test.clj:143)
Sql Tables
expected: (= dict (quote (["my_table" {"shape" "sql_table"} ["id" "int" {"constraint" "primary_key"}] ["last_updated" "timestamp with time zone"]] ["objects" {"shape" "sql_table"} ["id" "int" {"constraint" "primary_key"}] ["disk" "int" {"constraint" "foreign_key"}] ["json" "jsonb" {"constraint" "unique"}] ["last_updated" "timestamp with time zone"]] ["disks" {"shape" "sql_table"} ["id" "int" {"constraint" "primary_key"}]] ["objects.disk" "->" "disks.id"] ["cloud" ["disks" {"shape" "sql_table"} ["id" "int" {"constraint" "primary_key"}]] ["blocks" {"shape" "sql_table"} ["id" "int" {"constraint" "primary_key"}] ["disk" "int" {"constraint" "foreign_key"}] ["blob" "blob"]] ["blocks.disk" "->" "disks.id"] ["AWS S3 Vancouver" "->" "disks"]])))
actual: (not (= (["my_table" {"shape" "sql_table\r"} ["id" "int" {"constraint" "primary_key"}] ["last_updated" "timestamp with time zone"]] ["objects" {"shape" "sql_table\r"} ["id" "int" {"constraint" "primary_key"}] ["disk" "int" {"constraint" "foreign_key"}] ["json" "jsonb" {"constraint" "unique"}] ["last_updated" "timestamp with time zone"]] ["disks" {"shape" "sql_table\r"} ["id" "int" {"constraint" "primary_key"}]] ["objects.disk" "->" "disks.id"] ["cloud" ["disks" {"shape" "sql_table\r"} ["id" "int" {"constraint" "primary_key"}]] ["blocks" {"shape" "sql_table\r"} ["id" "int" {"constraint" "primary_key"}] ["disk" "int" {"constraint" "foreign_key"}] ["blob" "blob"]] ["blocks.disk" "->" "disks.id"] ["AWS S3 Vancouver" "->" "disks"]]) (["my_table" {"shape" "sql_table"} ["id" "int" {"constraint" "primary_key"}] ["last_updated" "timestamp with time zone"]] ["objects" {"shape" "sql_table"} ["id" "int" {"constraint" "primary_key"}] ["disk" "int" {"constraint" "foreign_key"}] ["json" "jsonb" {"constraint" "unique"}] ["last_updated" "timestamp with time zone"]] ["disks" {"shape" "sql_table"} ["id" "int" {"constraint" "primary_key"}]] ["objects.disk" "->" "disks.id"] ["cloud" ["disks" {"shape" "sql_table"} ["id" "int" {"constraint" "primary_key"}]] ["blocks" {"shape" "sql_table"} ["id" "int" {"constraint" "primary_key"}] ["disk" "int" {"constraint" "foreign_key"}] ["blob" "blob"]] ["blocks.disk" "->" "disks.id"] ["AWS S3 Vancouver" "->" "disks"]])))

FAIL in (sequence-digrams) (parse_test.clj:175)
Sequence Diagrams
expected: (= 1 (num-parses d2))
actual: (not (= 1 131072))

ERROR in (sequence-digrams) (utils.cljc:8)
Sequence Diagrams
expected: (= true (v/all-valid? dict :d2))
' failed validation, in {"direction" "right\r"} right
at dictim.utils$error.invokeStatic (utils.cljc:8)
dictim.utils$error.invoke (utils.cljc:8)
dictim.d2.attributes$err.invokeStatic (attributes.cljc:12)
dictim.d2.attributes$err.invoke (attributes.cljc:11)
dictim.d2.attributes$validation_error.invokeStatic (attributes.cljc:200)
dictim.d2.attributes$validation_error.invoke (attributes.cljc:199)
dictim.d2.attributes$validate_attr.invokeStatic (attributes.cljc:212)
dictim.d2.attributes$validate_attr.invoke (attributes.cljc:206)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:174)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:151)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_attr_QMARK_.invokeStatic (validate.cljc:193)
dictim.validate$valid_attr_QMARK_.invoke (validate.cljc:191)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$eval2401$fn__2402.invoke (validate.cljc:200)
clojure.lang.MultiFn.invoke (MultiFn.java:229)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$all_valid_QMARK_.invokeStatic (validate.cljc:308)
dictim.validate$all_valid_QMARK_.invoke (validate.cljc:298)
dictim.d2.parse_test$fn__4827$fn__4832.invoke (parse_test.clj:176)
dictim.d2.parse_test$fn__4827.invokeStatic (parse_test.clj:176)
dictim.d2.parse_test/fn (parse_test.clj:171)
clojure.test$test_var$fn__9856.invoke (test.clj:717)
clojure.test$test_var.invokeStatic (test.clj:717)
clojure.test$test_var.invoke (test.clj:708)
clojure.test$test_vars$fn__9882$fn__9887.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars$fn__9882.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars.invokeStatic (test.clj:731)
clojure.test$test_all_vars.invokeStatic (test.clj:737)
clojure.test$test_ns.invokeStatic (test.clj:758)
clojure.test$test_ns.invoke (test.clj:743)
clojure.core$map$fn__5935.invoke (core.clj:2772)
clojure.lang.LazySeq.sval (LazySeq.java:42)
clojure.lang.LazySeq.seq (LazySeq.java:51)
clojure.lang.Cons.next (Cons.java:39)
clojure.lang.RT.boundedLength (RT.java:1790)
clojure.lang.RestFn.applyTo (RestFn.java:130)
clojure.core$apply.invokeStatic (core.clj:669)
clojure.test$run_tests.invokeStatic (test.clj:768)
clojure.test$run_tests.doInvoke (test.clj:768)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.core$apply.invoke (core.clj:662)
cognitect.test_runner$test.invokeStatic (test_runner.clj:74)
cognitect.test_runner$test.invoke (test_runner.clj:62)
cognitect.test_runner.api$do_test.invokeStatic (api.clj:14)
cognitect.test_runner.api$do_test.invoke (api.clj:6)
cognitect.test_runner.api$test.invokeStatic (api.clj:28)
cognitect.test_runner.api$test.invoke (api.clj:16)
clojure.lang.Var.invoke (Var.java:384)
clojure.run.exec$exec.invokeStatic (exec.clj:88)
clojure.run.exec$exec.invoke (exec.clj:78)
clojure.run.exec$_main$fn__220.invoke (exec.clj:227)
clojure.run.exec$_main.invokeStatic (exec.clj:223)
clojure.run.exec$_main.doInvoke (exec.clj:191)
clojure.lang.RestFn.invoke (RestFn.java:397)
clojure.lang.AFn.applyToHelper (AFn.java:152)
clojure.lang.RestFn.applyTo (RestFn.java:132)
clojure.lang.Var.applyTo (Var.java:705)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.main$main_opt.invokeStatic (main.clj:514)
clojure.main$main_opt.invoke (main.clj:510)
clojure.main$main.invokeStatic (main.clj:664)
clojure.main$main.doInvoke (main.clj:616)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.lang.Var.applyTo (Var.java:705)
clojure.main.main (main.java:40)

FAIL in (sequence-digrams) (parse_test.clj:177)
Sequence Diagrams
expected: (= dict (quote ({"direction" "right"} ["Before and after becoming friends" ["2007" "Office chatter in 2007" {"shape" "sequence_diagram"} ["alice" "Alice"] ["bob" "Bobby"] ["awkward small talk" ["alice" "->" "bob" "uhm, hi"] ["bob" "->" "alice" "oh, hello"] ["icebreaker attempt" ["alice" "->" "bob" "what did you have for lunch?"]] ["unfortunate outcome" ["bob" "->" "alice" "that's personal"]]]] ["2012" "Office chatter in 2012" {"shape" "sequence_diagram"} ["alice" "Alice"] ["bob" "Bobby"] ["alice" "->" "bob" "Want to play with ChatGPT?"] ["bob" "->" "alice" "Yes!"] ["bob" "->" "alice.play" "Write a play..."] ["alice.play" "->" "bob.play" "about 2 friends..."] ["bob.play" "->" "alice.play" "who find love..."] ["alice.play" "->" "bob.play" "in a sequence diagram"]] ["2007" "->" "2012" "Five\nyears\nlater"]] ["Office chatter" {"shape" "sequence_diagram"} ["alice" "Alice"] ["bob" "Bobby"] ["awkward small talk" ["alice" "->" "bob" "uhm, hi"] ["bob" "->" "alice" "oh, hello"] ["icebreaker attempt" ["alice" "->" "bob" "what did you have for lunch?"]] ["unfortunate outcome" ["bob" "->" "alice" "that's personal"]]]] {"shape" "sequence_diagram"} ["alice" "->" "bob" "What does it mean\nto be well-adjusted?"] ["bob" "->" "alice" "The ability to play bridge or\ngolf as if they were games."] {"shape" "sequence_diagram"} [:comment "Remember that semicolons allow multiple objects to be defined in one line"] [:comment "Actors will appear from left-to-right as a, b, c, d..."] [:list ["a"] ["b"] ["c"] ["d"]] [:comment "... even if the connections are in a different order"] ["c" "->" "d"] ["d" "->" "a"] ["b" "->" "d"])))
actual: (not (= ({"direction" "right\r"} ["Before and after becoming friends" ["2007" "Office chatter in 2007" {"shape" "sequence_diagram\r"} ["alice" "Alice"] ["bob" "Bobby"] ["awkward small talk" ["alice" "->" "bob" "uhm, hi"] ["bob" "->" "alice" "oh, hello"] ["icebreaker attempt" ["alice" "->" "bob" "what did you have for lunch?"]] ["unfortunate outcome" ["bob" "->" "alice" "that's personal"]]]] ["2012" "Office chatter in 2012" {"shape" "sequence_diagram\r"} ["alice" "Alice"] ["bob" "Bobby"] ["alice" "->" "bob" "Want to play with ChatGPT?"] ["bob" "->" "alice" "Yes!"] ["bob" "->" "alice.play" "Write a play..."] ["alice.play" "->" "bob.play" "about 2 friends..."] ["bob.play" "->" "alice.play" "who find love..."] ["alice.play" "->" "bob.play" "in a sequence diagram"]] ["2007" "->" "2012" "Five\nyears\nlater"]] ["Office chatter" {"shape" "sequence_diagram\r"} ["alice" "Alice"] ["bob" "Bobby"] ["awkward small talk" ["alice" "->" "bob" "uhm, hi"] ["bob" "->" "alice" "oh, hello"] ["icebreaker attempt" ["alice" "->" "bob" "what did you have for lunch?"]] ["unfortunate outcome" ["bob" "->" "alice" "that's personal"]]]] {"shape" "sequence_diagram\r"} ["alice" "->" "bob" "What does it mean\nto be well-adjusted?"] ["bob" "->" "alice" "The ability to play bridge or\ngolf as if they were games."] {"shape" "sequence_diagram\r"} [:comment "Remember that semicolons allow multiple objects to be defined in one line\r"] [:comment "Actors will appear from left-to-right as a, b, c, d...\r"] [:list ["a"] ["b"] ["c"] ["d"]] [:comment "... even if the connections are in a different order\r"] ["c" "->" "d"] ["d" "->" "a"] ["b" "->" "d"]) ({"direction" "right"} ["Before and after becoming friends" ["2007" "Office chatter in 2007" {"shape" "sequence_diagram"} ["alice" "Alice"] ["bob" "Bobby"] ["awkward small talk" ["alice" "->" "bob" "uhm, hi"] ["bob" "->" "alice" "oh, hello"] ["icebreaker attempt" ["alice" "->" "bob" "what did you have for lunch?"]] ["unfortunate outcome" ["bob" "->" "alice" "that's personal"]]]] ["2012" "Office chatter in 2012" {"shape" "sequence_diagram"} ["alice" "Alice"] ["bob" "Bobby"] ["alice" "->" "bob" "Want to play with ChatGPT?"] ["bob" "->" "alice" "Yes!"] ["bob" "->" "alice.play" "Write a play..."] ["alice.play" "->" "bob.play" "about 2 friends..."] ["bob.play" "->" "alice.play" "who find love..."] ["alice.play" "->" "bob.play" "in a sequence diagram"]] ["2007" "->" "2012" "Five\nyears\nlater"]] ["Office chatter" {"shape" "sequence_diagram"} ["alice" "Alice"] ["bob" "Bobby"] ["awkward small talk" ["alice" "->" "bob" "uhm, hi"] ["bob" "->" "alice" "oh, hello"] ["icebreaker attempt" ["alice" "->" "bob" "what did you have for lunch?"]] ["unfortunate outcome" ["bob" "->" "alice" "that's personal"]]]] {"shape" "sequence_diagram"} ["alice" "->" "bob" "What does it mean\nto be well-adjusted?"] ["bob" "->" "alice" "The ability to play bridge or\ngolf as if they were games."] {"shape" "sequence_diagram"} [:comment "Remember that semicolons allow multiple objects to be defined in one line"] [:comment "Actors will appear from left-to-right as a, b, c, d..."] [:list ["a"] ["b"] ["c"] ["d"]] [:comment "... even if the connections are in a different order"] ["c" "->" "d"] ["d" "->" "a"] ["b" "->" "d"])))

FAIL in (styles) (parse_test.clj:133)
Styles
expected: (= 1 (num-parses d2))
actual: (not (= 1 65536))

ERROR in (styles) (utils.cljc:8)
Styles
expected: (= true (v/all-valid? dict :d2))
' failed validation, in {"style" {"opacity" 0.6, "fill" "orange\r", "stroke" ""#53C0D8"\r", "stroke-width" 5.0, "shadow" true}}
at dictim.utils$error.invokeStatic (utils.cljc:8)
dictim.utils$error.invoke (utils.cljc:8)
dictim.d2.attributes$err.invokeStatic (attributes.cljc:12)
dictim.d2.attributes$err.invoke (attributes.cljc:11)
dictim.d2.attributes$validation_error.invokeStatic (attributes.cljc:200)
dictim.d2.attributes$validation_error.invoke (attributes.cljc:199)
dictim.d2.attributes$validate_attr.invokeStatic (attributes.cljc:212)
dictim.d2.attributes$validate_attr.invoke (attributes.cljc:206)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:174)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_d2_attr_QMARK_$fn__2386.invoke (validate.cljc:170)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:170)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:151)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_attr_QMARK_.invokeStatic (validate.cljc:193)
dictim.validate$valid_attr_QMARK_.invoke (validate.cljc:191)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$eval2401$fn__2402.invoke (validate.cljc:200)
clojure.lang.MultiFn.invoke (MultiFn.java:229)
dictim.validate$valid_inline_d2_attr_QMARK_.invokeStatic (validate.cljc:216)
dictim.validate$valid_inline_d2_attr_QMARK_.invoke (validate.cljc:210)
dictim.validate$valid_inline_attr_QMARK_.invokeStatic (validate.cljc:222)
dictim.validate$valid_inline_attr_QMARK_.invoke (validate.cljc:220)
dictim.validate$eval2415$fn__2416.invoke (validate.cljc:229)
clojure.lang.MultiFn.invoke (MultiFn.java:229)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$all_valid_QMARK_.invokeStatic (validate.cljc:308)
dictim.validate$all_valid_QMARK_.invoke (validate.cljc:298)
dictim.d2.parse_test$fn__4805.invokeStatic (parse_test.clj:134)
dictim.d2.parse_test/fn (parse_test.clj:129)
clojure.test$test_var$fn__9856.invoke (test.clj:717)
clojure.test$test_var.invokeStatic (test.clj:717)
clojure.test$test_var.invoke (test.clj:708)
clojure.test$test_vars$fn__9882$fn__9887.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars$fn__9882.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars.invokeStatic (test.clj:731)
clojure.test$test_all_vars.invokeStatic (test.clj:737)
clojure.test$test_ns.invokeStatic (test.clj:758)
clojure.test$test_ns.invoke (test.clj:743)
clojure.core$map$fn__5935.invoke (core.clj:2772)
clojure.lang.LazySeq.sval (LazySeq.java:42)
clojure.lang.LazySeq.seq (LazySeq.java:51)
clojure.lang.Cons.next (Cons.java:39)
clojure.lang.RT.boundedLength (RT.java:1790)
clojure.lang.RestFn.applyTo (RestFn.java:130)
clojure.core$apply.invokeStatic (core.clj:669)
clojure.test$run_tests.invokeStatic (test.clj:768)
clojure.test$run_tests.doInvoke (test.clj:768)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.core$apply.invoke (core.clj:662)
cognitect.test_runner$test.invokeStatic (test_runner.clj:74)
cognitect.test_runner$test.invoke (test_runner.clj:62)
cognitect.test_runner.api$do_test.invokeStatic (api.clj:14)
cognitect.test_runner.api$do_test.invoke (api.clj:6)
cognitect.test_runner.api$test.invokeStatic (api.clj:28)
cognitect.test_runner.api$test.invoke (api.clj:16)
clojure.lang.Var.invoke (Var.java:384)
clojure.run.exec$exec.invokeStatic (exec.clj:88)
clojure.run.exec$exec.invoke (exec.clj:78)
clojure.run.exec$_main$fn__220.invoke (exec.clj:227)
clojure.run.exec$_main.invokeStatic (exec.clj:223)
clojure.run.exec$_main.doInvoke (exec.clj:191)
clojure.lang.RestFn.invoke (RestFn.java:397)
clojure.lang.AFn.applyToHelper (AFn.java:152)
clojure.lang.RestFn.applyTo (RestFn.java:132)
clojure.lang.Var.applyTo (Var.java:705)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.main$main_opt.invokeStatic (main.clj:514)
clojure.main$main_opt.invoke (main.clj:510)
clojure.main$main.invokeStatic (main.clj:664)
clojure.main$main.doInvoke (main.clj:616)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.lang.Var.applyTo (Var.java:705)
clojure.main.main (main.java:40)

FAIL in (globs) (parse_test.clj:347)
glob in dotted word but not in end position -> attribute
glob in dotted word in end position -> shape or container.
expected: (= 1 (num-parses d2))
actual: (not (= 1 8))

ERROR in (globs) (utils.cljc:8)
glob in dotted word but not in end position -> attribute
glob in dotted word in end position -> shape or container.
expected: (= true (v/all-valid? dict :d2))
' failed validation, in {"*.shape" "circle\r"}rcle
at dictim.utils$error.invokeStatic (utils.cljc:8)
dictim.utils$error.invoke (utils.cljc:8)
dictim.d2.attributes$err.invokeStatic (attributes.cljc:12)
dictim.d2.attributes$err.invoke (attributes.cljc:11)
dictim.d2.attributes$validation_error.invokeStatic (attributes.cljc:200)
dictim.d2.attributes$validation_error.invoke (attributes.cljc:199)
dictim.d2.attributes$validate_attr.invokeStatic (attributes.cljc:212)
dictim.d2.attributes$validate_attr.invoke (attributes.cljc:206)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:174)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_d2_attr_QMARK_$fn__2386.invoke (validate.cljc:170)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:170)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_d2_attr_QMARK_.invokeStatic (validate.cljc:151)
dictim.validate$valid_d2_attr_QMARK_.invoke (validate.cljc:145)
dictim.validate$valid_attr_QMARK_.invokeStatic (validate.cljc:193)
dictim.validate$valid_attr_QMARK_.invoke (validate.cljc:191)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$eval2401$fn__2402.invoke (validate.cljc:200)
clojure.lang.MultiFn.invoke (MultiFn.java:229)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$eval2454$fn__2455.invoke (validate.cljc:278)
clojure.lang.MultiFn.invoke (MultiFn.java:229)
dictim.validate$eval2454$fn__2455.invoke (validate.cljc:277)
clojure.lang.MultiFn.invoke (MultiFn.java:229)
clojure.core$every_QMARK_.invokeStatic (core.clj:2698)
clojure.core$every_QMARK_.invoke (core.clj:2689)
dictim.validate$all_valid_QMARK_.invokeStatic (validate.cljc:308)
dictim.validate$all_valid_QMARK_.invoke (validate.cljc:298)
dictim.d2.parse_test$fn__4896$fn__4897$fn__4902.invoke (parse_test.clj:348)
dictim.d2.parse_test$fn__4896$fn__4897.invoke (parse_test.clj:348)
dictim.d2.parse_test$fn__4896.invokeStatic (parse_test.clj:343)
dictim.d2.parse_test/fn (parse_test.clj:342)
clojure.test$test_var$fn__9856.invoke (test.clj:717)
clojure.test$test_var.invokeStatic (test.clj:717)
clojure.test$test_var.invoke (test.clj:708)
clojure.test$test_vars$fn__9882$fn__9887.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars$fn__9882.invoke (test.clj:735)
clojure.test$default_fixture.invokeStatic (test.clj:687)
clojure.test$default_fixture.invoke (test.clj:683)
clojure.test$test_vars.invokeStatic (test.clj:731)
clojure.test$test_all_vars.invokeStatic (test.clj:737)
clojure.test$test_ns.invokeStatic (test.clj:758)
clojure.test$test_ns.invoke (test.clj:743)
clojure.core$map$fn__5935.invoke (core.clj:2772)
clojure.lang.LazySeq.sval (LazySeq.java:42)
clojure.lang.LazySeq.seq (LazySeq.java:51)
clojure.lang.Cons.next (Cons.java:39)
clojure.lang.RT.boundedLength (RT.java:1790)
clojure.lang.RestFn.applyTo (RestFn.java:130)
clojure.core$apply.invokeStatic (core.clj:669)
clojure.test$run_tests.invokeStatic (test.clj:768)
clojure.test$run_tests.doInvoke (test.clj:768)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.core$apply.invoke (core.clj:662)
cognitect.test_runner$test.invokeStatic (test_runner.clj:74)
cognitect.test_runner$test.invoke (test_runner.clj:62)
cognitect.test_runner.api$do_test.invokeStatic (api.clj:14)
cognitect.test_runner.api$do_test.invoke (api.clj:6)
cognitect.test_runner.api$test.invokeStatic (api.clj:28)
cognitect.test_runner.api$test.invoke (api.clj:16)
clojure.lang.Var.invoke (Var.java:384)
clojure.run.exec$exec.invokeStatic (exec.clj:88)
clojure.run.exec$exec.invoke (exec.clj:78)
clojure.run.exec$_main$fn__220.invoke (exec.clj:227)
clojure.run.exec$_main.invokeStatic (exec.clj:223)
clojure.run.exec$_main.doInvoke (exec.clj:191)
clojure.lang.RestFn.invoke (RestFn.java:397)
clojure.lang.AFn.applyToHelper (AFn.java:152)
clojure.lang.RestFn.applyTo (RestFn.java:132)
clojure.lang.Var.applyTo (Var.java:705)
clojure.core$apply.invokeStatic (core.clj:667)
clojure.main$main_opt.invokeStatic (main.clj:514)
clojure.main$main_opt.invoke (main.clj:510)
clojure.main$main.invokeStatic (main.clj:664)
clojure.main$main.doInvoke (main.clj:616)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.lang.Var.applyTo (Var.java:705)
clojure.main.main (main.java:40)

FAIL in (globs) (parse_test.clj:349)
glob in dotted word but not in end position -> attribute
glob in dotted word in end position -> shape or container.
expected: (= dict (quote (["foods" ["pizzas" ["cheese"] ["sausage"] ["pineapple"] {".shape" "circle"}] ["humans" ["john"] ["james"] {".shape" "person"}] ["humans." "->" "pizzas.pineapple" "eats"]])))
actual: (not (= (["foods" ["pizzas" ["cheese"] ["sausage"] ["pineapple"] {"
.shape" "circle\r"}] ["humans" ["john"] ["james"] {".shape" "person\r"}] ["humans." "->" "pizzas.pineapple" "eats"]]) (["foods" ["pizzas" ["cheese"] ["sausage"] ["pineapple"] {".shape" "circle"}] ["humans" ["john"] ["james"] {".shape" "person"}] ["humans.*" "->" "pizzas.pineapple" "eats"]])))

Testing dictim.flat-test

Testing dictim.graphspec-test

Testing dictim.json-test

Testing dictim.template-test

Ran 81 tests containing 357 assertions.
19 failures, 10 errors.
Execution error (ExceptionInfo) at cognitect.test-runner.api/test (api.clj:30).
Test failures or errors occurred.

@judepayne
Copy link
Owner

Thanks @eddielao I think I begin to see what is going on here.
The line return character on Mac and Linux is \n whereas on Windows its \r\n
This difference is leading to parser ambiguity. I think investigate further and see if I can fix.
I might ask you to re-clone the repository once fixed and re-run clj -X:test because I don't currently have access to a Windows development environment.
BTW this issue (#6) started off as being about something different (which I already fixed) so I will open a new issue just to deal with the \r\n

@eddielao
Copy link
Contributor

Thanks @eddielao I think I begin to see what is going on here. The line return character on Mac and Linux is \n whereas on Windows its \r\n This difference is leading to parser ambiguity. I think investigate further and see if I can fix. I might ask you to re-clone the repository once fixed and re-run clj -X:test because I don't currently have access to a Windows development environment. BTW this issue (#6) started off as being about something different (which I already fixed) so I will open a new issue just to deal with the \r\n

You're very welcome, @judepayne ! Let me know what else I can help with.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants