Commit Graph

106 Commits

Author SHA1 Message Date
pierre
f36ac3adbd Use GetProcessId number for UniqueSuffix if -L is used without parameter
git-svn-id: trunk@39390 -
2018-07-05 11:11:15 +00:00
pierre
b6e22a4757 Use old Copy procedure with 3 parameters
git-svn-id: trunk@39176 -
2018-06-05 21:36:12 +00:00
pierre
450f62efcc Move GetToken function to testu unit
git-svn-id: trunk@38684 -
2018-04-04 21:27:07 +00:00
pierre
a07b191847 Move several path related functions from dotest program to testu unit for use in dosbox_wrapper program
git-svn-id: trunk@38648 -
2018-03-30 07:59:14 +00:00
svenbarth
c7df4d3d2f * implement support for copying a central, pre-created configuration file for a test
git-svn-id: trunk@36992 -
2017-08-20 20:23:50 +00:00
svenbarth
c9be061921 * put test files that are outside of the tests directory into a "root" subdirectory of tests
git-svn-id: trunk@36837 -
2017-08-04 13:49:02 +00:00
pierre
f216c359bd Always consider Compilation raised exception internally as an Internal Error
git-svn-id: trunk@34419 -
2016-09-03 10:08:39 +00:00
pierre
a0713632a9 Consider a 'Compilation raised exception internally' without Fatal nor Error message as an InternalError
git-svn-id: trunk@34415 -
2016-09-02 21:25:46 +00:00
pierre
ee3d204b72 * Files added in %FILES need to be copied to destination directory even if UniqueSuffix is empty, as execution directory is different from source directory
git-svn-id: trunk@34257 -
2016-08-08 14:49:36 +00:00
pierre
bf97137be4 Add aliases $nosharedlib,$nounicode,$nothread to SkipTarget TConfig field
git-svn-id: trunk@34075 -
2016-07-06 05:52:23 +00:00
pierre
433da1b199 Add msdos and win16 to the list of target OS for which TargetHasDosStylesDirectories
git-svn-id: trunk@33830 -
2016-05-28 07:26:10 +00:00
pierre
8c5adb86cd * Add waiting time in case of access error on windows OS
git-svn-id: trunk@32952 -
2016-01-16 01:08:12 +00:00
Jonas Maebe
f4a580d669 * don't fail if multiple dotests try to create the same directory in parallel
git-svn-id: trunk@30220 -
2015-03-14 18:36:37 +00:00
Jonas Maebe
ff25f5c923 * set DYLD_LIBRARY_PATH instead of LD_LIBRARY_PATH on Darwin
git-svn-id: trunk@29586 -
2015-01-30 19:31:28 +00:00
pierre
ddf1a3ea76 Set filemode to READ_ONLY for CopyFile source and correct error in previous commit
git-svn-id: trunk@29273 -
2014-12-12 16:27:40 +00:00
pierre
5240a309e0 Retry opening using read only mode for input file in CopyFile function, never generate an error
git-svn-id: trunk@29272 -
2014-12-12 14:43:58 +00:00
Tomas Hajny
8adacb096e * do not call mkdir with trailing directory separator and do not silently ignore errors in MkDir
git-svn-id: trunk@28816 -
2014-10-13 21:51:03 +00:00
Jonas Maebe
4f1207f603 + support for specifying an optional command line parameter to use during a
recompile of a test

git-svn-id: trunk@26955 -
2014-03-04 19:42:35 +00:00
pierre
bd91a8da7e Force SrcExeExt for prog parameter in ExecuteRemote function
git-svn-id: trunk@26208 -
2013-12-10 08:41:30 +00:00
florian
74880f639a * msdos is a 8.3 target as well
git-svn-id: branches/i8086@24097 -
2013-03-31 19:20:20 +00:00
yury
e0a70d0510 * Do not copy a library to a remote target if this library name is specified using %DELFILES directive.
git-svn-id: branches/targetandroid@23489 -
2013-01-22 14:18:56 +00:00
yury
fbb0b48ad6 * Implemented { %DELFILES file1 file2 ... } directive for tests. Primarily it is needed to delete shared libraries used by tests when TEST_DELTEMP=1. When testing on a real Android device, it is not good to run tests on flash memory partitions. Android devices have 1Mb RAM based tempfs partition for /tmp folder, which is ideal for running tests. Since 1Mb is very small size these days, it is needed to clean all test leftovers. Test shared libraries are the biggest leftovers and this new DELFILES directive will help to delete them.
* During remote execution, use && as a command separator after important commands such as CD to ensure that the command succeeded before running other commands. Group other commands using curly braces { }.

