Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
2.3.3, 2.4.8
-
None
-
Windows 7, Groovy 2.3.3, JDK 1.8.0_05
Description
From cloned issue for an additional case:
import groovy.util.logging.Slf4j import spock.lang.Specification @Slf4j class LoggingSpec extends Specification { def "makes sure groovy isn't building the string inside inactive log levels"() { assert log.isDebugEnabled() == false, "set the log level for this class to INFO to see the horror" assert log.isInfoEnabled() == true, "set the log level for this class to INFO to see the horror" CountingDoIt counter = new CountingDoIt() //http://docs.groovy-lang.org/docs/groovy-2.4.5/html/documentation/#_logging_improvements when: "we shouldn't evaluate" log.debug("this shouldn't happen ${counter.call()}".toString()) then: counter.count == 0 when: "we should evaluate" counter = new CountingDoIt() log.info("this should happen ${counter.call()}".toString()) then: counter.count == 1 when: "we're inside a closure and groovy is failing..so beware" counter = new CountingDoIt() 1.times({ ignore -> log.debug(counter.call()) }) then: counter.count == 0 //debug isn't enabled so this string should never be evaluated but it is when: "we're inside a closure that calls a method. it's OK" counter = new CountingDoIt() 1.times({ ignore -> log.debug("this shouldn't happen ${doIt(counter)}".toString()) }) then: counter.count == 0 } String doIt(CountingDoIt countingDoIt) { log.debug("this shouldn't happen ${countingDoIt.call()}".toString()) "blah" } static class CountingDoIt { int count = 0 String call() { count = count + 1 "doneDidIt" } } }
Attachments
Issue Links
- is a clone of
-
GROOVY-6932 @Log annotation does not check logging enablement inside closures
- Closed
- links to