Skip to content

Commit f5f6db8

Browse files
committed
tests: skip ignored refs earlier
1 parent 822fe7e commit f5f6db8

File tree

2 files changed

+57
-41
lines changed

2 files changed

+57
-41
lines changed

testData/highlighting/ClojureScript.txt

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ cognitect/transit.clj 0 errors, 5 warnings, 3 dynamic
77
13717: dynamic 'x'
88
13724: dynamic 'y'
99
13791: dynamic 'r'
10-
cljs/analyzer.cljc 0 errors, 7 warnings, 24 dynamic
10+
cljs/analyzer.cljc 0 errors, 7 warnings, 10 dynamic, 47 ignored
1111
604: unable to resolve 'ensure'
1212
149016: unable to resolve 'info'
1313
149193: unable to resolve 'info'
@@ -75,7 +75,7 @@ cljs/closure.clj 0 errors, 0 warnings, 40 dynamic
7575
142458: dynamic 'watchable'
7676
146668: dynamic 'isFile'
7777
146687: dynamic 'delete'
78-
cljs/compiler.cljc 0 errors, 1 warnings, 28 dynamic
78+
cljs/compiler.cljc 0 errors, 1 warnings, 8 dynamic, 49 ignored
7979
604: unable to resolve 'ensure'
8080
1909: dynamic 'StringBuffer'
8181
5833: dynamic 'toString'
@@ -87,7 +87,7 @@ cljs/compiler.cljc 0 errors, 1 warnings, 28 dynamic
8787
57989: dynamic 'awaitTermination'
8888
cljs/compiler/api.clj 0 errors, 0 warnings, 0 dynamic
8989
cljs/compiler/macros.clj 0 errors, 0 warnings, 0 dynamic
90-
cljs/core.cljc 0 errors, 7 warnings, 58 dynamic
90+
cljs/core.cljc 0 errors, 7 warnings, 41 dynamic, 23 ignored
9191
555: unable to resolve 'assert-args'
9292
1982: unable to resolve 'unchecked-divide'
9393
2842: unable to resolve 'alias'
@@ -136,7 +136,7 @@ cljs/core.cljc 0 errors, 7 warnings, 58 dynamic
136136
137090: dynamic 'slice'
137137
141847: dynamic '-cljs$lang$macro'
138138
143846: dynamic '-cljs$lang$macro'
139-
cljs/core.cljs 0 errors, 19 warnings, 864 dynamic
139+
cljs/core.cljs 0 errors, 10 warnings, 621 dynamic, 362 ignored
140140
33056: unable to resolve 'cljs.core.Var'
141141
104285: unable to resolve 'apply-to'
142142
104609: unable to resolve 'apply-to'
@@ -802,7 +802,7 @@ cljs/externs.clj 0 errors, 0 warnings, 22 dynamic
802802
10389: dynamic 'getName'
803803
10592: dynamic 'getName'
804804
cljs/js.clj 0 errors, 0 warnings, 0 dynamic
805-
cljs/js.cljs 0 errors, 12 warnings, 47 dynamic
805+
cljs/js.cljs 0 errors, 12 warnings, 33 dynamic, 15 ignored
806806
4412: unable to resolve 'default-compiler-env'
807807
9423: unable to resolve 'default-compiler-env'
808808
25887: unable to resolve '*compiler*'
@@ -848,8 +848,8 @@ cljs/js.cljs 0 errors, 12 warnings, 47 dynamic
848848
61351: dynamic '-stack'
849849
61779: dynamic '-cause'
850850
61786: dynamic '-stack'
851-
cljs/js_deps.cljc 0 errors, 0 warnings, 0 dynamic
852-
cljs/loader.cljs 0 errors, 0 warnings, 21 dynamic
851+
cljs/js_deps.cljc 0 errors, 0 warnings, 0 dynamic, 2 ignored
852+
cljs/loader.cljs 0 errors, 0 warnings, 16 dynamic, 10 ignored
853853
592: dynamic 'ModuleLoader'
854854
630: dynamic 'ModuleManager'
855855
1094: dynamic 'legacy/trustedResourceUrlFromString'
@@ -868,14 +868,14 @@ cljs/loader.cljs 0 errors, 0 warnings, 21 dynamic
868868
3543: dynamic 'prefetchModule'
869869
cljs/main.clj 0 errors, 0 warnings, 0 dynamic
870870
cljs/module_graph.cljc 0 errors, 0 warnings, 0 dynamic
871-
cljs/nodejs.cljs 0 errors, 0 warnings, 8 dynamic
871+
cljs/nodejs.cljs 0 errors, 0 warnings, 4 dynamic, 4 ignored
872872
915: dynamic 'apply'
873873
924: dynamic 'log'
874874
1018: dynamic 'apply'
875875
1027: dynamic 'error'
876-
cljs/nodejscli.cljs 0 errors, 0 warnings, 5 dynamic
876+
cljs/nodejscli.cljs 0 errors, 0 warnings, 0 dynamic, 9 ignored
877877
cljs/pprint.cljc 0 errors, 0 warnings, 0 dynamic
878-
cljs/pprint.cljs 0 errors, 44 warnings, 148 dynamic
878+
cljs/pprint.cljs 0 errors, 44 warnings, 42 dynamic, 117 ignored
879879
11722: unable to resolve 'nl-t?'
880880
12077: unable to resolve 'nl-t?'
881881
12869: unable to resolve 'nl-t?'
@@ -963,15 +963,15 @@ cljs/pprint.cljs 0 errors, 44 warnings, 148 dynamic
963963
125017: dynamic 'col_write'
964964
125349: dynamic 'col_write'
965965
cljs/reader.clj 0 errors, 0 warnings, 0 dynamic
966-
cljs/reader.cljs 0 errors, 1 warnings, 19 dynamic
966+
cljs/reader.cljs 0 errors, 1 warnings, 6 dynamic, 18 ignored
967967
3859: unable to resolve 'PersistentQueue.EMPTY'
968968
691: dynamic 'StringBuffer'
969969
895: dynamic 'getLength'
970970
932: dynamic 'append'
971971
957: dynamic 'toString'
972972
3463: dynamic 'UTC'
973973
4081: dynamic 'push'
974-
cljs/repl.cljc 0 errors, 0 warnings, 13 dynamic
974+
cljs/repl.cljc 0 errors, 0 warnings, 11 dynamic, 9 ignored
975975
12888: dynamic 'startsWith'
976976
13506: dynamic 'getCanonicalFile'
977977
15814: dynamic 'startsWith'
@@ -983,7 +983,7 @@ cljs/repl.cljc 0 errors, 0 warnings, 13 dynamic
983983
52607: dynamic 'instanceMethod'
984984
52656: dynamic 'instanceField'
985985
64988: dynamic 'stack'
986-
cljs/repl.cljs 0 errors, 0 warnings, 3 dynamic
986+
cljs/repl.cljs 0 errors, 0 warnings, 1 dynamic, 6 ignored
987987
2861: dynamic 'name'
988988
cljs/repl/bootstrap.clj 0 errors, 0 warnings, 11 dynamic
989989
966: dynamic 'isProvided__'
@@ -1041,13 +1041,13 @@ cljs/repl/server.clj 0 errors, 0 warnings, 19 dynamic
10411041
cljs/server/browser.clj 0 errors, 0 warnings, 0 dynamic
10421042
cljs/server/node.clj 0 errors, 0 warnings, 0 dynamic
10431043
cljs/source_map.clj 0 errors, 0 warnings, 0 dynamic
1044-
cljs/source_map.cljs 0 errors, 0 warnings, 11 dynamic
1044+
cljs/source_map.cljs 0 errors, 0 warnings, 2 dynamic, 25 ignored
10451045
9497: dynamic 'valueOf'
10461046
10303: dynamic 'stringify'
10471047
cljs/source_map/base64.clj 0 errors, 0 warnings, 0 dynamic
1048-
cljs/source_map/base64.cljs 0 errors, 0 warnings, 2 dynamic
1048+
cljs/source_map/base64.cljs 0 errors, 0 warnings, 0 dynamic, 2 ignored
10491049
cljs/source_map/base64_vlq.clj 0 errors, 0 warnings, 0 dynamic
1050-
cljs/source_map/base64_vlq.cljs 0 errors, 0 warnings, 8 dynamic
1050+
cljs/source_map/base64_vlq.cljs 0 errors, 0 warnings, 6 dynamic, 2 ignored
10511051
608: dynamic 'StringBuffer'
10521052
1335: dynamic 'append'
10531053
1489: dynamic 'append'
@@ -1056,7 +1056,7 @@ cljs/source_map/base64_vlq.cljs 0 errors, 0 warnings, 8 dynamic
10561056
2221: dynamic 'substring'
10571057
cljs/spec/alpha.cljc 0 errors, 1 warnings, 0 dynamic
10581058
1607: unable to resolve 'str'
1059-
cljs/spec/alpha.cljs 0 errors, 42 warnings, 15 dynamic
1059+
cljs/spec/alpha.cljs 0 errors, 40 warnings, 6 dynamic, 13 ignored
10601060
8791: unable to resolve 'such-that'
10611061
10432: unable to resolve 'map-spec'
10621062
12523: unable to resolve 'return'
@@ -1104,7 +1104,7 @@ cljs/spec/alpha.cljs 0 errors, 42 warnings, 15 dynamic
11041104
52840: dynamic 'lessThanOrEqual'
11051105
52880: dynamic 'lessThan'
11061106
cljs/spec/gen/alpha.cljc 0 errors, 0 warnings, 0 dynamic
1107-
cljs/spec/gen/alpha.cljs 0 errors, 112 warnings, 3 dynamic
1107+
cljs/spec/gen/alpha.cljs 0 errors, 112 warnings, 1 dynamic, 2 ignored
11081108
2129: unable to resolve 'hash-map'
11091109
2138: unable to resolve 'list'
11101110
2143: unable to resolve 'map'
@@ -1221,7 +1221,7 @@ cljs/spec/gen/alpha.cljs 0 errors, 112 warnings, 3 dynamic
12211221
cljs/spec/test/alpha.cljc 0 errors, 2 warnings, 0 dynamic
12221222
2191: unable to resolve 'cljs.spec.alpha$macros'
12231223
8356: unable to resolve 'cljs.spec.alpha$macros'
1224-
cljs/spec/test/alpha.cljs 0 errors, 0 warnings, 17 dynamic
1224+
cljs/spec/test/alpha.cljs 0 errors, 0 warnings, 12 dynamic, 8 ignored
12251225
1578: dynamic '-location'
12261226
1588: dynamic '-host'
12271227
1620: dynamic '-location'
@@ -1234,20 +1234,20 @@ cljs/spec/test/alpha.cljs 0 errors, 0 warnings, 17 dynamic
12341234
3979: dynamic 'cljs$core$IFn$_invoke$arity$variadic'
12351235
4561: dynamic 'cljs$core$IFn$_invoke$arity$variadic'
12361236
4619: dynamic 'cljs$core$IFn$_invoke$arity$variadic'
1237-
cljs/stacktrace.cljc 0 errors, 0 warnings, 9 dynamic
1237+
cljs/stacktrace.cljc 0 errors, 0 warnings, 4 dynamic, 11 ignored
12381238
12911: dynamic 'indexOf'
12391239
12949: dynamic 'indexOf'
12401240
12976: dynamic 'substring'
12411241
14612: dynamic 'indexOf'
12421242
cljs/support.cljc 0 errors, 0 warnings, 0 dynamic
1243-
cljs/tagged_literals.cljc 0 errors, 0 warnings, 9 dynamic
1243+
cljs/tagged_literals.cljc 0 errors, 0 warnings, 2 dynamic, 8 ignored
12441244
1444: dynamic '-message'
12451245
2005: dynamic '-message'
1246-
cljs/test.cljc 0 errors, 0 warnings, 5 dynamic
1246+
cljs/test.cljc 0 errors, 0 warnings, 3 dynamic, 2 ignored
12471247
5828: dynamic 'message'
12481248
9330: dynamic 'cljs$lang$var'
12491249
9370: dynamic 'cljs$lang$var'
1250-
cljs/test.cljs 0 errors, 0 warnings, 10 dynamic
1250+
cljs/test.cljs 0 errors, 0 warnings, 7 dynamic, 3 ignored
12511251
13468: dynamic 'split'
12521252
13881: dynamic 'split'
12531253
13932: dynamic 'split'
@@ -1262,12 +1262,12 @@ cljs/util.cljc 0 errors, 1 warnings, 5 dynamic
12621262
5596: dynamic 'getFile'
12631263
6926: dynamic 'getAbsolutePath'
12641264
6981: dynamic 'getFile'
1265-
clojure/browser/dom.cljs 0 errors, 0 warnings, 22 dynamic
1265+
clojure/browser/dom.cljs 0 errors, 0 warnings, 4 dynamic, 49 ignored
12661266
759: dynamic 'log'
12671267
821: dynamic 'log'
12681268
4239: dynamic 'value'
12691269
4581: dynamic 'click'
1270-
clojure/browser/event.cljs 0 errors, 0 warnings, 14 dynamic
1270+
clojure/browser/event.cljs 0 errors, 0 warnings, 11 dynamic, 4 ignored
12711271
717: dynamic 'EventTarget'
12721272
729: dynamic 'EventType'
12731273
937: dynamic 'toLowerCase'
@@ -1279,7 +1279,7 @@ clojure/browser/event.cljs 0 errors, 0 warnings, 14 dynamic
12791279
2117: dynamic 'events/dispatchEvent'
12801280
2171: dynamic 'events/expose'
12811281
2273: dynamic 'events/getTotalListenerCount'
1282-
clojure/browser/net.cljs 0 errors, 1 warnings, 29 dynamic
1282+
clojure/browser/net.cljs 0 errors, 1 warnings, 22 dynamic, 15 ignored
12831283
4870: unable to resolve 'WebSocket.EventType'
12841284
807: dynamic 'XhrIo'
12851285
813: dynamic 'EventType'
@@ -1303,7 +1303,7 @@ clojure/browser/net.cljs 0 errors, 1 warnings, 29 dynamic
13031303
4575: dynamic 'open'
13041304
4635: dynamic 'send'
13051305
4806: dynamic 'toLowerCase'
1306-
clojure/browser/repl.cljs 0 errors, 2 warnings, 83 dynamic
1306+
clojure/browser/repl.cljs 0 errors, 2 warnings, 33 dynamic, 95 ignored
13071307
1368: unable to resolve 'HOST'
13081308
1399: unable to resolve 'PORT'
13091309
1772: dynamic 'json/serialize'
@@ -1349,12 +1349,12 @@ clojure/core/reducers.cljs 0 errors, 0 warnings, 2 dynamic
13491349
clojure/data.cljs 0 errors, 0 warnings, 0 dynamic
13501350
clojure/datafy.cljs 0 errors, 0 warnings, 0 dynamic
13511351
clojure/edn.cljs 0 errors, 0 warnings, 0 dynamic
1352-
clojure/reflect.cljs 0 errors, 0 warnings, 6 dynamic
1352+
clojure/reflect.cljs 0 errors, 0 warnings, 3 dynamic, 3 ignored
13531353
831: dynamic 'log'
13541354
1169: dynamic 'getResponseText'
13551355
1188: dynamic 'currentTarget'
13561356
clojure/set.cljs 0 errors, 0 warnings, 0 dynamic
1357-
clojure/string.cljs 0 errors, 0 warnings, 46 dynamic
1357+
clojure/string.cljs 0 errors, 0 warnings, 31 dynamic, 37 ignored
13581358
592: dynamic 'StringBuffer'
13591359
838: dynamic 'replace'
13601360
984: dynamic 'source'
@@ -1392,7 +1392,7 @@ process/env.cljs 0 errors, 1 warnings, 0 dynamic
13921392
541: unable to resolve 'NODE_ENV'
13931393
clojure/data/json.clj 0 errors, 0 warnings, 0 dynamic
13941394
clojure/data/json_compat_0_1.clj 0 errors, 0 warnings, 0 dynamic
1395-
cljs/tools/reader.cljs 0 errors, 8 warnings, 47 dynamic
1395+
cljs/tools/reader.cljs 0 errors, 8 warnings, 25 dynamic, 40 ignored
13961396
594: unable to resolve 'read'
13971397
599: unable to resolve 'read-line'
13981398
609: unable to resolve 'read-string'
@@ -1426,7 +1426,7 @@ cljs/tools/reader.cljs 0 errors, 8 warnings, 47 dynamic
14261426
33692: dynamic 'trim'
14271427
33800: dynamic 'frames'
14281428
33918: dynamic 'trim'
1429-
cljs/tools/reader/edn.cljs 0 errors, 6 warnings, 26 dynamic
1429+
cljs/tools/reader/edn.cljs 0 errors, 6 warnings, 15 dynamic, 17 ignored
14301430
595: unable to resolve 'read'
14311431
600: unable to resolve 'read-string'
14321432
617: unable to resolve 'default-data-readers'
@@ -1448,7 +1448,7 @@ cljs/tools/reader/edn.cljs 0 errors, 6 warnings, 26 dynamic
14481448
9223: dynamic 'indexOf'
14491449
14189: dynamic 'message'
14501450
14664: dynamic 'message'
1451-
cljs/tools/reader/impl/commons.cljs 0 errors, 0 warnings, 13 dynamic
1451+
cljs/tools/reader/impl/commons.cljs 0 errors, 0 warnings, 6 dynamic, 7 ignored
14521452
3432: dynamic 'test'
14531453
3476: dynamic 'test'
14541454
3516: dynamic 'indexOf'
@@ -1460,11 +1460,11 @@ cljs/tools/reader/impl/inspect.cljs 0 errors, 0 warnings, 3 dynamic
14601460
1282: dynamic 'length'
14611461
1336: dynamic 'substring'
14621462
1368: dynamic 'length'
1463-
cljs/tools/reader/impl/utils.cljs 0 errors, 1 warnings, 4 dynamic
1463+
cljs/tools/reader/impl/utils.cljs 0 errors, 1 warnings, 1 dynamic, 7 ignored
14641464
728: unable to resolve 'cljs.core.ExceptionInfo'
14651465
1532: dynamic 'test'
14661466
cljs/tools/reader/reader_types.clj 0 errors, 0 warnings, 0 dynamic
1467-
cljs/tools/reader/reader_types.cljs 0 errors, 1 warnings, 15 dynamic
1467+
cljs/tools/reader/reader_types.cljs 0 errors, 1 warnings, 13 dynamic, 3 ignored
14681468
634: unable to resolve 'read-line'
14691469
1910: dynamic 'charAt'
14701470
2029: dynamic 'charAt'
@@ -1513,4 +1513,4 @@ clojure/tools/reader/impl/utils.clj 0 errors, 6 warnings, 0 dynamic
15131513
2360: unable to resolve 'clojure.tools.reader.impl.utils.ReaderConditional'
15141514
2455: unable to resolve 'clojure.tools.reader.impl.utils.ReaderConditional'
15151515
clojure/tools/reader/reader_types.clj 0 errors, 0 warnings, 0 dynamic
1516-
Total: 292 warnings, 1773 dynamic in 93 files (1.84 MB)
1516+
Total: 281 warnings, 1141 dynamic, 1024 ignored in 93 files (1.84 MB)

