added action to run the tests in the focused editor

This commit is contained in:
Basile Burg 2015-01-14 12:16:33 +01:00
parent 49d985ab1b
commit a4b8c3ed48
2 changed files with 47 additions and 24 deletions

View File

@ -494,6 +494,9 @@ object CEMainForm: TCEMainForm
AEEAB3B3B100B5B5B300B5B5B300B5B5B300B5B5B300B5B5B300 AEEAB3B3B100B5B5B300B5B5B300B5B5B300B5B5B300B5B5B300
} }
end end
object MenuItem63: TMenuItem
Action = actFileUnittest
end
object MenuItem59: TMenuItem object MenuItem59: TMenuItem
Caption = '-' Caption = '-'
end end
@ -1662,6 +1665,9 @@ object CEMainForm: TCEMainForm
AEEAB3B3B100B5B5B300B5B5B300B5B5B300B5B5B300B5B5B300 AEEAB3B3B100B5B5B300B5B5B300B5B5B300B5B5B300B5B5B300
} }
end end
object MenuItem64: TMenuItem
Action = actFileUnittest
end
object MenuItem10: TMenuItem object MenuItem10: TMenuItem
Caption = '-' Caption = '-'
end end
@ -2162,6 +2168,12 @@ object CEMainForm: TCEMainForm
ImageIndex = 33 ImageIndex = 33
OnExecute = actFileHtmlExportExecute OnExecute = actFileHtmlExportExecute
end end
object actFileUnittest: TAction
Category = 'File'
Caption = 'Run file unittests'
ImageIndex = 22
OnExecute = actFileUnittestExecute
end
end end
object imgList: TImageList object imgList: TImageList
left = 64 left = 64

View File

