11package nfcore.plugin
22
3- import ch.qos.logback.classic.Level
4- import ch.qos.logback.classic.Logger
5- import ch.qos.logback.classic.spi.ILoggingEvent
6- import ch.qos.logback.core.read.ListAppender
73import nfcore.plugin.nfcore.NfcoreConfigValidator
8- import org.slf4j.LoggerFactory
94import spock.lang.PendingFeature
105import spock.lang.Specification
116
@@ -33,27 +28,7 @@ class NfcorePipelineObserverTest extends Specification {
3328 1 * validator. checkProfileProvided(' standard' , ' --foo bar' , true )
3429 }
3530
36- @PendingFeature ()
37- def ' onFlowCreate handles missing metadata gracefully' () {
38- given :
39- def validator = Spy (NfcoreConfigValidator )
40- def observer = new NfcorePipelineObserver (validator)
41- def session = Mock (nextflow.Session ) {
42- workflowMetadata >> null
43- config >> [profile : ' standard' , configFiles : []]
44- profile >> ' standard'
45- commandLine >> ' '
46- }
47-
48- when :
49- observer. onFlowCreate(session)
50-
51- then :
52- 1 * validator. checkConfigProvided(null , { it. profile == ' standard' && it. configFiles == [] })
53- 1 * validator. checkProfileProvided(' standard' , ' ' , true )
54- }
55-
56- def ' onFlowCreate should log start message at TRACE level' () {
31+ def ' onFlowCreate should print the start message' () {
5732 given :
5833 def observer = new NfcorePipelineObserver ()
5934 def session = Mock (nextflow.Session ) {
@@ -62,102 +37,56 @@ class NfcorePipelineObserverTest extends Specification {
6237 profile >> ' standard'
6338 commandLine >> ' '
6439 }
65-
66- // Set up logging capture
67- Logger logger = (Logger ) LoggerFactory . getLogger(NfcorePipelineObserver )
68- ListAppender<ILoggingEvent > listAppender = new ListAppender<> ()
69- listAppender. start()
70- logger. addAppender(listAppender)
71- def originalLevel = logger. level
72- logger. setLevel(Level . TRACE )
40+ def out = new ByteArrayOutputStream ()
41+ def oldOut = System . out
42+ System . out = new PrintStream (out)
7343
7444 when :
7545 observer. onFlowCreate(session)
46+ System . out. flush()
7647
7748 then :
78- def logEvents = listAppender. list
79- logEvents. any { it. level == Level . TRACE && it. message. contains(' Pipeline is starting! 🚀' ) }
49+ out. toString(). contains(' Pipeline is starting! 🚀' )
8050
8151 cleanup :
82- logger. setLevel(originalLevel)
83- logger. detachAppender(listAppender)
52+ System . out = oldOut
8453 }
8554
86- def ' onFlowComplete should log complete message at TRACE level ' () {
55+ def ' onFlowComplete should print the complete message' () {
8756 given :
8857 def observer = new NfcorePipelineObserver ()
89-
90- // Set up logging capture
91- Logger logger = (Logger ) LoggerFactory . getLogger(NfcorePipelineObserver )
92- ListAppender<ILoggingEvent > listAppender = new ListAppender<> ()
93- listAppender. start()
94- logger. addAppender(listAppender)
95- def originalLevel = logger. level
96- logger. setLevel(Level . TRACE )
58+ def out = new ByteArrayOutputStream ()
59+ def oldOut = System . out
60+ System . out = new PrintStream (out)
9761
9862 when :
9963 observer. onFlowComplete()
64+ System . out. flush()
10065
10166 then :
102- def logEvents = listAppender. list
103- logEvents. any { it. level == Level . TRACE && it. message. contains(' Pipeline complete! 👋' ) }
67+ out. toString(). contains(' Pipeline complete! 👋' )
10468
10569 cleanup :
106- logger. setLevel(originalLevel)
107- logger. detachAppender(listAppender)
70+ System . out = oldOut
10871 }
10972
110- def ' onFlowCreate should NOT log start message below TRACE level' () {
73+ @PendingFeature ()
74+ def ' onFlowCreate handles missing metadata gracefully' () {
11175 given :
112- def observer = new NfcorePipelineObserver ()
76+ def validator = Spy (NfcoreConfigValidator )
77+ def observer = new NfcorePipelineObserver (validator)
11378 def session = Mock (nextflow.Session ) {
114- workflowMetadata >> [ projectName : ' test-pipeline ' ]
115- config >> [: ]
79+ workflowMetadata >> null
80+ config >> [profile : ' standard ' , configFiles : [] ]
11681 profile >> ' standard'
11782 commandLine >> ' '
11883 }
11984
120- // Set up logging capture with DEBUG level
121- Logger logger = (Logger ) LoggerFactory . getLogger(NfcorePipelineObserver )
122- ListAppender<ILoggingEvent > listAppender = new ListAppender<> ()
123- listAppender. start()
124- logger. addAppender(listAppender)
125- def originalLevel = logger. level
126- logger. setLevel(Level . DEBUG )
127-
12885 when :
12986 observer. onFlowCreate(session)
13087
13188 then :
132- def logEvents = listAppender. list
133- ! logEvents. any { it. message. contains(' Pipeline is starting! 🚀' ) }
134-
135- cleanup :
136- logger. setLevel(originalLevel)
137- logger. detachAppender(listAppender)
138- }
139-
140- def ' onFlowComplete should NOT log complete message below TRACE level' () {
141- given :
142- def observer = new NfcorePipelineObserver ()
143-
144- // Set up logging capture with DEBUG level
145- Logger logger = (Logger ) LoggerFactory . getLogger(NfcorePipelineObserver )
146- ListAppender<ILoggingEvent > listAppender = new ListAppender<> ()
147- listAppender. start()
148- logger. addAppender(listAppender)
149- def originalLevel = logger. level
150- logger. setLevel(Level . DEBUG )
151-
152- when :
153- observer. onFlowComplete()
154-
155- then :
156- def logEvents = listAppender. list
157- ! logEvents. any { it. message. contains(' Pipeline complete! 👋' ) }
158-
159- cleanup :
160- logger. setLevel(originalLevel)
161- logger. detachAppender(listAppender)
89+ 1 * validator. checkConfigProvided(null , { it. profile == ' standard' && it. configFiles == [] })
90+ 1 * validator. checkProfileProvided(' standard' , ' ' , true )
16291 }
16392}
0 commit comments