Skip to content

Commit 0550d76

Browse files
Copilotjackfirth
andcommitted
Add support for importing analyzers directly in test require: statements
Co-authored-by: jackfirth <[email protected]>
1 parent b75c7a2 commit 0550d76

File tree

1 file changed

+31
-6
lines changed

1 file changed

+31
-6
lines changed

test/private/rackunit.rkt

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
racket/match
1919
racket/port
2020
racket/pretty
21+
racket/set
2122
racket/string
2223
rackunit
2324
rebellion/base/comparator
@@ -33,6 +34,8 @@
3334
rebellion/type/tuple
3435
resyntax
3536
resyntax/base
37+
resyntax/private/analysis
38+
resyntax/private/analyzer
3639
resyntax/private/logger
3740
resyntax/private/refactoring-result
3841
resyntax/private/source
@@ -86,15 +89,27 @@
8689

8790
(define current-suite-under-test (make-parameter (refactoring-suite #:rules '())))
8891

92+
;; Additional analyzers that should be included when running analysis tests
93+
(define current-analyzers-under-test (make-parameter (set)))
94+
8995

9096
(define (clear-suites-under-test!)
91-
(current-suite-under-test (refactoring-suite #:rules '())))
97+
(current-suite-under-test (refactoring-suite #:rules '()))
98+
(current-analyzers-under-test (set)))
9299

93100

94-
(define (add-suite-under-test! suite)
95-
(define current-rules (refactoring-suite-rules (current-suite-under-test)))
96-
(define new-rules (append current-rules (refactoring-suite-rules suite)))
97-
(current-suite-under-test (refactoring-suite #:rules new-rules)))
101+
(define (add-suite-under-test! suite-or-analyzer)
102+
(cond
103+
[(refactoring-suite? suite-or-analyzer)
104+
(define current-rules (refactoring-suite-rules (current-suite-under-test)))
105+
(define new-rules (append current-rules (refactoring-suite-rules suite-or-analyzer)))
106+
(current-suite-under-test (refactoring-suite #:rules new-rules))]
107+
[(expansion-analyzer? suite-or-analyzer)
108+
(current-analyzers-under-test (set-add (current-analyzers-under-test) suite-or-analyzer))]
109+
[else
110+
(raise-argument-error 'add-suite-under-test!
111+
"(or/c refactoring-suite? expansion-analyzer?)"
112+
suite-or-analyzer)]))
98113

99114

100115
(define current-header (make-parameter (code-block "")))
@@ -243,13 +258,23 @@
243258

244259
(define-check (check-suite-analysis program context-list target property-key expected-value)
245260
(define suite (current-suite-under-test))
261+
(define extra-analyzers (current-analyzers-under-test))
246262
(set! program (code-block-append (current-header) program))
247263
(define program-src (string-source (code-block-raw-string program)))
248264
(define-values (call-with-logs-captured build-logs-info) (make-log-capture-utilities))
249265

266+
;; Combine analyzers from the suite and any additional analyzers
267+
(define all-analyzers
268+
(set-union (refactoring-suite-analyzers suite) extra-analyzers))
269+
250270
(define actual-props
251271
(call-with-logs-captured
252-
(λ () (reysntax-analyze-for-properties-only program-src))))
272+
(λ ()
273+
(define full-source (source->string program-src))
274+
(if (string-prefix? full-source "#lang racket")
275+
(source-code-analysis-added-syntax-properties
276+
(source-analyze program-src #:analyzers all-analyzers))
277+
(syntax-property-bundle)))))
253278

254279
(define target-src (string-source (string-trim (code-block-raw-string target))))
255280
(define context-src-list

0 commit comments

Comments
 (0)