Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
I
iTasks-SDK
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
74
Issues
74
List
Boards
Labels
Service Desk
Milestones
Merge Requests
6
Merge Requests
6
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
clean-and-itasks
iTasks-SDK
Commits
fc49eb94
Commit
fc49eb94
authored
Jun 25, 2018
by
Bas Lijnse
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implemented the test options from Testing.Options in the iTasks unit test framework.
parent
8695f2ad
Pipeline
#12462
passed with stage
in 2 minutes and 44 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
41 additions
and
22 deletions
+41
-22
Libraries/iTasks/Util/Testing.icl
Libraries/iTasks/Util/Testing.icl
+41
-22
No files found.
Libraries/iTasks/Util/Testing.icl
View file @
fc49eb94
...
...
@@ -20,10 +20,11 @@ import iTasks.Internal.IWorld
import
iTasks
.
UI
.
Definition
import
qualified
iTasks
.
Internal
.
SDS
as
SDS
from
Data
.
Queue
import
::
Queue
(..)
import
System
.
OS
import
iTasks
.
Util
.
Trace
import
System
.
OS
,
System
.
CommandLine
,
System
.
Options
import
Testing
.
TestEvents
import
Testing
.
Options
derive
class
iTask
InteractiveTest
...
...
@@ -180,25 +181,43 @@ checkSuiteResult f testResults = all (\(_,r) -> f r) testResults
runUnitTests
::
[
UnitTest
]
*
World
->
*
World
runUnitTests
suites
world
#
(
console
,
world
)
=
stdio
world
#
(
report
,(
console
,
world
))
=
foldl
runTest
([],(
console
,
world
))
suites
#
(_,
world
)
=
fclose
console
world
#
world
=
setReturnCode
(
if
(
noneFailed
report
)
0
1
)
world
=
world
#
(
args
,
world
)
=
getCommandLine
world
=
case
parseOptions
testOptionDescription
(
tl
args
)
gDefault
{|*|}
of
(
Ok
options
)
#
(
console
,
world
)
=
stdio
world
#
(
report
,(
console
,
world
))
=
foldl
(
runTest
options
)
([],(
console
,
world
))
suites
#
(_,
world
)
=
fclose
console
world
#
world
=
setReturnCode
(
if
(
noneFailed
report
)
0
1
)
world
=
world
(
Error
msgs
)
#
(
console
,
world
)
=
stdio
world
#
console
=
foldl
(\
c
m
->
fwrites
(
m
+++
"
\n
"
)
c
)
console
args
#
console
=
foldl
(\
c
m
->
fwrites
(
m
+++
"
\n
"
)
c
)
console
msgs
#
(_,
world
)
=
fclose
console
world
=
setReturnCode
1
world
where
runTest
(
results
,(
console
,
world
))
{
UnitTest
|
name
,
test
}
#
console
=
fwrites
(
toString
(
toJSON
(
StartEvent
{
StartEvent
|
name
=
name
}))
+++
"
\n
"
)
console
//# console = fwrites (name +++ "... ") console
#
(
result
,
world
)
=
test
world
#
message
=
case
result
of
Passed
=
green
"PASSED"
Failed
_
=
red
"FAILED"
Skipped
=
yellow
"SKIPPED"
#
console
=
fwrites
(
toString
(
toJSON
(
EndEvent
{
EndEvent
|
name
=
name
,
event
=
result
,
message
=
message
}))
+++
"
\n
"
)
console
=
([(
name
,
result
):
results
],(
console
,
world
))
//ANSI COLOR CODES -> TODO: Create a library in clean-platform for ANSI colored output
red
s
=
toString
[
toChar
27
,
'['
,
'3'
,
'1'
,
'm'
]
+++
s
+++
toString
[
toChar
27
,
'['
,
'0'
,
'm'
]
green
s
=
toString
[
toChar
27
,
'['
,
'3'
,
'2'
,
'm'
]
+++
s
+++
toString
[
toChar
27
,
'['
,
'0'
,
'm'
]
yellow
s
=
toString
[
toChar
27
,
'['
,
'3'
,
'3'
,
'm'
]
+++
s
+++
toString
[
toChar
27
,
'['
,
'0'
,
'm'
]
runTest
options
(
results
,(
console
,
world
))
{
UnitTest
|
name
,
test
}
//Just print names
|
options
.
list
#
console
=
fwrites
(
name
+++
"
\n
"
)
console
=
(
results
,(
console
,
world
))
//Skip
|
skipTest
name
options
=
(
results
,(
console
,
world
))
//Check if the test should run
|
otherwise
#
console
=
fwrites
(
toString
(
toJSON
(
StartEvent
{
StartEvent
|
name
=
name
}))
+++
"
\n
"
)
console
#
(
result
,
world
)
=
test
world
#
message
=
case
result
of
Passed
=
"PASSED"
Failed
_
=
"FAILED"
Skipped
=
"SKIPPED"
#
console
=
fwrites
(
toString
(
toJSON
(
EndEvent
{
EndEvent
|
name
=
name
,
event
=
result
,
message
=
message
}))
+++
"
\n
"
)
console
=
([(
name
,
result
):
results
],(
console
,
world
))
skipTest
name
{
runs
,
skip
}
|
isMember
name
skip
=
True
//Explicitly skipped
|
runs
=:
[]
=
False
//Run all
|
otherwise
=
isMember
name
[
name
\\
{
TestRun
|
name
}
<-
runs
]
//Check if it was listed
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment