Skip to content

Commit 85902ad

Browse files
Copilotjackfirth
andauthored
Support importing analyzers directly in test require: statements (#703)
Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: jackfirth <[email protected]>
1 parent 63241b2 commit 85902ad

File tree

5 files changed

+32
-11
lines changed

5 files changed

+32
-11
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

default-recommendations/analyzers/identifier-usage-test.rkt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#lang resyntax/test
22

33

4-
require: resyntax/default-recommendations default-recommendations
4+
require: resyntax/default-recommendations/analyzers/identifier-usage identifier-usage-analyzer
55
header: - #lang racket/base
66

77

default-recommendations/analyzers/ignored-result-values-test.rkt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#lang resyntax/test
2-
require: resyntax/default-recommendations default-recommendations
2+
require: resyntax/default-recommendations/analyzers/ignored-result-values ignored-result-values-analyzer
33
header: - #lang racket/base
44

55

default-recommendations/analyzers/variable-mutability-test.rkt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#lang resyntax/test
2-
require: resyntax/default-recommendations default-recommendations
2+
require: resyntax/default-recommendations/analyzers/variable-mutability variable-mutability-analyzer
33
header: - #lang racket/base
44

55

test/private/rackunit.rkt

Lines changed: 20 additions & 5 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,7 @@
3334
rebellion/type/tuple
3435
resyntax
3536
resyntax/base
37+
resyntax/private/analyzer
3638
resyntax/private/logger
3739
resyntax/private/refactoring-result
3840
resyntax/private/source
@@ -91,10 +93,23 @@
9193
(current-suite-under-test (refactoring-suite #:rules '())))
9294

9395

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)))
96+
(define (add-suite-under-test! suite-or-analyzer)
97+
(cond
98+
[(refactoring-suite? suite-or-analyzer)
99+
(define current-rules (refactoring-suite-rules (current-suite-under-test)))
100+
(define current-analyzers (refactoring-suite-analyzers (current-suite-under-test)))
101+
(define new-rules (append current-rules (refactoring-suite-rules suite-or-analyzer)))
102+
(define new-analyzers (set-union current-analyzers (refactoring-suite-analyzers suite-or-analyzer)))
103+
(current-suite-under-test (refactoring-suite #:rules new-rules #:analyzers new-analyzers))]
104+
[(expansion-analyzer? suite-or-analyzer)
105+
(define current-rules (refactoring-suite-rules (current-suite-under-test)))
106+
(define current-analyzers (refactoring-suite-analyzers (current-suite-under-test)))
107+
(define new-analyzers (set-add current-analyzers suite-or-analyzer))
108+
(current-suite-under-test (refactoring-suite #:rules current-rules #:analyzers new-analyzers))]
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 "")))
@@ -249,7 +264,7 @@
249264

250265
(define actual-props
251266
(call-with-logs-captured
252-
(λ () (reysntax-analyze-for-properties-only program-src))))
267+
(λ () (reysntax-analyze-for-properties-only program-src #:suite suite))))
253268

254269
(define target-src (string-source (string-trim (code-block-raw-string target))))
255270
(define context-src-list

0 commit comments

Comments
 (0)