Skip to content

Commit 1077e55

Browse files
Copilotjackfirth
andcommitted
Add #:analyzers parameter to refactoring-suite for cleaner analyzer handling
Instead of tracking analyzers separately in test infrastructure, analyzers are now added directly to the suite via the #:analyzers parameter. This simplifies the implementation and makes the suite's analyzer collection more explicit. - Updated refactoring-suite contract to accept #:analyzers parameter - Modified refactoring-suite function to combine rule analyzers with explicitly provided analyzers - Updated add-suite-under-test! to build suites with analyzers included - Simplified check-suite-analysis to use suite's analyzers directly - Removed separate current-analyzers-under-test parameter Co-authored-by: jackfirth <[email protected]>
1 parent 897fb2f commit 1077e55

File tree

2 files changed

+18
-16
lines changed

2 files changed

+18
-16
lines changed

base.rkt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
[refactoring-suite? (-> any/c boolean?)]
1919
[refactoring-suite
2020
(->* ()
21-
(#:rules (sequence/c refactoring-rule?) #:name (or/c interned-symbol? #false))
21+
(#:rules (sequence/c refactoring-rule?)
22+
#:analyzers (sequence/c expansion-analyzer?)
23+
#:name (or/c interned-symbol? #false))
2224
refactoring-suite?)]
2325
[refactoring-suite-rules (-> refactoring-suite? (listof refactoring-rule?))]
2426
[refactoring-suite-analyzers (-> refactoring-suite? (set/c expansion-analyzer?))]))
@@ -234,12 +236,16 @@
234236
#:omit-root-binding)
235237

236238

237-
(define (refactoring-suite #:rules [rules '()] #:name [name #false])
239+
(define (refactoring-suite #:rules [rules '()] #:analyzers [analyzers '()] #:name [name #false])
238240
(define rule-list (sequence->list rules))
239-
(define combined-analyzers
241+
(define analyzers-from-rules
240242
(for*/set ([rule (in-list rule-list)]
241243
[analyzer (in-set (refactoring-rule-analyzers rule))])
242244
analyzer))
245+
(define extra-analyzers
246+
(for/set ([analyzer analyzers])
247+
analyzer))
248+
(define combined-analyzers (set-union analyzers-from-rules extra-analyzers))
243249
(constructor:refactoring-suite #:rules rule-list #:analyzers combined-analyzers #:name name))
244250

245251

test/private/rackunit.rkt

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -89,23 +89,24 @@
8989

9090
(define current-suite-under-test (make-parameter (refactoring-suite #:rules '())))
9191

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

9693
(define (clear-suites-under-test!)
97-
(current-suite-under-test (refactoring-suite #:rules '()))
98-
(current-analyzers-under-test (set)))
94+
(current-suite-under-test (refactoring-suite #:rules '())))
9995

10096

10197
(define (add-suite-under-test! suite-or-analyzer)
10298
(cond
10399
[(refactoring-suite? suite-or-analyzer)
104100
(define current-rules (refactoring-suite-rules (current-suite-under-test)))
101+
(define current-analyzers (refactoring-suite-analyzers (current-suite-under-test)))
105102
(define new-rules (append current-rules (refactoring-suite-rules suite-or-analyzer)))
106-
(current-suite-under-test (refactoring-suite #:rules new-rules))]
103+
(define new-analyzers (set-union current-analyzers (refactoring-suite-analyzers suite-or-analyzer)))
104+
(current-suite-under-test (refactoring-suite #:rules new-rules #:analyzers new-analyzers))]
107105
[(expansion-analyzer? suite-or-analyzer)
108-
(current-analyzers-under-test (set-add (current-analyzers-under-test) suite-or-analyzer))]
106+
(define current-rules (refactoring-suite-rules (current-suite-under-test)))
107+
(define current-analyzers (refactoring-suite-analyzers (current-suite-under-test)))
108+
(define new-analyzers (set-add current-analyzers suite-or-analyzer))
109+
(current-suite-under-test (refactoring-suite #:rules current-rules #:analyzers new-analyzers))]
109110
[else
110111
(raise-argument-error 'add-suite-under-test!
111112
"(or/c refactoring-suite? expansion-analyzer?)"
@@ -258,15 +259,10 @@
258259

259260
(define-check (check-suite-analysis program context-list target property-key expected-value)
260261
(define suite (current-suite-under-test))
261-
(define extra-analyzers (current-analyzers-under-test))
262262
(set! program (code-block-append (current-header) program))
263263
(define program-src (string-source (code-block-raw-string program)))
264264
(define-values (call-with-logs-captured build-logs-info) (make-log-capture-utilities))
265265

266-
;; Combine analyzers from the suite and any additional analyzers
267-
(define all-analyzers
268-
(set-union (refactoring-suite-analyzers suite) extra-analyzers))
269-
270266
(define (skip e)
271267
(log-resyntax-error
272268
"skipping analysis\n encountered an error during macro expansion\n error:\n~a"
@@ -282,7 +278,7 @@
282278
[exn:fail:filesystem:missing-module? skip]
283279
[exn:fail:contract:variable? skip])
284280
(source-code-analysis-added-syntax-properties
285-
(source-analyze program-src #:analyzers all-analyzers)))
281+
(source-analyze program-src #:analyzers (refactoring-suite-analyzers suite))))
286282
(syntax-property-bundle)))))
287283

288284
(define target-src (string-source (string-trim (code-block-raw-string target))))

0 commit comments

Comments
 (0)