Skip to content

Commit 92bf427

Browse files
committed
move requirement defaults
1 parent fac2529 commit 92bf427

4 files changed

Lines changed: 47 additions & 20 deletions

File tree

src/CWL/Requirements.fs

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -82,18 +82,34 @@ type LoadListingRequirementValue = {
8282
LoadListing: LoadListingEnum
8383
}
8484

85+
with
86+
static member defaultNoListing =
87+
{ LoadListing = NoListing }
88+
8589
type WorkReuseRequirementValue = {
8690
EnableReuse: bool
8791
}
8892

93+
with
94+
static member defaultEnabled =
95+
{ EnableReuse = true }
96+
8997
type NetworkAccessRequirementValue = {
9098
NetworkAccess: bool
9199
}
92100

101+
with
102+
static member defaultEnabled =
103+
{ NetworkAccess = true }
104+
93105
type InplaceUpdateRequirementValue = {
94106
InplaceUpdate: bool
95107
}
96108

109+
with
110+
static member defaultEnabled =
111+
{ InplaceUpdate = true }
112+
97113
type ToolTimeLimitValue =
98114
| ToolTimeLimitSeconds of int64
99115
| ToolTimeLimitExpression of string
@@ -170,6 +186,10 @@ type InlineJavascriptRequirementValue = {
170186
ExpressionLib: ResizeArray<string> option
171187
}
172188