@ -34,6 +34,7 @@ type
actEdFindNext: TAction; actEdFindNext: TAction;
actFileOpenContFold: TAction; actFileOpenContFold: TAction;
actFileHtmlExport: TAction; actFileHtmlExport: TAction;
actFileUnittest: TAction;
actLayoutSave: TAction; actLayoutSave: TAction;
actProjOpenContFold: TAction; actProjOpenContFold: TAction;
actProjOptView: TAction; actProjOptView: TAction;
@ -118,6 +119,8 @@ type
MenuItem60: TMenuItem; MenuItem60: TMenuItem;
MenuItem61: TMenuItem; MenuItem61: TMenuItem;
MenuItem62: TMenuItem; MenuItem62: TMenuItem;
MenuItem63: TMenuItem;
MenuItem64: TMenuItem;
mnuLayout: TMenuItem; mnuLayout: TMenuItem;
mnuItemMruFile: TMenuItem; mnuItemMruFile: TMenuItem;
mnuItemMruProj: TMenuItem; mnuItemMruProj: TMenuItem;
@ -138,6 +141,7 @@ type
procedure actFileOpenContFoldExecute(Sender: TObject); procedure actFileOpenContFoldExecute(Sender: TObject);
procedure actFileSaveAllExecute(Sender: TObject); procedure actFileSaveAllExecute(Sender: TObject);
procedure actEdIndentExecute(Sender: TObject); procedure actEdIndentExecute(Sender: TObject);
procedure actFileUnittestExecute(Sender: TObject);
procedure actLayoutSaveExecute(Sender: TObject); procedure actLayoutSaveExecute(Sender: TObject);
procedure actProjCompAndRunWithArgsExecute(Sender: TObject); procedure actProjCompAndRunWithArgsExecute(Sender: TObject);
procedure actProjCompileAndRunExecute(Sender: TObject); procedure actProjCompileAndRunExecute(Sender: TObject);
@ -244,7 +248,7 @@ type
// run & exec sub routines // run & exec sub routines
procedure asyncprocOutput(sender: TObject); procedure asyncprocOutput(sender: TObject);
procedure asyncprocTerminate(sender: TObject); procedure asyncprocTerminate(sender: TObject);
procedure compileAndRunFile(const edIndex: NativeInt; const runArgs: string = ''); procedure compileAndRunFile(unittest: boolean = false; const runArgs: string = '');
// file sub routines // file sub routines
procedure newFile; procedure newFile;
@ -1289,14 +1293,15 @@ begin
fPrInpWidg.process := nil; fPrInpWidg.process := nil;
end; end;
procedure TCEMainForm.compileAndRunFile(const edIndex: NativeInt; const runArgs: string = ''); procedure TCEMainForm.compileAndRunFile(unittest: boolean; const runArgs: string = '');
var var
editor: TCESynMemo;
dmdproc: TProcess; dmdproc: TProcess;
fname: string; fname: string;
begin begin
FreeRunnableProc; FreeRunnableProc;
if fDoc = nil then exit;
fRunProc := TCheckedAsyncProcess.Create(nil); fRunProc := TCheckedAsyncProcess.Create(nil);
fRunProc.Options := [poStderrToOutPut, poUsePipes]; fRunProc.Options := [poStderrToOutPut, poUsePipes];
fRunProc.ShowWindow := swoHIDE; fRunProc.ShowWindow := swoHIDE;
@ -1304,16 +1309,15 @@ begin
fRunProc.OnTerminate:= @asyncprocTerminate; fRunProc.OnTerminate:= @asyncprocTerminate;
dmdproc := TProcess.Create(nil); dmdproc := TProcess.Create(nil);
editor := fEditWidg.editor[edIndex];
try try
subjLmClearByData(fLogMessager, editor); subjLmClearByData(fLogMessager, fDoc);
subjLmFromString(fLogMessager, 'compiling ' + shortenPath(editor.fileName, 25), subjLmFromString(fLogMessager, 'compiling ' + shortenPath(fDoc.fileName, 25),
editor, amcEdit, amkInf); fDoc, amcEdit, amkInf);
if fileExists(editor.fileName) then editor.save if fileExists(fDoc.fileName) then fDoc.save
else editor.saveTempFile; else fDoc.saveTempFile;
fname := stripFileExt(editor.fileName); fname := stripFileExt(fDoc.fileName);
if fRunnableSw = '' then if fRunnableSw = '' then
fRunnableSw := '-vcolumns'#13'-w'#13'-wi'; fRunnableSw := '-vcolumns'#13'-w'#13'-wi';
@ -1322,9 +1326,14 @@ begin
{$ENDIF} {$ENDIF}
dmdproc.Options := [poStdErrToOutput, poUsePipes]; dmdproc.Options := [poStdErrToOutput, poUsePipes];
dmdproc.Executable := DCompiler; dmdproc.Executable := DCompiler;
dmdproc.Parameters.Add(editor.fileName); dmdproc.Parameters.Add(fDoc.fileName);
dmdproc.Parameters.AddText(fRunnableSw); dmdproc.Parameters.AddText(fRunnableSw);
dmdproc.Parameters.Add('-version=runnable_module'); if unittest then
begin
dmdproc.Parameters.Add('-main');
dmdproc.Parameters.Add('-unittest');
end
else dmdproc.Parameters.Add('-version=runnable_module');
dmdproc.Parameters.Add('-of' + fname + exeExt); dmdproc.Parameters.Add('-of' + fname + exeExt);
LibMan.getLibFiles(nil, dmdproc.Parameters); LibMan.getLibFiles(nil, dmdproc.Parameters);
LibMan.getLibSources(nil, dmdproc.Parameters); LibMan.getLibSources(nil, dmdproc.Parameters);
@ -1333,8 +1342,8 @@ begin
if (dmdProc.ExitStatus = 0) then if (dmdProc.ExitStatus = 0) then
begin begin
subjLmFromString(fLogMessager, shortenPath(editor.fileName, 25) subjLmFromString(fLogMessager, shortenPath(fDoc.fileName, 25)
+ ' successfully compiled', editor, amcEdit, amkInf); + ' successfully compiled', fDoc, amcEdit, amkInf);
fRunProc.CurrentDirectory := extractFilePath(fRunProc.Executable); fRunProc.CurrentDirectory := extractFilePath(fRunProc.Executable);
if runArgs <> '' then if runArgs <> '' then
@ -1345,8 +1354,8 @@ begin
sysutils.DeleteFile(fname + objExt); sysutils.DeleteFile(fname + objExt);
end end
else begin else begin
subjLmFromString(fLogMessager, shortenPath(editor.fileName,25) subjLmFromString(fLogMessager, shortenPath(fDoc.fileName,25)
+ ' has not been compiled', editor, amcEdit, amkErr); + ' has not been compiled', fDoc, amcEdit, amkErr);
end; end;
finally finally
@ -1354,24 +1363,26 @@ begin
end; end;
end; end;
procedure TCEMainForm.actFileUnittestExecute(Sender: TObject);
begin
if fDoc = nil then exit;
compileAndRunFile(true, '');
end;
procedure TCEMainForm.actFileCompAndRunExecute(Sender: TObject); procedure TCEMainForm.actFileCompAndRunExecute(Sender: TObject);
begin begin
if fEditWidg = nil then exit; if fDoc = nil then exit;
if fEditWidg.editorIndex < 0 then exit; compileAndRunFile(false, '');
//
compileAndRunFile(fEditWidg.editorIndex);
end; end;
procedure TCEMainForm.actFileCompAndRunWithArgsExecute(Sender: TObject); procedure TCEMainForm.actFileCompAndRunWithArgsExecute(Sender: TObject);
var var
runargs: string; runargs: string;
begin begin
if fEditWidg = nil then exit; if fDoc = nil then exit;
if fEditWidg.editorIndex < 0 then exit;
//
runargs := ''; runargs := '';
if InputQuery('Execution arguments', '', runargs) then if InputQuery('Execution arguments', '', runargs) then
compileAndRunFile(fEditWidg.editorIndex, runargs); compileAndRunFile(false, runargs);
end; end;
procedure TCEMainForm.actFileOpenContFoldExecute(Sender: TObject); procedure TCEMainForm.actFileOpenContFoldExecute(Sender: TObject);