From e2af8f7ce3e2cd8cb87a89c0ed67daf32914a2f2 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Sun, 6 Dec 2015 15:51:35 +0100 Subject: [PATCH] runnables, unittests, prokect runner: display an error when exit code is not null --- src/ce_main.pas | 3 +++ src/ce_nativeproject.pas | 8 +++++++- src/ce_processes.pas | 11 ----------- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/ce_main.pas b/src/ce_main.pas index 3dc2c52f..688c00b5 100644 --- a/src/ce_main.pas +++ b/src/ce_main.pas @@ -1660,6 +1660,9 @@ begin inph := EntitiesConnector.getSingleService('ICEProcInputHandler'); if (inph <> nil) then (inph as ICEProcInputHandler).removeProcess(proc); + if (proc.ExitStatus <> 0) then + fMsgs.message(format('error: the process (%s) has returned the signal %d', + [proc.Executable, proc.ExitStatus]), fDoc, amcEdit, amkErr); end; procedure TCEMainForm.actSetRunnableSwExecute(Sender: TObject); diff --git a/src/ce_nativeproject.pas b/src/ce_nativeproject.pas index c5977e4e..31860894 100644 --- a/src/ce_nativeproject.pas +++ b/src/ce_nativeproject.pas @@ -795,6 +795,7 @@ var lst: TStringList; str: string; msgs: ICEMessagesDisplay; + proc : TProcess; begin lst := TStringList.Create; msgs := getMessageDisplay; @@ -809,10 +810,15 @@ begin lst.Free; end; // - if not TProcess(sender).Active then + proc := TProcess(sender); + if not proc.Running then begin getprocInputHandler.removeProcess(TProcess(sender)); ChDir(fRunnerOldCwd); + // + if (proc.ExitStatus <> 0) then + msgs.message(format('error: the process (%s) has returned the signal %d', + [proc.Executable, proc.ExitStatus]), self as ICECommonProject, amcProj, amkErr); end; end; diff --git a/src/ce_processes.pas b/src/ce_processes.pas index faece2da..80b344c2 100644 --- a/src/ce_processes.pas +++ b/src/ce_processes.pas @@ -104,7 +104,6 @@ var begin if not (poUsePipes in Options) then exit; - sum := fOutputStack.Size; while (Output <> nil) and (NumBytesAvailable > 0) do begin @@ -112,7 +111,6 @@ begin cnt := Output.Read((fOutputStack.Memory + sum)^, 1024); sum += cnt; end; - fOutputStack.SetSize(sum); end; @@ -123,18 +121,9 @@ var toread: Integer; buff: Byte = 0; str: TMemoryStream; - err: array[0..255] of Byte; begin if not Running then begin - //TODO-cbugfix: errors not displayed when a runnable crashes - //if poStderrToOutPut in Options then - //if Stderr <> nil then while (true) do - //begin - // toread := Stderr.Read(err[0], length(err)); - // if toread = 0 then break; - // fOutputStack.Write(err[0], toread); - //end; list.LoadFromStream(fOutputStack); if consume then fOutputStack.Clear;