diff --git a/_RebuildReleaseAndRunTests.sh b/_RebuildReleaseAndRunTests.sh new file mode 100644 index 000000000..39f76724c --- /dev/null +++ b/_RebuildReleaseAndRunTests.sh @@ -0,0 +1,30 @@ +#!/bin/sh +MONO_IOMAP=case xbuild pabcnetc.sln +export MONO_IOMAP=all +cd ReleaseGenerators +mono ../bin/pabcnetc.exe RebuildStandartModules.pas /rebuild +if [ $? -eq 0 ]; then + cd PABCRtl + mono ../../bin/pabcnetc.exe PABCRtl.pas /rebuild + if [ $? -eq 0 ]; then + sn -Vr PABCRtl.dll + sn -R PABCRtl.dll KeyPair.snk + sn -Vu PABCRtl.dll + cp PABCRtl.dll ../../bin/Lib + mono ../../bin/pabcnetc.exe PABCRtl32.pas /rebuild + if [ $? -eq 0 ]; then + sn -Vr PABCRtl32.dll + sn -R PABCRtl32.dll KeyPair32.snk + sn -Vu PABCRtl32.dll + cp PABCRtl32.dll ../../bin/Lib + gacutil -u PABCRtl + gacutil -i ../bin/Lib/PABCRtl.dll + mono ../bin/pabcnetc.exe RebuildStandartModules.pas /rebuild + if [ $? -eq 0 ]; then + cd ../bin + mono TestRunner.exe + cd .. + fi + fi + fi +fi \ No newline at end of file diff --git a/bin/TestRunner.exe b/bin/TestRunner.exe index 889202068..ad3c645af 100644 Binary files a/bin/TestRunner.exe and b/bin/TestRunner.exe differ diff --git a/bin/TestRunner.pas b/bin/TestRunner.pas index 3db3e9e82..963d977ed 100644 --- a/bin/TestRunner.pas +++ b/bin/TestRunner.pas @@ -9,6 +9,7 @@ uses PascalABCCompiler, System.IO, System.Diagnostics; var TestSuiteDir: string; +var PathSeparator: string := Path.DirectorySeparatorChar; function GetTestSuiteDir: string; begin @@ -20,7 +21,7 @@ end; function GetLibDir: string; begin var dir := Path.GetDirectoryName(GetEXEFileName()); - Result := dir+'\Lib'; + Result := dir+PathSeparator+'Lib'; end; procedure CompileErrorTests(withide: boolean); @@ -28,12 +29,12 @@ begin var comp := new Compiler(); - var files := Directory.GetFiles(TestSuiteDir+'\errors','*.pas'); + var files := Directory.GetFiles(TestSuiteDir+PathSeparator+'errors','*.pas'); for var i := 0 to files.Length - 1 do begin var co: CompilerOptions := new CompilerOptions(files[i],CompilerOptions.OutputType.ConsoleApplicaton); co.Debug := true; - co.OutputDirectory := TestSuiteDir+'\errors'; + co.OutputDirectory := TestSuiteDir+PathSeparator+'errors'; co.UseDllForSystemUnits := false; co.RunWithEnvironment := withide; comp.ErrorsList.Clear(); @@ -64,7 +65,7 @@ begin begin var co: CompilerOptions := new CompilerOptions(files[i],CompilerOptions.OutputType.ConsoleApplicaton); co.Debug := true; - co.OutputDirectory := TestSuiteDir+'\exe'; + co.OutputDirectory := TestSuiteDir+PathSeparator+'exe'; co.UseDllForSystemUnits := withdll; co.RunWithEnvironment := false; co.IgnoreRtlErrors := false; @@ -87,12 +88,12 @@ begin var comp := new Compiler(); - var files := Directory.GetFiles(TestSuiteDir+'\'+dir,'*.pas'); + var files := Directory.GetFiles(TestSuiteDir+PathSeparator+dir,'*.pas'); for var i := 0 to files.Length - 1 do begin var co: CompilerOptions := new CompilerOptions(files[i],CompilerOptions.OutputType.ConsoleApplicaton); co.Debug := true; - co.OutputDirectory := TestSuiteDir+'\'+dir; + co.OutputDirectory := TestSuiteDir+PathSeparator+dir; co.UseDllForSystemUnits := withdll; co.RunWithEnvironment := false; co.IgnoreRtlErrors := false; @@ -112,8 +113,8 @@ end; procedure CompileAllUnits; begin var comp := new Compiler(); - var files := Directory.GetFiles(TestSuiteDir+'\units','*.pas'); - var dir := TestSuiteDir+'\units\'; + var files := Directory.GetFiles(TestSuiteDir+PathSeparator+'units','*.pas'); + var dir := TestSuiteDir+PathSeparator+'units'+PathSeparator; for var i := 0 to files.Length - 1 do begin var co: CompilerOptions := new CompilerOptions(files[i],CompilerOptions.OutputType.ConsoleApplicaton); @@ -138,12 +139,12 @@ begin System.Environment.CurrentDirectory := Path.GetDirectoryName(GetEXEFileName()); var comp := new Compiler(); - var files := Directory.GetFiles(TestSuiteDir+'\usesunits','*.pas'); + var files := Directory.GetFiles(TestSuiteDir+PathSeparator+'usesunits','*.pas'); for var i := 0 to files.Length - 1 do begin var co: CompilerOptions := new CompilerOptions(files[i],CompilerOptions.OutputType.ConsoleApplicaton); co.Debug := true; - co.OutputDirectory := TestSuiteDir+'\exe'; + co.OutputDirectory := TestSuiteDir+PathSeparator+'exe'; co.UseDllForSystemUnits := false; comp.ErrorsList.Clear(); comp.Warnings.Clear(); @@ -160,24 +161,24 @@ end; procedure CopyPCUFiles; begin System.Environment.CurrentDirectory := Path.GetDirectoryName(GetEXEFileName()); - var files := Directory.GetFiles(TestSuiteDir+'\units','*.pcu'); + var files := Directory.GetFiles(TestSuiteDir+PathSeparator+'units','*.pcu'); foreach fname: string in files do begin - &File.Move(fname,TestSuiteDir+'\usesunits\'+Path.GetFileName(fname)); + &File.Move(fname,TestSuiteDir+PathSeparator+'usesunits'+PathSeparator+Path.GetFileName(fname)); end; end; procedure RunAllTests(redirectIO: boolean); begin - var files := Directory.GetFiles(TestSuiteDir+'\exe','*.exe'); + var files := Directory.GetFiles(TestSuiteDir+PathSeparator+'exe','*.exe'); for var i := 0 to files.Length - 1 do begin var psi := new System.Diagnostics.ProcessStartInfo(files[i]); psi.CreateNoWindow := true; psi.UseShellExecute := false; - psi.WorkingDirectory := TestSuiteDir+'\exe'; + psi.WorkingDirectory := TestSuiteDir+PathSeparator+'exe'; {psi.RedirectStandardInput := true; psi.RedirectStandardOutput := true; psi.RedirectStandardError := true;} @@ -207,10 +208,10 @@ end; procedure RunFormatterTests; begin CodeCompletion.FormatterTester.Test(); - var errors := &File.ReadAllText(TestSuiteDir+'\formatter_tests\output\log.txt'); + var errors := &File.ReadAllText(TestSuiteDir+PathSeparator+'formatter_tests'+PathSeparator+'output'+PathSeparator+'log.txt'); if not string.IsNullOrEmpty(errors) then begin - System.Windows.Forms.MessageBox.Show(errors+System.Environment.NewLine+'more info at TestSuite\formatter_tests\output\log.txt'); + System.Windows.Forms.MessageBox.Show(errors+System.Environment.NewLine+'more info at TestSuite/formatter_tests/output/log.txt'); Halt; end; end; @@ -230,18 +231,18 @@ end; procedure ClearExeDir; begin - ClearDirByPattern(TestSuiteDir+'\exe','*.*'); - ClearDirByPattern(TestSuiteDir+'\CompilationSamples','*.exe'); - ClearDirByPattern(TestSuiteDir+'\CompilationSamples','*.pdb'); - ClearDirByPattern(TestSuiteDir+'\CompilationSamples','*.pcu'); - ClearDirByPattern(TestSuiteDir+'\pabcrtl_tests','*.exe'); - ClearDirByPattern(TestSuiteDir+'\pabcrtl_tests','*.pdb'); - ClearDirByPattern(TestSuiteDir+'\pabcrtl_tests','*.pcu'); + ClearDirByPattern(TestSuiteDir+PathSeparator+'exe','*.*'); + ClearDirByPattern(TestSuiteDir+PathSeparator+'CompilationSamples','*.exe'); + ClearDirByPattern(TestSuiteDir+PathSeparator+'CompilationSamples','*.pdb'); + ClearDirByPattern(TestSuiteDir+PathSeparator+'CompilationSamples','*.pcu'); + ClearDirByPattern(TestSuiteDir+PathSeparator+'pabcrtl_tests','*.exe'); + ClearDirByPattern(TestSuiteDir+PathSeparator+'pabcrtl_tests','*.pdb'); + ClearDirByPattern(TestSuiteDir+PathSeparator+'pabcrtl_tests','*.pcu'); end; procedure DeletePCUFiles; begin - ClearDirByPattern(TestSuiteDir+'\usesunits','*.pcu'); + ClearDirByPattern(TestSuiteDir+PathSeparator+'usesunits','*.pcu'); end; procedure DeletePABCSystemPCU; @@ -255,7 +256,7 @@ begin var files := Directory.GetFiles(GetLibDir(),'*.pas'); foreach f: string in files do begin - &File.Copy(f, TestSuiteDir+'\CompilationSamples\'+Path.GetFileName(f), true); + &File.Copy(f, TestSuiteDir+PathSeparator+'CompilationSamples'+PathSeparator+Path.GetFileName(f), true); end; end;