Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
gargantext-ihaskell
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gargantext
gargantext-ihaskell
Commits
616bc00e
Commit
616bc00e
authored
Feb 21, 2019
by
Vaibhav Sagar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Attempt to set error status
parent
3b0936d4
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
38 additions
and
21 deletions
+38
-21
.travis.yml
.travis.yml
+6
-6
Parser.hs
ipython-kernel/src/IHaskell/IPython/Message/Parser.hs
+1
-1
Types.hs
ipython-kernel/src/IHaskell/IPython/Types.hs
+7
-1
Main.hs
main/Main.hs
+3
-3
Evaluate.hs
src/IHaskell/Eval/Evaluate.hs
+18
-8
Publish.hs
src/IHaskell/Publish.hs
+2
-1
Eval.hs
src/tests/IHaskell/Test/Eval.hs
+1
-1
No files found.
.travis.yml
View file @
616bc00e
...
...
@@ -78,7 +78,7 @@ matrix:
# Run the notebook to regenerate the outputs, then compare the new notebook to the old one.
stack install --fast
stack exec -- ihaskell install --stack
stack exec -- jupyter nbconvert --to=notebook --execute --stdout notebooks/IHaskell.ipynb > ~/ihaskell-out.ipynb
stack exec -- jupyter nbconvert --to=notebook --execute --
allow-errors --
stdout notebooks/IHaskell.ipynb > ~/ihaskell-out.ipynb
# Images are rendered differently on different systems, so filter them out in the comparison
diff <(egrep -v 'image/png|version|pygments' ~/ihaskell-out.ipynb) <(egrep -v 'image/png|version|pygments' notebooks/IHaskell.ipynb)
...
...
@@ -158,7 +158,7 @@ matrix:
# Run the notebook to regenerate the outputs, then compare the new notebook to the old one.
stack install --fast
stack exec -- ihaskell install --stack
stack exec -- jupyter nbconvert --to=notebook --execute --stdout notebooks/IHaskell.ipynb > ~/ihaskell-out.ipynb
stack exec -- jupyter nbconvert --to=notebook --execute --
allow-errors --
stdout notebooks/IHaskell.ipynb > ~/ihaskell-out.ipynb
# Images are rendered differently on different systems, so filter them out in the comparison
diff <(egrep -v 'image/png|version|pygments' ~/ihaskell-out.ipynb) <(egrep -v 'image/png|version|pygments' notebooks/IHaskell.ipynb)
...
...
@@ -238,7 +238,7 @@ matrix:
# Run the notebook to regenerate the outputs, then compare the new notebook to the old one.
stack install --fast
stack exec -- ihaskell install --stack
stack exec -- jupyter nbconvert --to=notebook --execute --stdout notebooks/IHaskell.ipynb > ~/ihaskell-out.ipynb
stack exec -- jupyter nbconvert --to=notebook --execute --
allow-errors --
stdout notebooks/IHaskell.ipynb > ~/ihaskell-out.ipynb
# Images are rendered differently on different systems, so filter them out in the comparison
diff <(egrep -v 'image/png|version|pygments' ~/ihaskell-out.ipynb) <(egrep -v 'image/png|version|pygments' notebooks/IHaskell.ipynb)
...
...
@@ -318,7 +318,7 @@ matrix:
# Run the notebook to regenerate the outputs, then compare the new notebook to the old one.
stack install --fast
stack exec -- ihaskell install --stack
stack exec -- jupyter nbconvert --to=notebook --execute --stdout notebooks/IHaskell.ipynb > ~/ihaskell-out.ipynb
stack exec -- jupyter nbconvert --to=notebook --execute --
allow-errors --
stdout notebooks/IHaskell.ipynb > ~/ihaskell-out.ipynb
# Images are rendered differently on different systems, so filter them out in the comparison
diff <(egrep -v 'image/png|version|pygments' ~/ihaskell-out.ipynb) <(egrep -v 'image/png|version|pygments' notebooks/IHaskell.ipynb)
...
...
@@ -352,7 +352,7 @@ matrix:
ihaskell-plot
ihaskell-static-canvas
])'
-
result/bin/ihaskell-nbconvert --to=notebook --execute --stdout notebooks/IHaskell.ipynb > ~/ihaskell-out.ipynb
-
result/bin/ihaskell-nbconvert --to=notebook --execute --
allow-errors --
stdout notebooks/IHaskell.ipynb > ~/ihaskell-out.ipynb
-
diff <(egrep -v 'image/png|version|pygments' ~/ihaskell-out.ipynb) <(egrep -v 'image/png|version|pygments' notebooks/IHaskell.ipynb)
-
language
:
nix
dist
:
xenial
...
...
@@ -383,5 +383,5 @@ matrix:
ihaskell-plot
ihaskell-static-canvas
])'
-
result/bin/ihaskell-nbconvert --to=notebook --execute --stdout notebooks/IHaskell.ipynb > ~/ihaskell-out.ipynb
-
result/bin/ihaskell-nbconvert --to=notebook --execute --
allow-errors --
stdout notebooks/IHaskell.ipynb > ~/ihaskell-out.ipynb
-
diff <(egrep -v 'image/png|version|pygments' ~/ihaskell-out.ipynb) <(egrep -v 'image/png|version|pygments' notebooks/IHaskell.ipynb)
ipython-kernel/src/IHaskell/IPython/Message/Parser.hs
View file @
616bc00e
...
...
@@ -148,7 +148,7 @@ executeErrorParser = requestParser $ \obj -> do
traceback
<-
obj
.:
"traceback"
ename
<-
obj
.:
"ename"
evalue
<-
obj
.:
"evalue"
return
$
ExecuteError
noHeader
[]
traceback
ename
evalue
return
$
ExecuteError
noHeader
traceback
ename
evalue
makeDisplayDatas
::
Object
->
[
DisplayData
]
makeDisplayDatas
dataDict
=
[
DisplayData
(
read
$
unpack
mimeType
)
content
|
(
mimeType
,
String
content
)
<-
HM
.
toList
...
...
ipython-kernel/src/IHaskell/IPython/Types.hs
View file @
616bc00e
...
...
@@ -378,7 +378,6 @@ data Message =
-- | An error reply to an execute request
ExecuteError
{
header
::
MessageHeader
,
pagerOutput
::
[
DisplayData
]
-- ^ The mimebundles to display in the pager.
,
traceback
::
[
Text
]
,
ename
::
Text
,
evalue
::
Text
...
...
@@ -561,6 +560,13 @@ instance ToJSON Message where
,
"data"
.=
object
(
map
displayDataToJson
o
)
]
]
toJSON
ExecuteError
{
header
=
header
,
traceback
=
traceback
,
ename
=
ename
,
evalue
=
evalue
}
=
object
[
"header"
.=
show
header
,
"traceback"
.=
map
toJSON
traceback
,
"ename"
.=
ename
,
"evalue"
.=
evalue
]
toJSON
PublishStatus
{
executionState
=
executionState
}
=
object
[
"execution_state"
.=
executionState
]
toJSON
PublishStream
{
streamType
=
streamType
,
streamContent
=
content
}
=
...
...
main/Main.hs
View file @
616bc00e
...
...
@@ -151,7 +151,7 @@ runKernel kOpts profileSrc = do
kernelState
{
supportLibrariesAvailable
=
hasSupportLibraries
}
-- Initialize the context by evaluating everything we got from the command line flags.
let
noPublish
_
=
return
()
let
noPublish
_
_
=
return
()
noWidget
s
_
=
return
s
evaluator
line
=
void
$
do
-- Create a new state each time.
...
...
@@ -429,12 +429,12 @@ handleComm send kernelState req replyHeader = do
CommDataMessage
->
do
disp
<-
run
$
comm
widget
dat
communicate
pgrOut
<-
liftIO
$
readMVar
pOut
liftIO
$
publish
$
FinalResult
disp
(
if
toUsePager
then
pgrOut
else
[]
)
[]
liftIO
$
publish
(
FinalResult
disp
(
if
toUsePager
then
pgrOut
else
[]
)
[]
)
True
return
kernelState
CommCloseMessage
->
do
disp
<-
run
$
close
widget
dat
pgrOut
<-
liftIO
$
readMVar
pOut
liftIO
$
publish
$
FinalResult
disp
(
if
toUsePager
then
pgrOut
else
[]
)
[]
liftIO
$
publish
(
FinalResult
disp
(
if
toUsePager
then
pgrOut
else
[]
)
[]
)
True
return
kernelState
{
openComms
=
Map
.
delete
uuid
widgets
}
_
->
-- Only sensible thing to do.
...
...
src/IHaskell/Eval/Evaluate.hs
View file @
616bc00e
...
...
@@ -126,7 +126,7 @@ testInterpret v = interpret GHC.Paths.libdir False (const v)
-- | Evaluation function for testing.
testEvaluate
::
String
->
IO
()
testEvaluate
str
=
void
$
testInterpret
$
evaluate
defaultKernelState
str
(
const
$
return
()
)
(
\
state
_
->
return
state
)
evaluate
defaultKernelState
str
(
\
_
_
->
return
()
)
(
\
state
_
->
return
state
)
-- | Run an interpreting action. This is effectively runGhc with initialization and importing. First
-- argument indicates whether `stdin` is handled specially, which cannot be done in a testing
...
...
@@ -249,8 +249,9 @@ initializeItVariable =
void
$
execStmt
"let it = ()"
execOptions
-- | Publisher for IHaskell outputs. The first argument indicates whether this output is final
-- (true) or intermediate (false).
type
Publisher
=
(
EvaluationResult
->
IO
()
)
-- (true) or intermediate (false). The second argument indicates whether the evaluation
-- completed successfully (true) or an error occurred (false).
type
Publisher
=
(
EvaluationResult
->
Bool
->
IO
()
)
-- | Output of a command evaluation.
data
EvalOut
=
...
...
@@ -277,6 +278,11 @@ cleanString istr = if allBrackets
-- should never happen:
removeBracket
other
=
error
$
"Expected bracket as first char, but got string: "
++
other
-- | Converts Success/Failure to a boolean to set the output cell type.
successStatus
::
ErrorOccurred
->
Bool
successStatus
Success
=
True
successStatus
Failure
=
False
-- | Evaluate some IPython input code.
evaluate
::
KernelState
-- ^ The kernel state.
->
String
-- ^ Haskell code or other interpreter commands.
...
...
@@ -298,14 +304,16 @@ evaluate kernelState code output widgetHandler = do
when
(
getLintStatus
kernelState
/=
LintOff
)
$
liftIO
$
do
lintSuggestions
<-
lint
cmds
unless
(
noResults
lintSuggestions
)
$
output
$
FinalResult
lintSuggestions
[]
[]
output
(
FinalResult
lintSuggestions
[]
[]
)
True
runUntilFailure
kernelState
(
map
unloc
cmds
++
[
storeItCommand
execCount
])
-- Print all parse errors.
_
->
do
forM_
errs
$
\
err
->
do
out
<-
evalCommand
output
err
kernelState
liftIO
$
output
$
FinalResult
(
evalResult
out
)
[]
[]
liftIO
$
output
(
FinalResult
(
evalResult
out
)
[]
[]
)
(
successStatus
$
evalStatus
out
)
return
kernelState
return
updated
{
getExecutionCounter
=
execCount
+
1
}
...
...
@@ -338,7 +346,9 @@ evaluate kernelState code output widgetHandler = do
-- Output things only if they are non-empty.
unless
(
noResults
result
&&
null
(
evalPager
evalOut
))
$
liftIO
$
output
$
FinalResult
result
(
evalPager
evalOut
)
[]
liftIO
$
output
(
FinalResult
result
(
evalPager
evalOut
)
[]
)
(
successStatus
$
evalStatus
evalOut
)
let
tempMsgs
=
evalMsgs
evalOut
tempState
=
evalState
evalOut
{
evalMsgs
=
[]
}
...
...
@@ -693,7 +703,7 @@ evalCommand publish (Directive ShellCmd cmd) state = wrapExecution state $
case
mExitCode
of
Nothing
->
do
-- Write to frontend and repeat.
readMVar
outputAccum
>>=
output
readMVar
outputAccum
>>=
flip
output
True
loop
Just
exitCode
->
do
next
<-
readChars
pipe
""
maxSize
...
...
@@ -1222,7 +1232,7 @@ evalStatementOrIO publish state cmd = do
CapturedIO
_
->
write
state
"Evaluating Action"
(
printed
,
result
)
<-
capturedEval
output
cmd
(
printed
,
result
)
<-
capturedEval
(
flip
output
True
)
cmd
case
result
of
ExecComplete
(
Right
names
)
_
->
do
dflags
<-
getSessionDynFlags
...
...
src/IHaskell/Publish.hs
View file @
616bc00e
...
...
@@ -26,8 +26,9 @@ publishResult :: (Message -> IO ()) -- ^ A function to send messages
->
MVar
[
DisplayData
]
-- ^ A MVar to use for storing pager output
->
Bool
-- ^ Whether to use the pager
->
EvaluationResult
-- ^ The evaluation result
->
Bool
-- ^ Whether evaluation completed successfully
->
IO
()
publishResult
send
replyHeader
displayed
updateNeeded
poutput
upager
result
=
do
publishResult
send
replyHeader
displayed
updateNeeded
poutput
upager
result
success
=
do
let
final
=
case
result
of
IntermediateResult
{}
->
False
...
...
src/tests/IHaskell/Test/Eval.hs
View file @
616bc00e
...
...
@@ -24,7 +24,7 @@ eval :: String -> IO ([Display], String)
eval
string
=
do
outputAccum
<-
newIORef
[]
pagerAccum
<-
newIORef
[]
let
publish
evalResult
=
let
publish
evalResult
_
=
case
evalResult
of
IntermediateResult
{}
->
return
()
FinalResult
outs
page
_
->
do
...
...
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