189+
with
190+
static member defaultEmpty =
191+
{ ExpressionLib = None }
192+
173193
type HintUnknownValue = {
174194
Class: string option
175195
Raw: YAMLElement
@@ -212,6 +232,25 @@ type Requirement =
212232
/// Indicate that the workflow platform must support the valueFrom field of WorkflowStepInput.
213233
| StepInputExpressionRequirement
214234

235+
with
236+
static member defaultInlineJavascriptRequirement =
237+
InlineJavascriptRequirement InlineJavascriptRequirementValue.defaultEmpty
238+
239+
static member defaultLoadListingNoListing =
240+
LoadListingRequirement LoadListingRequirementValue.defaultNoListing
241+
242+
static member defaultWorkReuseEnabled =
243+
WorkReuseRequirement WorkReuseRequirementValue.defaultEnabled
244+
245+
static member defaultNetworkAccessEnabled =
246+
NetworkAccessRequirement NetworkAccessRequirementValue.defaultEnabled
247+
248+
static member defaultInplaceUpdateEnabled =
249+
InplaceUpdateRequirement InplaceUpdateRequirementValue.defaultEnabled
250+
251+
static member defaultToolTimeLimitSeconds(seconds: int64) =
252+
ToolTimeLimitRequirement (ToolTimeLimitSeconds seconds)
253+
215254
type HintEntry =
216255
| KnownHint of Requirement
217256
| UnknownHint of HintUnknownValue
@@ -231,17 +270,4 @@ type HintEntry =
231270
| KnownHint requirement -> Some requirement
232271
| UnknownHint _ -> None
233272

234-
module RequirementDefaults =
235-
236-
let inlineJavascriptRequirement = InlineJavascriptRequirement { ExpressionLib = None }
237-
238-
let loadListingNoListing = LoadListingRequirement { LoadListing = NoListing }
239-
240-
let workReuseEnabled = WorkReuseRequirement { EnableReuse = true }
241-
242-
let networkAccessEnabled = NetworkAccessRequirement { NetworkAccess = true }
243-
244-
let inplaceUpdateEnabled = InplaceUpdateRequirement { InplaceUpdate = true }
245-
246-
let toolTimeLimitSeconds seconds = ToolTimeLimitRequirement (ToolTimeLimitSeconds seconds)
247273

tests/CWL/CWLObject.Tests.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ let testExpressionTool =
366366
let et = Decode.decodeExpressionTool TestObjects.CWL.ExpressionTool.expressionToolWithRequirementsFile
367367
Expect.equal et.CWLVersion "v1.2" ""
368368
let requirements = Expect.wantSome et.Requirements "Requirements should be present"
369-
Expect.equal requirements.[0] RequirementDefaults.inlineJavascriptRequirement ""
369+
Expect.equal requirements.[0] Requirement.defaultInlineJavascriptRequirement ""
370370
let inputs = Expect.wantSome et.Inputs "Inputs should be present"
371371
Expect.isTrue (inputs.Count > 0) "Should have at least one input"
372372
Expect.isTrue (et.Outputs.Count > 0) "Should have at least one output"

tests/CWL/Inputs.Tests.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ let testProcessingUnitRequirementOps =
176176
testCase "getRequirements returns existing collection for all variants" <| fun _ ->
177177
let toolReqs = ResizeArray [| NetworkAccessRequirement { NetworkAccess = true } |]
178178
let workflowReqs = ResizeArray [| SubworkflowFeatureRequirement |]
179-
let expressionReqs = ResizeArray [| RequirementDefaults.inlineJavascriptRequirement |]
179+
let expressionReqs = ResizeArray [| Requirement.defaultInlineJavascriptRequirement |]
180180

181181
let toolActual =
182182
CWLToolDescription(outputs = ResizeArray(), requirements = toolReqs)
@@ -229,7 +229,7 @@ let testProcessingUnitHintOps =
229229
let workflowHints = CWLWorkflowDescription.getOrCreateHints workflow
230230
let expressionHints = CWLExpressionToolDescription.getOrCreateHints expressionTool
231231

232-
toolHints.Add(KnownHint RequirementDefaults.inlineJavascriptRequirement)
232+
toolHints.Add(KnownHint Requirement.defaultInlineJavascriptRequirement)
233233
workflowHints.Add(UnknownHint { Class = Some "acme:Hint"; Raw = Decode.read "class: acme:Hint" })
234234
expressionHints.Add(KnownHint (NetworkAccessRequirement { NetworkAccess = true }))
235235

@@ -240,7 +240,7 @@ let testProcessingUnitHintOps =
240240
testCase "getKnownHints drops unknown hints" <| fun _ ->
241241
let hints =
242242
ResizeArray [|
243-
KnownHint RequirementDefaults.inlineJavascriptRequirement
243+
KnownHint Requirement.defaultInlineJavascriptRequirement
244244
UnknownHint { Class = Some "acme:Hint"; Raw = Decode.read "class: acme:Hint" }
245245
KnownHint (WorkReuseRequirement { EnableReuse = true })
246246
|]

tests/CWL/Requirements.Tests.fs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module Tests.Requirements
1+
module Tests.Requirements
22

33
open ARCtrl.CWL
44
open YAMLicious
@@ -124,7 +124,7 @@ outputs: {}"""
124124
- class: InlineJavascriptRequirement"""
125125
let reqs = decodeRequirements yaml
126126
let requirement = findRequirement reqs (function InlineJavascriptRequirement _ -> true | _ -> false)
127-
Expect.equal requirement RequirementDefaults.inlineJavascriptRequirement "Class-only form should decode to empty payload"
127+
Expect.equal requirement Requirement.defaultInlineJavascriptRequirement "Class-only form should decode to empty payload"
128128

129129
testCase "Decode expressionLib form" <| fun _ ->
130130
let yaml = """requirements:
@@ -152,7 +152,7 @@ outputs: {}"""
152152
Expect.stringContains encoded "expressionLib" "Encoded output should include expressionLib"
153153

154154
testCase "Encode omits expressionLib when absent" <| fun _ ->
155-
let encoded = Encode.encodeRequirement RequirementDefaults.inlineJavascriptRequirement |> Encode.writeYaml
155+
let encoded = Encode.encodeRequirement Requirement.defaultInlineJavascriptRequirement |> Encode.writeYaml
156156
Expect.stringContains encoded "class: InlineJavascriptRequirement" "Encoded output should include class"
157157
Expect.isFalse (encoded.Contains("expressionLib")) "Encoded output should omit expressionLib when absent"
158158

@@ -1101,3 +1101,4 @@ let main =
11011101
testRequirementEncode
11021102
testInitialWorkDirFileDirectoryEntries
11031103
]
1104+

0 commit comments

Comments
 (0)