git-svn-id: branches/targetandroid@23488 -
2013-01-22 13:47:52 +00:00
yury
4902dd2f99 * Do not pass -f switch for rm when testing via adb, since default android shell do not support -f switch.
git-svn-id: branches/targetandroid@23484 -
2013-01-22 09:53:41 +00:00
yury
32551f3c6b * Fixed running library tests on android.
git-svn-id: branches/targetandroid@23385 -
2013-01-15 08:20:43 +00:00
yury
663f354471 * Support for running tests on a remote Android device using ADB.
git-svn-id: branches/targetandroid@23226 -
2012-12-27 08:17:06 +00:00
Jonas Maebe
04df0d537e * more finegrained parallelism support for testsuite runs: the tests are no
longer split per directory, but in chunks of 100 tests (configurable via
    the new CHUNKSIZE=xxx Makefile parameter), which then all can be checked
    in parallel
   o dependencies between tests are handled by always putting tests whose
     name is the same except for the last character into the same chunk
   o as previously, -jx can only be used for the "all" target, other targets
     cannot be executed in parallel
   o the "units" directory has been renamed "tstunits" because otherwise
     "make distclean" will remove it entirely now that the main tests
     makefile also compiles a program

git-svn-id: trunk@21479 -
2012-06-03 17:56:28 +00:00
Jonas Maebe
252483ffd8 + support for running the testsuite in parallel. Note that only the "all"
target can be run in parallel, so "clean", "digest" and/or "dbdigest"
    have to be run in separate make invocations if you wish to use -j for
    running the testsuite

git-svn-id: trunk@21406 -
2012-05-28 09:14:56 +00:00
Jonas Maebe
d68d9ba1a0 * don't pass -blibpath parameter for %needlibrary tests on AIX: the linker
doesn't recognise it (even though it's documented) and it's not needed