tests/lang/language-tests.kt

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.intellij.lang.LanguageBraceMatching
66
import com.intellij.lang.annotation.HighlightSeverity
77
import com.intellij.lexer.Lexer
88
import com.intellij.openapi.extensions.ExtensionPointName
9+
import com.intellij.openapi.progress.ProcessCanceledException
910
import com.intellij.openapi.roots.ModuleRootModificationUtil
1011
import com.intellij.openapi.util.RecursionManager
1112
import com.intellij.openapi.util.text.StringUtil
@@ -189,6 +190,7 @@ class ClojureHighlightingTest : BasePlatformTestCase() {
189190
var chars: Long = 0
190191
var warnings: Long = 0
191192
var dynamic: Long = 0
193+
var ignored: Long = 0
192194
}
193195
val report = StringBuilder()
194196
getLibrarySources(libName).forEach { vFile ->
@@ -198,29 +200,43 @@ class ClojureHighlightingTest : BasePlatformTestCase() {
198200
val lightVirtualFile = LightVirtualFile(path, ClojureLanguage, text)
199201
val isCljs = lightVirtualFile.name.run { endsWith(".cljc") || endsWith(".cljs") }
200202
myFixture.configureFromExistingVirtualFile(lightVirtualFile)
201-
val infos = myFixture.doHighlighting().jbIt()
203+
var ignored = 0
204+
val rawInfos =
205+
try { myFixture.doHighlighting() }
206+
catch (e: ProcessCanceledException) { e.printStackTrace(); emptyList() }
207+
val infos = rawInfos.run {
208+
if (!isCljs) return@run jbIt()
209+
val adjusted = jbIt().filter { info ->
210+
val sym = StringUtil.trimLeading(text.substring(info.startOffset, info.endOffset), '\'').trim()
211+
sym != "js" && ignoreInCljs.find { sym.startsWith(it) } == null
212+
}.collect()
213+
ignored = size - adjusted.size()
214+
adjusted
215+
}
202216
val errors = infos.filter { it.severity == HighlightSeverity.ERROR }.size()
203217
val warnings = infos.filter { it.severity == HighlightSeverity.WARNING }.size()
204218
val dynamic = infos.filter { it.forcedTextAttributesKey == ClojureColors.DYNAMIC }.size()
205219
stat.warnings += warnings
206220
stat.dynamic += dynamic
207-
"${path.run { this + StringUtil.repeat(" ", kotlin.math.max(0, 40 - length)) }} $errors errors, $warnings warnings, $dynamic dynamic".run {
221+
stat.ignored += ignored
222+
("${path.run { this + StringUtil.repeat(" ", kotlin.math.max(0, 40 - length)) }} " +
223+
"$errors errors, $warnings warnings, $dynamic dynamic" +
224+
(if (ignored == 0) "" else ", $ignored ignored")).run {
208225
report.append(this).append("\n")
209226
println(this)
210227
}
211228
for (info in infos.filter { it.severity == HighlightSeverity.ERROR || it.severity == HighlightSeverity.WARNING }) {
212-
val sym = StringUtil.trimLeading(text.substring(info.startOffset, info.endOffset), '\'').trim()
213-
if (isCljs && ignoreInCljs.find { sym.startsWith(it) } != null) continue
214229
report.append(" ${info.startOffset}: ${info.description}").append("\n")
215230
}
216231
for (info in infos.filter { it.forcedTextAttributesKey == ClojureColors.DYNAMIC }) {
217232
val sym = StringUtil.trimLeading(text.substring(info.startOffset, info.endOffset), '\'').trim()
218-
if (isCljs && (sym == "js" || ignoreInCljs.find { sym.startsWith(it) } != null)) continue
219233
report.append(" ${info.startOffset}: dynamic '$sym'").append("\n")
220234
}
221235
}
222236
stat.duration = System.currentTimeMillis() - stat.duration
223-
stat.run { "Total: $warnings warnings, $dynamic dynamic in $files files (${StringUtil.formatFileSize(chars)})".run {
237+
stat.run { ("Total: $warnings warnings, $dynamic dynamic" +
238+
(if (stat.ignored == 0L) "" else ", $ignored ignored") +
239+
" in $files files (${StringUtil.formatFileSize(chars)})").run {
224240
report.append(this).append("\n")
225241
println("${getTestName(false)}\n${this}")
226242
} }

0 commit comments

Comments
 (0)