Skip to content

Commit e737858

Browse files
authored
Merge pull request nextflow-io#114 from nvnieuwk/fix/null-conversion
fix null conversion error for defaults
2 parents ffa4134 + 7221103 commit e737858

File tree

4 files changed

+16
-14
lines changed

4 files changed

+16
-14
lines changed

plugins/nf-validation/src/main/nextflow/validation/SamplesheetConverter.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,15 +165,15 @@ class SamplesheetConverter {
165165
for(name : metaNames) {
166166
meta[name] = (input != '' && input) ?
167167
transform(input, field) :
168-
field['value']['default'] ?
168+
field['value']['default'] != null ?
169169
transform(field['value']['default'] as String, field) :
170170
null
171171
}
172172
}
173173
else {
174174
def inputFile = (input != '' && input) ?
175175
transform(input, field) :
176-
field['value']['default'] ?
176+
field['value']['default'] != null ?
177177
transform(field['value']['default'] as String, field) :
178178
[]
179179
output.add(inputFile)

plugins/nf-validation/src/test/nextflow/validation/SamplesheetConverterTest.groovy

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,12 @@ class SamplesheetConverterTest extends Dsl2Spec{
7373
def stdout = capture
7474
.toString()
7575
.readLines()
76+
.findResults {it.startsWith('[[') ? it : null }
7677

7778
then:
7879
noExceptionThrown()
7980
stdout.contains("[[string1:fullField, string2:fullField, integer1:10, integer2:10, boolean1:true, boolean2:true], string1, 25, false, ${this.getRootString()}/src/testResources/test.txt, ${this.getRootString()}/src/testResources/testDir, ${this.getRootString()}/src/testResources/test.txt, unique1, 1, itDoesExist]" as String)
80-
stdout.contains("[[string1:value, string2:value, integer1:5, integer2:5, boolean1:true, boolean2:true], string1, 25, false, [], [], [], [], [], itDoesExist]")
81+
stdout.contains("[[string1:value, string2:value, integer1:0, integer2:0, boolean1:true, boolean2:true], string1, 25, false, [], [], [], [], [], itDoesExist]")
8182
stdout.contains("[[string1:dependentRequired, string2:dependentRequired, integer1:10, integer2:10, boolean1:true, boolean2:true], string1, 25, false, [], [], [], unique2, 1, itDoesExist]")
8283
stdout.contains("[[string1:extraField, string2:extraField, integer1:10, integer2:10, boolean1:true, boolean2:true], string1, 25, false, ${this.getRootString()}/src/testResources/test.txt, ${this.getRootString()}/src/testResources/testDir, ${this.getRootString()}/src/testResources/testDir, unique3, 1, itDoesExist]" as String)
8384
}
@@ -99,11 +100,12 @@ class SamplesheetConverterTest extends Dsl2Spec{
99100
def stdout = capture
100101
.toString()
101102
.readLines()
103+
.findResults {it.startsWith('[[') ? it : null }
102104

103105
then:
104106
noExceptionThrown()
105107
stdout.contains("[[string1:fullField, string2:fullField, integer1:10, integer2:10, boolean1:true, boolean2:true], string1, 25, false, ${this.getRootString()}/src/testResources/test.txt, ${this.getRootString()}/src/testResources/testDir, ${this.getRootString()}/src/testResources/test.txt, unique1, 1, itDoesExist]" as String)
106-
stdout.contains("[[string1:value, string2:value, integer1:5, integer2:5, boolean1:true, boolean2:true], string1, 25, false, [], [], [], [], [], itDoesExist]")
108+
stdout.contains("[[string1:value, string2:value, integer1:0, integer2:0, boolean1:true, boolean2:true], string1, 25, false, [], [], [], [], [], itDoesExist]")
107109
stdout.contains("[[string1:dependentRequired, string2:dependentRequired, integer1:10, integer2:10, boolean1:true, boolean2:true], string1, 25, false, [], [], [], unique2, 1, itDoesExist]")
108110
stdout.contains("[[string1:extraField, string2:extraField, integer1:10, integer2:10, boolean1:true, boolean2:true], string1, 25, false, ${this.getRootString()}/src/testResources/test.txt, ${this.getRootString()}/src/testResources/testDir, ${this.getRootString()}/src/testResources/testDir, unique3, 1, itDoesExist]" as String)
109111
}
@@ -125,11 +127,12 @@ class SamplesheetConverterTest extends Dsl2Spec{
125127
def stdout = capture
126128
.toString()
127129
.readLines()
130+
.findResults {it.startsWith('[[') ? it : null }
128131

129132
then:
130133
noExceptionThrown()
131134
stdout.contains("[[string1:fullField, string2:fullField, integer1:10, integer2:10, boolean1:true, boolean2:true], string1, 25, false, ${this.getRootString()}/src/testResources/test.txt, ${this.getRootString()}/src/testResources/testDir, ${this.getRootString()}/src/testResources/test.txt, unique1, 1, itDoesExist]" as String)
132-
stdout.contains("[[string1:value, string2:value, integer1:5, integer2:5, boolean1:true, boolean2:true], string1, 25, false, [], [], [], [], [], itDoesExist]")
135+
stdout.contains("[[string1:value, string2:value, integer1:0, integer2:0, boolean1:true, boolean2:true], string1, 25, false, [], [], [], [], [], itDoesExist]")
133136
stdout.contains("[[string1:dependentRequired, string2:dependentRequired, integer1:10, integer2:10, boolean1:true, boolean2:true], string1, 25, false, [], [], [], unique2, 1, itDoesExist]")
134137
stdout.contains("[[string1:extraField, string2:extraField, integer1:10, integer2:10, boolean1:true, boolean2:true], string1, 25, false, ${this.getRootString()}/src/testResources/test.txt, ${this.getRootString()}/src/testResources/testDir, ${this.getRootString()}/src/testResources/testDir, unique3, 1, itDoesExist]" as String)
135138
}
@@ -156,7 +159,7 @@ class SamplesheetConverterTest extends Dsl2Spec{
156159
noExceptionThrown()
157160
stdout.contains("\tThe samplesheet contains following unchecked field(s): [extraField]")
158161
stdout.contains("[[string1:fullField, string2:fullField, integer1:10, integer2:10, boolean1:true, boolean2:true], string1, 25, false, ${this.getRootString()}/src/testResources/test.txt, ${this.getRootString()}/src/testResources/testDir, [], unique1, 1, itDoesExist]" as String)
159-
stdout.contains("[[string1:value, string2:value, integer1:5, integer2:5, boolean1:true, boolean2:true], string1, 25, false, [], [], [], [], [], itDoesExist]")
162+
stdout.contains("[[string1:value, string2:value, integer1:0, integer2:0, boolean1:true, boolean2:true], string1, 25, false, [], [], [], [], [], itDoesExist]")
160163
stdout.contains("[[string1:dependentRequired, string2:dependentRequired, integer1:10, integer2:10, boolean1:true, boolean2:true], string1, 25, false, [], [], [], unique2, 1, itDoesExist]")
161164
stdout.contains("[[string1:extraField, string2:extraField, integer1:10, integer2:10, boolean1:true, boolean2:true], string1, 25, false, ${this.getRootString()}/src/testResources/test.txt, ${this.getRootString()}/src/testResources/testDir, [], unique3, 1, itDoesExist]" as String)
162165
}
@@ -235,7 +238,7 @@ class SamplesheetConverterTest extends Dsl2Spec{
235238

236239
then:
237240
def error = thrown(SchemaValidationException)
238-
def errorMessages = error.message.readLines()
241+
def errorMessages = error.message.readLines()
239242
errorMessages[0] == "\033[0;31mThe following errors have been detected:"
240243
errorMessages[2] == "* -- Entry 1 - field_9: the file or directory 'non_existing_path' does not exist."
241244
errorMessages[3] == "* -- Entry 1 - field_7: the file or directory 'non_existing_file.tsv' does not exist."
@@ -244,10 +247,9 @@ class SamplesheetConverterTest extends Dsl2Spec{
244247
errorMessages[6] == "* -- Entry 1 - field_5: expected type: Number, found: String (string)"
245248
errorMessages[7] == "* -- Entry 1 - field_6: expected type: Boolean, found: String (20)"
246249
errorMessages[8] == "* -- Entry 2: Missing required value: field_4"
247-
errorMessages[9] == "* -- Entry 2: Missing required value: field_5"
248-
errorMessages[10] == "* -- Entry 2: Missing required value: field_6"
249-
errorMessages[11] == "* -- Entry 3 - field_3: expected type: Boolean, found: String (3333)"
250-
errorMessages[12] == "* -- Entry 3 - field_2: expected type: Integer, found: String (false)"
250+
errorMessages[9] == "* -- Entry 2: Missing required value: field_6"
251+
errorMessages[10] == "* -- Entry 3 - field_3: expected type: Boolean, found: String (3333)"
252+
errorMessages[11] == "* -- Entry 3 - field_2: expected type: Integer, found: String (false)"
251253
!stdout
252254
}
253255

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
field_1,field_2,field_3,field_4,field_5,field_6,field_7,field_8,field_9,field_10,field_11
2-
fullField,10,true,string1,25,false,src/testResources/test.txt,src/testResources/testDir,src/testResources/test.txt,unique1,1
2+
fullField,10,true,string1,,false,src/testResources/test.txt,src/testResources/testDir,src/testResources/test.txt,unique1,1
33
,,,string1,25,false,,,,,,
44
,,,string1,25,false,,,,,,

plugins/nf-validation/src/testResources/schema_input.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"field_2": {
1717
"type": "integer",
1818
"meta": ["integer1","integer2"],
19-
"default": 5
19+
"default": 0
2020
},
2121
"field_3": {
2222
"type": "boolean",
@@ -61,6 +61,6 @@
6161
"default": "itDoesExist"
6262
}
6363
},
64-
"required": ["field_4", "field_5", "field_6"]
64+
"required": ["field_4", "field_6"]
6565
}
6666
}

0 commit comments

Comments
 (0)