Skip to content

Commit 232387b

Browse files
jorgeebentsherman
authored andcommitted
Extend collection param from file to support Bag (#6676)
1 parent aa366e1 commit 232387b

File tree

2 files changed

+29
-10
lines changed

2 files changed

+29
-10
lines changed

modules/nextflow/src/main/groovy/nextflow/script/ParamsDsl.groovy

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,10 @@ import groovy.util.logging.Slf4j
2626
import nextflow.Session
2727
import nextflow.file.FileHelper
2828
import nextflow.exception.ScriptRuntimeException
29+
import nextflow.script.types.Bag
2930
import nextflow.script.types.Types
3031
import nextflow.splitter.CsvSplitter
32+
import nextflow.util.ArrayBag
3133
import nextflow.util.Duration
3234
import nextflow.util.MemoryUnit
3335
import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation
@@ -157,6 +159,8 @@ class ParamsDsl {
157159
}
158160

159161
try {
162+
if( Bag.class.isAssignableFrom(type) && value instanceof Collection )
163+
return new ArrayBag(value)
160164
return DefaultTypeTransformation.castToType(value, type)
161165
}
162166
catch( GroovyCastException e ) {

modules/nextflow/src/test/groovy/nextflow/script/ParamsDslTest.groovy

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import java.nio.file.Path
66
import nextflow.Session
77
import nextflow.file.FileHelper
88
import nextflow.exception.ScriptRuntimeException
9+
import nextflow.script.types.Bag
910
import spock.lang.Specification
1011
import spock.lang.Unroll
1112
/**
@@ -171,24 +172,38 @@ class ParamsDslTest extends Specification {
171172
{"id": 3, "name": "sample3", "value": 300}
172173
]
173174
'''.stripIndent()
174-
def cliParams = [samples: jsonFile.toString()]
175+
def cliParams = [
176+
samplesList: jsonFile.toString(),
177+
samplesBag: jsonFile.toString(),
178+
samplesSet: jsonFile.toString()
179+
]
175180
def session = new Session()
176181
session.init(null, null, cliParams, [:])
177182

178183
when:
179184
def dsl = new ParamsDsl()
180-
dsl.declare('samples', List, false)
185+
dsl.declare('samplesList', List, false)
186+
dsl.declare('samplesBag', Bag, false)
187+
dsl.declare('samplesSet', Set, false)
181188
dsl.apply(session)
182189

183190
then:
184-
def samples = session.binding.getParams().samples
185-
samples instanceof List
186-
samples.size() == 3
187-
samples[0].id == 1
188-
samples[0].name == 'sample1'
189-
samples[0].value == 100
190-
samples[1].id == 2
191-
samples[2].id == 3
191+
def samplesList = session.binding.getParams().samplesList
192+
samplesList instanceof List
193+
samplesList.size() == 3
194+
samplesList[0].id == 1
195+
samplesList[0].name == 'sample1'
196+
samplesList[0].value == 100
197+
samplesList[1].id == 2
198+
samplesList[2].id == 3
199+
200+
def samplesBag = session.binding.getParams().samplesBag
201+
samplesBag instanceof Bag
202+
samplesBag.size() == 3
203+
204+
def samplesSet = session.binding.getParams().samplesSet
205+
samplesSet instanceof Set
206+
samplesSet.size() == 3
192207

193208
cleanup:
194209
jsonFile?.delete()

0 commit comments

Comments
 (0)