git-svn-id: trunk@20822 -
2012-04-11 18:05:02 +00:00
Jonas Maebe
9efe09a827 + aix support for testsuite helper programs
git-svn-id: trunk@20806 -
2012-04-11 18:02:23 +00:00
pierre
c5f9b66e51 * Fix bug in DelOptions leading to infinite loop:(
git-svn-id: trunk@20721 -
2012-04-06 15:15:48 +00:00
pierre
c968fcbfaf * Fix PuTTY plink usage with -load option
git-svn-id: trunk@20703 -
2012-04-04 04:56:20 +00:00
pierre
0658a6ee88 * Move + after objfpc to use ansistrings
git-svn-id: trunk@20644 -
2012-03-28 08:10:46 +00:00
pierre
88b00552a2 + Add support for target specific options
example:  %OPT=-gl win32%-WN
    if % is found in OPT list, the string after % is only added
    to the compiler options if current target is
    contained in the list of the string before the % sign.
  + Add %DELOPT dotest option.
    can be used in two variants
    %DELOPT=-Crio
    will suppress -Criot from TEST_OPT if it appears exactly
    (-Criot will not match).
    %DELOPT=-C* will suppress all options starting with -C.

git-svn-id: trunk@20640 -
2012-03-27 14:26:24 +00:00
pierre
2e4b7ae05c Apply fixes from Sven Barth
git-svn-id: trunk@19686 -
2011-11-25 16:53:20 +00:00
pierre
e366c013e3 * fix -rpath passing to linker for Windows OS by
avoiding use of single quotes.
  * Use 'ulimit -t ' instead of timeout for bash shells.

git-svn-id: trunk@19477 -
2011-10-12 12:33:24 +00:00
pierre
24d489f7f7 * Lowercase CompilerCPU and CompilerTarget
at startup to avoid need of constant use of lowercase function.
 + Added RemoteShell, RemoteShellBase and RemoteShellNeedsExport to
   be able to set LD_LIBRARY_PATH on remote connections.
   (Other checks might be necessary to avoid use of wrong environment
    settings for other shells).
 + TargetIsUnix: New variable, based on UNIX presence within
   target_info.extadefines field.

 + SpliTFileBase: New function returning only base part.

 + LibraryExists: New function to see if a library was created,
   Library name is also constructed based on target_info fields.
 * ExecuteRemote,ExecuteEmulated: moved to global scope to allow use at start
   to check type of shell used.
 * RunExecutable: Adapted to set env. varaible LD_LIBRARY_PATH for remote
   connections.
 + MaybeCopyFiles: New function to separate file copy operations.
 + SetRemoteConfiguration: New function to set RemoteShellXXX variables.
 * RunTest: Use LibraryExists to avoid running a library
   and possibly copy library to remote.

git-svn-id: trunk@19331 -
2011-10-03 06:23:38 +00:00
pierre
1c2a5f9819 + Update all Makefile's modified by
change in utils/fpcm/fpcmake.ini in prevous commit.

  Adapt also other files to that change:

  * compiler/globals.pas: Replace $FPCTARGET by os_string if
  tf_use_8_3 flag is set for target_info also.

  * tests/Makefile.fpc: Modify TEST_TARGETSUFFIX in the same way
  as TARGETSUFFIX was modified in previous commit.

  * tests/utils/dotest.pp:
    + New variable UseOSOnly, set to true if only target OS name
    should be used for subdirectories.

git-svn-id: trunk@18228 -
2011-08-16 20:10:19 +00:00
pierre
c529921fc8 * clarify environment processing
git-svn-id: trunk@17942 -
2011-07-06 16:23:10 +00:00
pierre
405655ba60 + Skip library tests for go32v2 target
git-svn-id: trunk@17817 -
2011-06-24 10:11:19 +00:00
pierre
256c58d670 * Fix SetTargetDirectoriesStyle , needed a call to GetCompilerTarget first
git-svn-id: trunk@17796 -
2011-06-22 15:42:58 +00:00
pierre
9f919b942a + Support !ENV_VAR option and separate ExeExt for target from SrcExeExt for cross-testing
git-svn-id: trunk@17696 -
2011-06-08 14:55:30 +00:00
Jonas Maebe
e8f654ffa5 * fixed ForceExtension() after r16905 in case the input did not have an
exitension (it cut off the last character of the filename in that case)

git-svn-id: trunk@16911 -
2011-02-12 21:13:51 +00:00
pierre
acb2aca3d0 * Remove limitations to 255 chars of shortstrings
* Better handle relative remotepath:
   - use cd to go to this path,
   - but call executable using only ./execfilename
 * Keep .exe suffix for cygwin style ssh for go32v2, win32 or win64 targets

git-svn-id: trunk@16905 -
2011-02-11 10:47:21 +00:00
pierre
e3b56a1bcb + TargetHasDosStyleDirectories, TargetAmigaLike,
TargetIsMacOS: New variables, used in new function IsAbsolute.
  SetTargetDirectoriesStyle;, IsMacFullPath, IsAbsolute: New functions.
  CopyFile: Changed from procedure to function returning the
  number of copied chars.
  RunCompiler: Add compilation type for benchmark -D option.
  RunExecutable: Add execution time for benchmark -D option.
  Also report Exitcode on failure if no output is written
  (i.e. CopyFile returns zero written chars).
  HelpScreen function: Order options alphabetically.
  Add new -D benchmark option.

git-svn-id: trunk@16757 -
2011-01-13 14:06:24 +00:00
pierre
a440104065 + NEEDEDAFTER to avoid deleting created files if needed for another test
git-svn-id: trunk@14405 -
2009-12-11 19:27:14 +00:00
florian
b98ee089a4 o accelerate testing
+ support multiple files on the dotest command line
  * tests are passed in directory wise batches on OSes supporting long command lines

git-svn-id: trunk@13501 -
2009-08-08 19:47:32 +00:00
Jonas Maebe
060d81b8fa Merged revisions 11878,11881-11882,11889,11891-11893,11895,11899-11902,11935,11938,12212,12304,12308-12310,12316,12330-12332,12334,12339-12340 via svnmerge from
svn+ssh://jonas@svn.freepascal.org/FPC/svn/fpc/branches/wpo

........
r11878 | jonas | 2008-10-11 02:25:18 +0200 (Sat, 11 Oct 2008) | 19 lines

  + initial implementation of whole-program optimisation framework
  + implementation of whole-program devirtualisation
  o use:
     a) generate whole-program optimisation information (no need
        to completely compile the program and all of its units
        with -OW/-FW, only the main program is sufficient)
      fpc -OWdevirtcalls -FWmyprog.wpo myprog
     b) use it to optimise the program
      fpc -B -Owdevirtcalls -Fwmyprog.wpo myprog
     (the -B is not required, but only sources recompiled during
      the second pass will actually be optimised -- if you want,
      you can even rebuild the rtl devirtualised for a particular 
      program; and these options can obviously also be used         
      together with regular optimisation switches)
  o warning:
    - there are no checks yet to ensure that you do not use 
      units optimised for a particular program with another
      program (or with a changed version of the same program)

