|
523 | 523 | (deftest script-deprecated-key-warning |
524 | 524 | ;; Reset warned-keys so warnings are emitted fresh |
525 | 525 | (reset! @#'selmer.util/warned-keys #{}) |
526 | | - (let [sw (java.io.StringWriter.)] |
527 | | - (binding [*err* sw] |
| 526 | + (let [warnings (atom [])] |
| 527 | + (binding [*deprecation-warning-handler* #(swap! warnings conj %)] |
528 | 528 | (render "{% script \"/js/site.js\" %}" {:async true})) |
529 | | - (is (str/includes? (str sw) "DEPRECATION WARNING")) |
530 | | - (is (str/includes? (str sw) ":selmer/async"))) |
| 529 | + (is (= 1 (count @warnings))) |
| 530 | + (is (str/includes? (first @warnings) ":selmer/async"))) |
531 | 531 | ;; Second call should NOT warn again (once per key per session) |
532 | | - (let [sw (java.io.StringWriter.)] |
533 | | - (binding [*err* sw] |
| 532 | + (let [warnings (atom [])] |
| 533 | + (binding [*deprecation-warning-handler* #(swap! warnings conj %)] |
534 | 534 | (render "{% script \"/js/site.js\" %}" {:async true})) |
535 | | - (is (= "" (str sw)))) |
| 535 | + (is (= 0 (count @warnings)))) |
536 | 536 | ;; Reset and test defer warning |
537 | 537 | (reset! @#'selmer.util/warned-keys #{}) |
538 | | - (let [sw (java.io.StringWriter.)] |
539 | | - (binding [*err* sw] |
| 538 | + (let [warnings (atom [])] |
| 539 | + (binding [*deprecation-warning-handler* #(swap! warnings conj %)] |
540 | 540 | (render "{% script \"/js/site.js\" %}" {:defer true})) |
541 | | - (is (str/includes? (str sw) "DEPRECATION WARNING")) |
542 | | - (is (str/includes? (str sw) ":selmer/defer"))) |
| 541 | + (is (= 1 (count @warnings))) |
| 542 | + (is (str/includes? (first @warnings) ":selmer/defer"))) |
543 | 543 | ;; No warning when *warn-on-deprecated-keys* is false |
544 | 544 | (reset! @#'selmer.util/warned-keys #{}) |
545 | | - (let [sw (java.io.StringWriter.)] |
546 | | - (binding [*err* sw |
| 545 | + (let [warnings (atom [])] |
| 546 | + (binding [*deprecation-warning-handler* #(swap! warnings conj %) |
547 | 547 | *warn-on-deprecated-keys* false] |
548 | 548 | (render "{% script \"/js/site.js\" %}" {:async true})) |
549 | | - (is (= "" (str sw))))) |
| 549 | + (is (= 0 (count @warnings))))) |
| 550 | + |
| 551 | +(deftest script-deprecated-key-warning-default-handler |
| 552 | + ;; Verify the default handler writes to stderr (the println fallback path) |
| 553 | + (reset! @#'selmer.util/warned-keys #{}) |
| 554 | + (let [sw (java.io.StringWriter.)] |
| 555 | + (binding [*err* sw] |
| 556 | + (render "{% script \"/js/site.js\" %}" {:async true})) |
| 557 | + (is (str/includes? (str sw) "DEPRECATION WARNING")) |
| 558 | + (is (str/includes? (str sw) ":selmer/async")))) |
550 | 559 |
|
551 | 560 | (deftest cycle-test |
552 | 561 | (is |
|
0 commit comments