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
73
Issues
73
List
Boards
Labels
Service Desk
Milestones
Merge Requests
7
Merge Requests
7
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
1ec405b9
Commit
1ec405b9
authored
Jun 25, 2018
by
Bas Lijnse
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed some non-compiling test programs to get ci pipeline to pass.
parent
8a74ff03
Pipeline
#12457
failed with stage
in 2 minutes and 37 seconds
Changes
4
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
55 additions
and
36 deletions
+55
-36
Libraries/iTasks/Extensions/Development/Testing.dcl
Libraries/iTasks/Extensions/Development/Testing.dcl
+5
-3
Libraries/iTasks/Extensions/Development/Testing.icl
Libraries/iTasks/Extensions/Development/Testing.icl
+19
-10
Tests/Interactive/Editlets/TestSVGEditletClick.icl
Tests/Interactive/Editlets/TestSVGEditletClick.icl
+12
-10
Tools/CodeQualityMonitor.icl
Tools/CodeQualityMonitor.icl
+19
-13
No files found.
Libraries/iTasks/Extensions/Development/Testing.dcl
View file @
1ec405b9
...
@@ -3,7 +3,9 @@ definition module iTasks.Extensions.Development.Testing
...
@@ -3,7 +3,9 @@ definition module iTasks.Extensions.Development.Testing
* This module provides utilities for testing iTasks programs
* This module provides utilities for testing iTasks programs
*/
*/
import
iTasks
import
iTasks
from
iTasks
.
Internal
.
Test
.
Definition
import
::
TestResult
,
::
SuiteResult
compileTestModule
::
FilePath
->
Task
TestResult
from
Testing
.
TestEvents
import
::
EndEventType
runTestModule
::
FilePath
->
Task
SuiteResult
from
iTasks
.
Util
.
Testing
import
::
TestReport
compileTestModule
::
FilePath
->
Task
EndEventType
runTestModule
::
FilePath
->
Task
EndEventType
Libraries/iTasks/Extensions/Development/Testing.icl
View file @
1ec405b9
implementation
module
iTasks
.
Extensions
.
Development
.
Testing
implementation
module
iTasks
.
Extensions
.
Development
.
Testing
import
iTasks
import
iTasks
import
System
.
Time
import
System
.
Time
import
Testing
.
TestEvents
import
iTasks
.
Util
.
Testing
import
iTasks
.
Extensions
.
Development
.
Tools
import
iTasks
.
Extensions
.
Development
.
Tools
import
iTasks
.
Internal
.
Test
.
Definition
import
Text
,
Data
.
Tuple
,
Data
.
Error
,
System
.
FilePath
,
System
.
OS
import
Text
,
Data
.
Tuple
,
Data
.
Error
,
System
.
FilePath
,
System
.
OS
TESTS_PATH
:==
"../Tests/TestPrograms"
TESTS_PATH
:==
"../Tests/TestPrograms"
//:: CompileError = CompileError !Int
//:: CompileError = CompileError !Int
derive
class
iTask
EndEventType
derive
gEditor
FailReason
,
FailedAssertion
,
CounterExample
,
Relation
derive
gText
FailReason
,
FailedAssertion
,
CounterExample
,
Relation
derive
gDefault
FailReason
,
FailedAssertion
,
CounterExample
,
Relation
derive
gEq
FailReason
,
FailedAssertion
,
CounterExample
,
Relation
compileTestModule
::
FilePath
->
Task
TestResult
compileTestModule
::
FilePath
->
Task
EndEventType
compileTestModule
path
compileTestModule
path
=
traceValue
path
>>|
get
cpmExecutable
=
traceValue
path
>>|
get
cpmExecutable
>>-
\
cpm
->
runWithOutput
cpm
[
"project"
,
base
,
"create"
]
(
Just
baseDir
)
>>-
\
cpm
->
runWithOutput
cpm
[
"project"
,
base
,
"create"
]
(
Just
baseDir
)
...
@@ -17,7 +24,7 @@ compileTestModule path
...
@@ -17,7 +24,7 @@ compileTestModule path
>>-
\_
->
runWithOutput
cpm
[
"project"
,
prj
,
"exec"
,
base
+++
".exe"
]
(
Just
baseDir
)
>>-
\_
->
runWithOutput
cpm
[
"project"
,
prj
,
"exec"
,
base
+++
".exe"
]
(
Just
baseDir
)
>>-
\_
->
runWithOutput
cpm
[
"project"
,
prj
,
"set"
,
"-h"
,
"200M"
,
"-s"
,
"2M"
,
"-dynamics"
]
(
Just
baseDir
)
>>-
\_
->
runWithOutput
cpm
[
"project"
,
prj
,
"set"
,
"-h"
,
"200M"
,
"-s"
,
"2M"
,
"-dynamics"
]
(
Just
baseDir
)
>>-
\_
->
runWithOutput
cpm
[
prj
]
(
Just
baseDir
)
//Build the test
>>-
\_
->
runWithOutput
cpm
[
prj
]
(
Just
baseDir
)
//Build the test
@
\(
c
,
o
)
->
if
(
passed
c
o
)
Passed
(
Failed
(
Just
(
"Failed to build "
+++
prj
+++
"
\n
"
+++
join
""
o
))
)
@
\(
c
,
o
)
->
if
(
passed
c
o
)
Passed
(
Failed
Nothing
)
where
where
//Cpm still returns exitcode 0 on failure, so we have to check the output
//Cpm still returns exitcode 0 on failure, so we have to check the output
passed
0
o
=
let
lines
=
split
OS_NEWLINE
(
join
""
o
)
in
not
(
any
isErrorLine
lines
)
passed
0
o
=
let
lines
=
split
OS_NEWLINE
(
join
""
o
)
in
not
(
any
isErrorLine
lines
)
...
@@ -30,24 +37,25 @@ where
...
@@ -30,24 +37,25 @@ where
prj
=
takeFileName
(
addExtension
base
"prj"
)
prj
=
takeFileName
(
addExtension
base
"prj"
)
//Copy-paste.. should be in library
//Copy-paste.. should be in library
runTestModule
::
FilePath
->
Task
SuiteResult
runTestModule
::
FilePath
->
Task
EndEventType
runTestModule
path
runTestModule
path
=
compileTestModule
path
=
compileTestModule
path
>>-
\
res
->
case
res
of
>>-
\
res
->
case
res
of
Passed
=
runWithOutput
exe
[]
Nothing
@
(
parseSuiteResult
o
appSnd
(
join
""
))
//Run the test
Passed
=
runWithOutput
exe
[]
Nothing
@
(
parseSuiteResult
o
appSnd
(
join
""
))
//Run the test
_
=
return
{
SuiteResult
|
suiteName
=
path
,
testResults
=[(
"build"
,
res
)]}
_
=
return
res
where
where
baseDir
=
takeDirectory
path
baseDir
=
takeDirectory
path
base
=
dropExtension
path
base
=
dropExtension
path
exe
=
addExtension
base
"exe"
exe
=
addExtension
base
"exe"
parseSuiteResult
::
(
Int
,
String
)
->
SuiteResult
//QUICK AND DIRTY PARSER
parseSuiteResult
::
(
Int
,
String
)
->
EndEventType
//QUICK AND DIRTY PARSER
parseSuiteResult
(
ecode
,
output
)
parseSuiteResult
(
ecode
,
output
)
#
lines
=
split
"
\n
"
output
#
lines
=
split
"
\n
"
output
|
length
lines
<
2
=
fallback
ecode
output
|
length
lines
<
2
=
fallback
ecode
output
#
suiteName
=
trim
((
split
":"
(
lines
!!
0
))
!!
1
)
#
suiteName
=
trim
((
split
":"
(
lines
!!
0
))
!!
1
)
#
results
=
[
parseRes
resLines
\\
resLines
<-
splitLines
(
drop
3
lines
)
|
length
resLines
>=
2
]
#
results
=
[
parseRes
resLines
\\
resLines
<-
splitLines
(
drop
3
lines
)
|
length
resLines
>=
2
]
=
{
SuiteResult
|
suiteName
=
suiteName
,
testResults
=
results
}
=
Passed
//= {SuiteResult|suiteName=suiteName,testResults=results}
where
where
splitLines
lines
=
split`
lines
[[]]
splitLines
lines
=
split`
lines
[[]]
where
where
...
@@ -60,13 +68,14 @@ where
...
@@ -60,13 +68,14 @@ where
#
result
=
case
resultLine
of
#
result
=
case
resultLine
of
"Result: Passed"
=
Passed
"Result: Passed"
=
Passed
"Result: Skipped"
=
Skipped
"Result: Skipped"
=
Skipped
_
=
Failed
(
if
(
descLines
=:
[])
Nothing
(
Just
(
join
"
\n
"
descLines
)))
//_ = Failed (if (descLines =: []) Nothing (Just (join "\n" descLines)))
_
=
Failed
(
if
(
descLines
=:
[])
Nothing
(
Just
Crashed
))
=
(
name
,
result
)
=
(
name
,
result
)
parseRes
_
=
(
"oops"
,
Failed
Nothing
)
parseRes
_
=
(
"oops"
,
Failed
Nothing
)
//If we can't parse the output, We'll treat it as a single simple test executable
//If we can't parse the output, We'll treat it as a single simple test executable
fallback
0
_
=
{
SuiteResult
|
suiteName
=
"Unknown"
,
testResults
=[(
"executable"
,
Passed
)]}
fallback
0
_
=
Passed
//
{SuiteResult|suiteName="Unknown",testResults=[("executable",Passed)]}
fallback
_
output
=
{
SuiteResult
|
suiteName
=
"Unknown"
,
testResults
=[(
"executable"
,
Failed
(
Just
output
))]}
fallback
_
output
=
Failed
Nothing
//
{SuiteResult|suiteName="Unknown",testResults=[("executable",Failed (Just output))]}
runWithOutput
::
FilePath
[
String
]
(
Maybe
FilePath
)
->
Task
(
Int
,[
String
])
runWithOutput
::
FilePath
[
String
]
(
Maybe
FilePath
)
->
Task
(
Int
,[
String
])
runWithOutput
prog
args
dir
=
withShared
([],
[])
\
out
->
withShared
[]
\
stdin
->
runWithOutput
prog
args
dir
=
withShared
([],
[])
\
out
->
withShared
[]
\
stdin
->
...
...
Tests/Interactive/Editlets/TestSVGEditletClick.icl
View file @
1ec405b9
module
TestSVGEditClick
module
TestSVGEdit
let
Click
import
iTasks
import
iTasks
import
StdReal
import
StdReal
from
Graphics
.
Scalable
import
px
,
above
,
class
toSVGColor
(..),
instance
toSVGColor
String
,
instance
toSVGColor
RGB
from
Graphics
.
Scalable
import
::
Host
(..),
::
SVGColor
(..),
::
RGB
(..),
::
FillAttr
(..),
::
StrokeAttr
(..),
::
OnClickAttr
(..)
from
Graphics
.
Scalable
import
<@<,
class
tuneImage
(..),
rect
,
text
,
overlay
,
normalFontDef
from
Graphics
.
Scalable
import
instance
tuneImage
FillAttr
,
instance
tuneImage
StrokeAttr
,
instance
tuneImage
OnClickAttr
import
Graphics
.
Scalable
.
Internal
testSVGEditletClick
=
itest
"SVG editlet clicks"
"Click on the image a couple of times"
"The text should update to reflect the number of clicks"
tut
from
Graphics
.
Scalable
.
Image
import
px
,
above
,
class
toSVGColor
(..),
instance
toSVGColor
String
,
instance
toSVGColor
RGB
from
Graphics
.
Scalable
.
Image
import
::
Image
,
::
Host
(..),
::
SVGColor
(..),
::
RGB
(..),
::
FillAttr
(..),
::
StrokeAttr
(..),
::
OnClickAttr
(..),
::
Span
(..),
::
FontDef
(..)
from
Graphics
.
Scalable
.
Image
import
<@<,
class
tuneImage
(..),
rect
,
text
,
overlay
,
normalFontDef
from
Graphics
.
Scalable
.
Image
import
instance
tuneImage
FillAttr
,
instance
tuneImage
StrokeAttr
,
instance
tuneImage
OnClickAttr
import
iTasks
.
Extensions
.
SVG
.
SVGEditor
testSVGEditletClick
=
updateInformation
"SVG Clicks"
[
UpdateUsing
(\
m
->
m
)
(\
m
v
->
v
)
(
fromSVGEditor
svgeditor
)]
"No clicks"
>&>
\
s
->
viewSharedInformation
"DEBUG"
[]
s
where
where
tut
=
updateInformation
"SVG Clicks"
[
UpdateUsing
(\
m
->
m
)
(\
m
v
->
v
)
(
fromSVGEditor
svgeditor
)]
"No clicks"
>&>
\
s
->
viewSharedInformation
"DEBUG"
[]
s
svgeditor
=
{
SVGEditor
|
initView
=
id
,
renderImage
=
renderImage
,
updView
=
\
m
v
->
m
,
updModel
=
\
m
v
->
v
}
svgeditor
=
{
SVGEditor
|
initView
=
id
,
renderImage
=
renderImage
,
updView
=
\
m
v
->
m
,
updModel
=
\
m
v
->
v
}
renderImage
::
String
String
*
TagSource
->
Image
String
renderImage
::
String
String
*
TagSource
->
Image
String
...
@@ -24,4 +26,4 @@ where
...
@@ -24,4 +26,4 @@ where
n
->
toString
n
+++
" clicks"
n
->
toString
n
+++
" clicks"
,
local
=
False
}
,
local
=
False
}
Start
world
=
startEngine
test
world
Start
world
=
startEngine
test
SVGEditletClick
world
Tools/CodeQualityMonitor.icl
View file @
1ec405b9
...
@@ -9,8 +9,9 @@ import Text, Text.HTML
...
@@ -9,8 +9,9 @@ import Text, Text.HTML
import
Data
.
List
,
Data
.
Func
import
Data
.
List
,
Data
.
Func
import
qualified
Data
.
Map
as
DM
import
qualified
Data
.
Map
as
DM
import
Testing
.
TestEvents
import
iTasks
import
iTasks
import
iTasks
.
Internal
.
Test
.
Definition
import
iTasks
.
Util
.
Testing
import
iTasks
.
UI
.
Definition
import
iTasks
.
UI
.
Definition
import
iTasks
.
UI
.
Editor
,
iTasks
.
UI
.
Editor
.
Controls
,
iTasks
.
UI
.
Editor
.
Modifiers
import
iTasks
.
UI
.
Editor
,
iTasks
.
UI
.
Editor
.
Controls
,
iTasks
.
UI
.
Editor
.
Modifiers
...
@@ -24,8 +25,8 @@ import iTasks.Extensions.Document
...
@@ -24,8 +25,8 @@ import iTasks.Extensions.Document
import
iTasks
.
Extensions
.
Process
import
iTasks
.
Extensions
.
Process
import
iTasks
.
Extensions
.
FileCollection
import
iTasks
.
Extensions
.
FileCollection
UNIT_TESTS_PATH
:==
"../Tests/
TestPrograms
"
UNIT_TESTS_PATH
:==
"../Tests/
Unit
"
INTERACTIVE_TESTS_PATH
:==
"../Tests/
TestPrograms/
Interactive"
INTERACTIVE_TESTS_PATH
:==
"../Tests/Interactive"
LIBRARY_PATH
:==
"../Libraries"
LIBRARY_PATH
:==
"../Libraries"
EXAMPLE_MODULES
:==
[
"../Examples/BasicApiExamples.icl"
EXAMPLE_MODULES
:==
[
"../Examples/BasicApiExamples.icl"
...
@@ -35,6 +36,13 @@ EXAMPLE_MODULES :== ["../Examples/BasicApiExamples.icl"
...
@@ -35,6 +36,13 @@ EXAMPLE_MODULES :== ["../Examples/BasicApiExamples.icl"
,
"../Examples/GIS/LeafletMapExample.icl"
,
"../Examples/GIS/LeafletMapExample.icl"
]
]
derive
class
iTask
EndEventType
derive
gEditor
FailReason
,
FailedAssertion
,
CounterExample
,
Relation
derive
gDefault
FailReason
,
FailedAssertion
,
CounterExample
,
Relation
derive
gEq
FailReason
,
FailedAssertion
,
CounterExample
,
Relation
derive
gText
FailReason
,
FailedAssertion
,
CounterExample
,
Relation
inspectCodeQuality
::
Task
()
inspectCodeQuality
::
Task
()
inspectCodeQuality
inspectCodeQuality
=
application
{
WebImage
|
src
=
"/testbench.png"
,
alt
=
"iTasks Testbench"
,
width
=
200
,
height
=
50
}
=
application
{
WebImage
|
src
=
"/testbench.png"
,
alt
=
"iTasks Testbench"
,
width
=
200
,
height
=
50
}
...
@@ -100,19 +108,17 @@ where
...
@@ -100,19 +108,17 @@ where
tests
=
mapRead
(
filter
((==)
"icl"
o
takeExtension
))
(
sdsFocus
UNIT_TESTS_PATH
directoryListing
)
tests
=
mapRead
(
filter
((==)
"icl"
o
takeExtension
))
(
sdsFocus
UNIT_TESTS_PATH
directoryListing
)
toTestReport
results
toTestReport
results
=
DivTag
[]
[
suiteHtml
res
\\
res
<-
results
|
not
(
isEmpty
res
.
testR
esults
)]
=
DivTag
[]
[
]
//[suiteHtml res \\ res <- results | not (isEmpty r
esults)]
where
where
suiteHtml
{
suiteName
,
testResults
}
suiteHtml
testResults
=
DivTag
[]
[
H2Tag
[]
[
Text
suiteName
]
=
TableTag
[
StyleAttr
"width: 100%"
]
[
headerRow
:
map
resultRow
testResults
]
,
TableTag
[
StyleAttr
"width: 100%"
]
[
headerRow
:
map
resultRow
testResults
]
]
headerRow
=
TrTag
[]
[
ThTag
[]
[
Text
"Test"
],
ThTag
[]
[
Text
"Result"
],
ThTag
[]
[
Text
"Details"
]]
headerRow
=
TrTag
[]
[
ThTag
[]
[
Text
"Test"
],
ThTag
[]
[
Text
"Result"
],
ThTag
[]
[
Text
"Details"
]]
resultRow
(
test
,
Passed
)
=
TrTag
[]
[
TdTag
[]
[
Text
test
],
TdTag
[]
[
SpanTag
[
StyleAttr
"color: green"
]
[
Text
"Passed"
]],
TdTag
[]
[]]
resultRow
Passed
=
TrTag
[]
[
TdTag
[]
[
Text
"FIXME"
],
TdTag
[]
[
SpanTag
[
StyleAttr
"color: green"
]
[
Text
"Passed"
]],
TdTag
[]
[]]
resultRow
(
test
,
Skipped
)
=
TrTag
[]
[
TdTag
[]
[
Text
test
],
TdTag
[]
[
SpanTag
[
StyleAttr
"color: orange"
]
[
Text
"Skipped"
]],
TdTag
[]
[]]
resultRow
Skipped
=
TrTag
[]
[
TdTag
[]
[
Text
"FIXME"
],
TdTag
[]
[
SpanTag
[
StyleAttr
"color: orange"
]
[
Text
"Skipped"
]],
TdTag
[]
[]]
resultRow
(
test
,
Failed
Nothing
)
=
TrTag
[]
[
TdTag
[]
[
Text
test
],
TdTag
[]
[
SpanTag
[
StyleAttr
"color: red"
]
[
Text
"Failed"
]],
TdTag
[]
[]]
resultRow
(
Failed
Nothing
)
=
TrTag
[]
[
TdTag
[]
[
Text
"FIXME"
],
TdTag
[]
[
SpanTag
[
StyleAttr
"color: red"
]
[
Text
"Failed"
]],
TdTag
[]
[]]
resultRow
(
test
,
Failed
(
Just
details
))
=
TrTag
[]
[
TdTag
[]
[
Text
test
],
TdTag
[]
[
SpanTag
[
StyleAttr
"color: red"
]
[
Text
"Failed"
]],
TdTag
[]
[
TextareaTag
[]
[
Text
details
]]]
resultRow
(
Failed
(
Just
details
))
=
TrTag
[]
[
TdTag
[]
[
Text
"FIXME"
],
TdTag
[]
[
SpanTag
[
StyleAttr
"color: red"
]
[
Text
"Failed"
]],
TdTag
[]
[
TextareaTag
[]
[
Text
(
toString
(
toJSON
details
))
]]]
checkExampleApplications
=
withShared
'
DM
'.
newMap
checkExampleApplications
=
withShared
'
DM
'.
newMap
\
results
->
\
results
->
...
@@ -294,7 +300,7 @@ projectTemplate moduleName = join OS_NEWLINE
...
@@ -294,7 +300,7 @@ projectTemplate moduleName = join OS_NEWLINE
[
"Version: 1.4"
[
"Version: 1.4"
,
"Global"
,
"Global"
,
"
\t
ProjectRoot: ."
,
"
\t
ProjectRoot: ."
,
"
\t
Target: iTasks
git
"
,
"
\t
Target: iTasks"
,
"
\t
Exec: {Project}/"
+++
addExtension
moduleName
"exe"
,
"
\t
Exec: {Project}/"
+++
addExtension
moduleName
"exe"
,
"
\t
CodeGen"
,
"
\t
CodeGen"
,
"
\t\t
CheckStacks: False"
,
"
\t\t
CheckStacks: False"
...
...
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