........
r11881 | jonas | 2008-10-11 19:35:52 +0200 (Sat, 11 Oct 2008) | 13 lines

  * extracted code to detect constructed class/object types from
    tcallnode.gen_vmt_tree into its own method to avoid clutter
  * detect x.classtype.create constructs (with classtype = the
    system.tobject.classtype method), and treat them as if a
    "class of x" has been instantiated rather than a
    "class of tobject". this required storing the instantiated
    classrefs in their own array though, because at such a
    point we don't have a "class of x" tdef available (so
    now "x", and all other defs instantiated via a classref,
    are now stored as tobjectdefs in a separate array)
  + support for devirtualising class methods (including
    constructors)

........
r11882 | jonas | 2008-10-11 20:44:02 +0200 (Sat, 11 Oct 2008) | 7 lines

  + -Owoptvmts whole program optimisation which replaces vmt entries
    with method names of child classes in case the current class'
    method can never be called (e.g., because this class is never
    instantiated). As a result, such methods can then be removed
    by dead code removal/smart linking (not much effect for either
    the compiler, lazarus or a trivial lazarus app though).

........
r11889 | jonas | 2008-10-12 14:29:54 +0200 (Sun, 12 Oct 2008) | 2 lines

  * some comment fixes

........
r11891 | jonas | 2008-10-12 18:49:13 +0200 (Sun, 12 Oct 2008) | 4 lines

  * fixed twpofilereader.getnextnoncommentline() when reusing a previously
    read line
  * fixed skipping of unnecessary wpo feedback file sections

........
r11892 | jonas | 2008-10-12 23:42:43 +0200 (Sun, 12 Oct 2008) | 31 lines

  + symbol liveness wpo information extracted from smartlinked programs
    (-OW/-Owsymbolliveness)
  + use symbol liveness information to improve devirtualisation (don't
    consider classes created in code that has been dead code stripped).
    This requires at least two passes of using wpo (first uses dead code
    info to locate classes that are constructed only in dead code,
    second pass uses this info to potentially further devirtualise).
    I.e.:
     1) generate initial liveness and devirtualisation feedback
       fpc -FWtt.wpo -OWall tt.pp -Xs- -CX -XX
     2) use previously generated feedback, and regenerate new feedback
        based on this (i.e., disregard classes created in dead code)
       fpc -FWtt-1.wpo -OWall -Fwtt.wo -Owall tt.pp -Xs- -CX -XX
     3) use the newly generated feedback (in theory, it is possible
        that even more opportunities pop up afterwards; you can
        continue until the program does not get smaller anymore)
       fpc -Fwtt-1.wpo -Owall tt.pp -CX -XX
  * changed all message() to cgmessage() calls so the set codegenerror
  * changed static fsectionhandlers field to a regular field called
    fwpocomponents
  * changed registration of wpocomponents: no longer happens in the
    initialization section of their unit, but in the InitWpo routine
    (which has been moved from the woinfo to the wpo unit). This way
    you can register different classes based on the target/parameters.
  + added static method to twpocomponentbase for checking whether
    the command line parameters don't conflict with the requested
    optimisations (e.g. generating liveness info requires that
    smartlinking is turned on)
  + added static method to twpocomponentbase to request the
    section name

........
r11893 | jonas | 2008-10-12 23:53:57 +0200 (Sun, 12 Oct 2008) | 3 lines

  * fixed comment error (twpodeadcodeinfo keeps a list of live,
    not dead symbols)

........
r11895 | jonas | 2008-10-13 00:13:59 +0200 (Mon, 13 Oct 2008) | 2 lines

  + documented -OW<x>, -Ow<x>, -FW<x> and -Fw<x> wpo parameters

........
r11899 | jonas | 2008-10-14 22:14:56 +0200 (Tue, 14 Oct 2008) | 2 lines

  * replaced hardcoded string with objdumpsearchstr constant

........
r11900 | jonas | 2008-10-14 22:15:25 +0200 (Tue, 14 Oct 2008) | 2 lines

  * reset wpofeedbackinput and wpofeedbackoutput in wpodone

........
r11901 | jonas | 2008-10-14 22:16:07 +0200 (Tue, 14 Oct 2008) | 2 lines

  * various additional comments and comment fixes

........
r11902 | jonas | 2008-10-15 18:09:42 +0200 (Wed, 15 Oct 2008) | 5 lines

  * store vmt procdefs in the ppu files so we don't have to use a hack to
    regenerate them for whole-program optimisation
  * fixed crash when performing devirtualisation optimisation on programs
    that do not construct any classes/objects with optimisable vmts

........
r11935 | jonas | 2008-10-19 12:24:26 +0200 (Sun, 19 Oct 2008) | 4 lines

  * set the vmt entries of non-class virtual methods of not instantiated
    objects/classes to FPC_ABSTRACTERROR so the code they refer to can
    be thrown away if it is not referred to in any other way either

........
r11938 | jonas | 2008-10-19 20:55:02 +0200 (Sun, 19 Oct 2008) | 7 lines

  * record all classrefdefs/objdefs for which a loadvmtaddrnode is generated,
    and instead of marking all classes that derive from instantiated
    classrefdefs as instantiated, only mark those classes from the above
    collection that derive from instantiated classrefdefs as
    instantiated (since to instantiate a class, you have to load its vmt
    somehow -- this may be broken by using assembler code though)

........
r12212 | jonas | 2008-11-23 12:26:34 +0100 (Sun, 23 Nov 2008) | 3 lines

  * fixed to work with the new vmtentries that are always available and
    removed previously added code to save/load vmtentries to ppu files

........
r12304 | jonas | 2008-12-05 22:23:30 +0100 (Fri, 05 Dec 2008) | 4 lines

  * check whether the correct wpo feedback file is used in the current
    compilation when using units that were compiled using wpo information
    during a previous compilation run

........
r12308 | jonas | 2008-12-06 18:03:39 +0100 (Sat, 06 Dec 2008) | 2 lines

  * abort compilation if an error occurred during wpo initialisation

........
r12309 | jonas | 2008-12-06 18:04:28 +0100 (Sat, 06 Dec 2008) | 3 lines

  * give an error message instead of crashing with an io exception if the
    compiler is unable to create the wpo feedback file specified using -FW

........
r12310 | jonas | 2008-12-06 18:12:43 +0100 (Sat, 06 Dec 2008) | 3 lines

  * don't let the used wpo feedback file influence the interface crc (there's
    a separate check for such changes)

........
r12316 | jonas | 2008-12-08 19:08:25 +0100 (Mon, 08 Dec 2008) | 3 lines

  * document the format of the sections of the wpo feedback file inside the
    feedback file itself

........
r12330 | jonas | 2008-12-10 22:26:47 +0100 (Wed, 10 Dec 2008) | 2 lines

  * use sysutils instead of dos to avoid command line length limits

........
r12331 | jonas | 2008-12-10 22:31:11 +0100 (Wed, 10 Dec 2008) | 3 lines

  + support for testing whole program optimisation tests (multiple
    compilations using successively generated feedback files)

........
r12332 | jonas | 2008-12-10 22:31:40 +0100 (Wed, 10 Dec 2008) | 2 lines

  + whole program optimisation tests

........
r12334 | jonas | 2008-12-10 22:38:07 +0100 (Wed, 10 Dec 2008) | 2 lines

  - removed unused local variable

........
r12339 | jonas | 2008-12-11 18:06:36 +0100 (Thu, 11 Dec 2008) | 2 lines

  + comments for newly added fields to tobjectdef for devirtualisation

........
r12340 | jonas | 2008-12-11 18:10:01 +0100 (Thu, 11 Dec 2008) | 2 lines

  * increase ppu version (was no longer different from trunk due to merging)

........

git-svn-id: trunk@12341 -
2008-12-11 17:40:18 +00:00
Jonas Maebe
c2e3b7067f + added {$goto on} so it still compiles on systems without a
default config file (or one without -Sg in it)

git-svn-id: trunk@10468 -
2008-03-09 19:34:22 +00:00
micha
b96823997d + add "FILES" variable for testsuite tests: list of files required by test needing to be copied to remote target
git-svn-id: trunk@10467 -
2008-03-09 18:25:25 +00:00
florian
d88847dc14 * ignore -R when doing emulator based testing
git-svn-id: trunk@9735 -
2008-01-13 14:57:05 +00:00