Activity for PySys System Test Framework

  • Ben Spiller Ben Spiller posted a comment on ticket #4

    Replaced by https://github.com/pysys-test/pysys-test/issues/15

  • Ben Spiller Ben Spiller modified ticket #15

    Inconsistent date format in process monitors

  • Ben Spiller Ben Spiller posted a comment on ticket #15

    Moved to https://github.com/pysys-test/pysys-test/issues/6

  • Ben Spiller Ben Spiller modified ticket #1

    filecopy module does not import pysys.exceptions

  • Ben Spiller Ben Spiller posted a comment on ticket #3

    Not sure exactly what was seen; but things have moved on since 2009 so maybe fine now

  • Ben Spiller Ben Spiller modified ticket #4

    OrderedGrep re-compiles regex every line

  • Ben Spiller Ben Spiller posted a comment on ticket #4

    Yes re-compiling regex per line is not ideal. Will be fixed in upcoming 1.4.0 https://github.com/pysys-test/pysys-test/commit/559a420583dc669633574336eb3b3a96c48a6777

  • Ben Spiller Ben Spiller modified ticket #6

    Test runner should highlight inconsistent tests

  • Ben Spiller Ben Spiller posted a comment on ticket #6

    Not a clear enough description. There shouldn't be any inconsistent results

  • Ben Spiller Ben Spiller modified ticket #9

    Installer cannot locate 64-bit Python installations

  • Ben Spiller Ben Spiller posted a comment on ticket #9

    We're recommending use of standard pip/wheel installation in Python 1.4+

  • Ben Spiller Ben Spiller modified ticket #13

    Support logging from background threads

  • Ben Spiller Ben Spiller posted a comment on ticket #13

    Replaced by https://github.com/pysys-test/pysys-test/issues/5

  • Ben Spiller Ben Spiller posted a comment on ticket #10

    Not sure if this is still valid; detectCore has a catch...warn handler around it now

  • Ben Spiller Ben Spiller modified ticket #16

    quotePath in process/plat-win32/helper can get misled

  • Ben Spiller Ben Spiller posted a comment on ticket #16

    Fix will be in 1.4.0

  • Ben Spiller Ben Spiller modified ticket #5

    No hook for overiding the print summary logic in baserunner

  • Ben Spiller Ben Spiller committed [r1060]

    create final tag (retrospectively) for 1.3.0 release (official release date 13 July 2018; includes setup.py fix for README)

  • Ben Spiller Ben Spiller committed [r1059]

    sigh, have to delete tag again as needed a final (minor) setup.py change to make packaging work on windows

  • PySys System Test Framework PySys System Test Framework released /pysys/1.3.0/pysys-release-README.txt

  • PySys System Test Framework PySys System Test Framework released /pysys/1.3.0/PySys-examples.1.3.0.zip

  • PySys System Test Framework PySys System Test Framework released /pysys/1.3.0/PySys-examples.1.3.0.tar.gz

  • PySys System Test Framework PySys System Test Framework released /pysys/1.3.0/pysys-release.txt

  • PySys System Test Framework PySys System Test Framework released /pysys/1.3.0/PySys-1.3.0.tar.gz

  • PySys System Test Framework PySys System Test Framework released /pysys/1.3.0/PySys-1.3.0.win-amd64.exe

  • Ben Spiller Ben Spiller committed [r1058]

    add short-term hack to allow README.rst to be located during bdist_wininst creation on windows and also sdist creation on linux, since it appears due to our non-standard directory layout the paths are different in both cases

  • Ben Spiller Ben Spiller committed [r1057]

    create final tag (retrospectively) for 1.3.0 release (official release date 13 July 2018)

  • Ben Spiller Ben Spiller committed [r1056]

    delete tag created wrongly

  • Ben Spiller Ben Spiller committed [r1055]

    I noticed calling startProcessMonitor() was taking more than 2 minutes, and found the current implementation enumerates every single thread of every process, in a weird attempt to calculate "% Processor Time"; this is unnecessary as there's a Process performance counter for that, and also incorrect as it ignroes threads that the process may start after the process monitor was added;

  • Ben Spiller Ben Spiller committed [r1054]

    fix a small problem introduced a couple of comits ago where writes of buffered output to stdout ended up going with the logger results in an extra "time INFO " prefix (and as a side-effect caused PYSYS_DISABLE_PRINT_REDIRECTOR to not work); this fix makes the buffered ouptut go through the exact same mechanism as the single threaded output, so safer and simpler

  • Ben Spiller Ben Spiller committed [r1053]

    Fixed a really serious bug in which random log lines might not be written to run.log and/or stdout when running tests multi-threaded (as a result of an underlying python bug https://bugs.python.org/issue35185 - has been in pysys for ages/forever) - fixed with a workaround where we avoid calling add/removehandler for each test and use a single handler to multiplex with threadlocals; not only does this solve the problem but it ought also to be faster since it avoids grabbing process-global logg...

  • Ben Spiller Ben Spiller committed [r1052]

    remove unused import ThreadedFileHandler

  • Ben Spiller Ben Spiller committed [r1051]

    fix PySys_internal_091 print() test for linux utf-8 - interpretation of £ cant be easily verified in python 2 since its locale dependent, so only do that on python 3

  • Ben Spiller Ben Spiller committed [r1050]

    minor improvement to internal testing - changing global os.environ is not safe (sometimes results in concurrency bugs when running in parallel; also means behaviour of later tests is affected by env changes made by earlier tests), so run that bit inside a nested testcase; from 002 simply remove as not used

  • Ben Spiller Ben Spiller committed [r1049]

    rework colorama coloring support to avoid possibilty of infinite loop due to print() stdout redirection (shown by test 001); this is pretty robust now

  • Ben Spiller Ben Spiller committed [r1048]

    inexperienced pysys users often use print() instead of self.log which 'appears' to work fine, but actually results in none of the information being stored in the run.log, making test failures extremely difficult to debug; now pysys will automatically redirect stdout print statements to the logger so they show up in run.log; I added an undocumented env var to disable this behaviour in case of the unlikely event that this causes problems for anyone (can remove this after it's had one or two rel...

  • Ben Spiller Ben Spiller committed [r1047]

    Added pysys.writers.replaceIllegalXMLCharacters utility function, and use it to avoid XMLResultsWriter and JUnitXMLResultsWriter from generating invalid XML if run.log or outcome reason contained characters not permitted by XML (tested by 090);

  • Ben Spiller Ben Spiller committed [r1046]

    add support for customizing the encoding used to write run.log files, and change the pysysexamples/pysysproject.xml file to use utf-8 for run.log files (existing pysys projects are not affected), which is a better default since it's the same across all test machines, and also allows pretty much any character to be encoded unlike the Windows default encoding which loses a lot of that information

  • Ben Spiller Ben Spiller committed [r1045]

    add fileutils.deletedir and deprecate baserunner/writer.purgeDirectory since it's not great to have code copied+pasted in several places, better/more efficient to use standard shutil.rmtree than to roll our own custom implementation, and it should be up to the caller whether they want to ignore errors or not;

  • Ben Spiller Ben Spiller committed [r1044]

    add support for statically configuring default file encodings for common file types e.g. <default-file-encoding pattern="*.xml" encoding="utf-8"/>, and do this for common utf-8 file types in the default project config; also make BaseTest.getDefaultFileEncoding() delegate to runner by default, so you can just override the runner one and have it affect both

  • Ben Spiller Ben Spiller committed [r1043]

    add handy (+%d other failures) suffix to outcome reason to give a summary of how many other problems there were in addition to the reported outcome reason

  • Ben Spiller Ben Spiller committed [r1042]

    Implement some significant (and btw, jolly tricky!) improvements to robustness of I18N character support, especially around logging, as some PySys users were experiencing loss of essential logging lines due to encoding issues. Specific changes:

  • Ben Spiller Ben Spiller committed [r1041]

    fix PySys_internal_059 after stricter checking to avoid expr=None in r1039 (think the test probably never did what it was intended to until now)

  • Ben Spiller Ben Spiller committed [r1040]

    add except block so that an exception in runner.cleanup/cycleCOmplete wouldn't prevent handleKbrdInt from successfully terminating the process

  • Ben Spiller Ben Spiller committed [r1039]

    add assertion to provide a more helpful message if you forget to specify expr= when calling waitForSignal; people quite often seem to make that mistake (e.g. passing the expr as the second positional argument) and waitForSignal with expr='' is non-sensical so this assertion can't do any harm and should help mpeople avoid mnaking mistakes; also added example of a best-practice typical waitForSignal command to the pydoc

  • Ben Spiller Ben Spiller committed [r1038]

    move baserunner cleanup() invocation into a finally block so it always executes even fi something else went wrong first, since failing to cleanup could be dangerous

  • Ben Spiller Ben Spiller committed [r1037]

    improve error handling in runner - while debugging some failure modes recently I found several places where serious errors (e.g. failure to report a test outcome by a writer) might easily go unnoticed by the user, or be reported without information about the test id where the problem was caused; now exceptions from writers will always lead to a non-success exit code and a message at the end of the test run so usuers should always be aware if something went wrong that could lead to missing res...

  • Ben Spiller Ben Spiller committed [r1036]

    print traceback if the console runtest gets an exception (e.g. from runner.start) since this should not happen unless something is seriously broken, and in that case you really need something to go on otherwise it's impossible to debug;

  • Ben Spiller Ben Spiller committed [r1035]

    change version number to 1.3.1 and status to BETA, and add some logic to print the status (if not production) so it's easy to see if a non-final release of pysys is in use

  • Ben Spiller Ben Spiller committed [r1034]

    fix PySys_internal_088 process test

  • Ben Spiller Ben Spiller posted a comment on ticket #5

    Agreed. This is fixed in PySys 1.3.0 which allows you to configure one or more BaseSummaryResultsWriter subclasses in the configured set of writers. If no BaseSummaryResultsWriter subclasses are in the list of configured writers, the the default ConsoleSummaryResultsWriter is added. You can provide your own BaseSummaryResultsWriter in addition or instead of the default ConsoleSummaryResultsWriter.

  • Ben Spiller Ben Spiller posted a comment on ticket #15

    Yes we should do that. The tricky bit is how to fix it without breaking existing projects. Do we need to add a project setting for it (woudl work, but feels like overkill to pollute the default project with that). Could maybe conditionalize on the requires-pysys version from the project, to allow older projects to work but newer ones to get the new behaviour? Suggestions welcome

  • Ben Spiller Ben Spiller posted a comment on ticket #16

    I've fixed this (on a branch) at revision 1033. Expected to be in v1.3.1.

  • Ben Spiller Ben Spiller committed [r1033]

    fix https://sourceforge.net/p/pysys/bugs/16/ - implement a simple and more reliable escaping scheme for startProcess() arguments on windows, and test coverage

  • Ben Spiller Ben Spiller committed [r1032]

    reintroduce fix for cross-contamination of different run.py files - using exec() rather than the module import mechanism avoids unexpected interactions between symbols defined in different run.py files (and I suspect may also allow python to forget about testcases already executed in a way it couldn't when using the module import system); the tests show this approach does not regress existing behaviour and run.py source/line informatin is still available as it was before

  • Ben Spiller Ben Spiller committed [r1031]

    back out exec() fix for namespacing issue for now, as this approach is causing some test failures

  • Ben Spiller Ben Spiller committed [r1030]

    fix exec() to work with pysys3

  • Ben Spiller Ben Spiller committed [r1029]

    fix race condition/bug in which symbols defined in one run.py could leak into another and introduce a dependency such that tests behave differently when run on their own (as a resut of all run.py modules having the same qualified name, "run") - to fix this, just use the standard exec() built-in (which is also a bit simpler) rather than the custom module importer which doesn't have any namespacing capability

  • Ben Spiller Ben Spiller committed [r1028]

    add some more detailed doc for runner.testcomplete and cleanup after seeing some pysys users do some scary things that are not recommended liek using testComplete to checking test log files (which is too late to affect the outcome)

  • Ben Spiller Ben Spiller committed [r1027]

    incldue traceback when reporting errors during cleanup functions as there's not much to go on otherwise

  • Ben Spiller Ben Spiller committed [r1026]

    in response to user feedback, add a skipTest() method, since it apparently wasn't obvious to people how to skip tests and in the vacuum some hacky solutions were developing

  • Ben Spiller Ben Spiller committed [r1025]

    add how to regarding log messages, based on some recent anti-patterns I saw in the userbase

  • Ben Spiller Ben Spiller committed [r1023]

    define ENVSEPERATOR using os.pathsep rather than hardcoding; also I hope this will encourage people to use os.pathsep instead of that constant (which is mis-spelled :))

  • Ben Spiller Ben Spiller committed [r1022]

    add IS_WINDOWS constant, as Windows is so different from other (Unix-y) OSes that a special-case is justified; I've noticed a lot of pysys users are doing error-prone matching against string literals (e.g. OSFAMILY=='windows', PLATFORM in ['win32','win64'] are common) or writing complex expressions using python's platform module; having a constant will reduce mistakes for these common cases;

  • Ben Spiller Ben Spiller committed [r1024]

    add LIBRARY_PATH_ENV_VAR_NAME constant since small change like this make PySys easier to use, helping to abstract OS differences and make it easier to start processes with correct environment

  • Ben Spiller Ben Spiller committed [r1021]

    fix v rare race condition in which newly created cycle dirs are deleted by the cycle=1 job - only affects multi-cycle and multi-threaded mode

  • Ben Spiller Ben Spiller committed [r1020]

    ignoring python3 __pycache__ dirs when looking for testcases almost doubles the speed of walking over a big directory tree

  • Ben Spiller Ben Spiller committed [r1019]

    in the recent python 2 fix to baserunner for unicode strings, downgrade gracefully to character replacement if there are any unrepresentable characters, since seeing something is a lot better than nothing

  • Ben Spiller Ben Spiller committed [r1018]

    fix PySys_internal_085 on python2 to behave the same as python3 - pysys.out is expected to be in the default/preferred encoding

  • Ben Spiller Ben Spiller committed [r1017]

    fix a small bug in the original design of the performance reproter API - it's really common to want to be able to access the runner to get at information such as what mode/config is in use; construct performance reporters after runner construction has completed to enable this; also needed to add **kwargs to performance reporter's constructor (this is generally a good idea for python APIs where subclassed constructors are likely) which we can use to pass in runner=; added a little hack (+test ...

  • Ben Spiller Ben Spiller committed [r1016]

    experience suggests fractional latency numbers liek 0.0000123s are quite hard to read, so introduce NANO_SECONDS unit to give more easily readable output e.g. 10,230 ns

  • Ben Spiller Ben Spiller committed [r1015]

    typo in test title

  • Ben Spiller Ben Spiller committed [r1014]

    now we have testCycle available we can remove the previous hack, which caused rare failures (if hashes of different testobjs happened to collide); code is much neater now

  • Ben Spiller Ben Spiller committed [r1013]

    add __str__ implementations for BaseTest and BaseRunner that provide a nice short human-friendly but unique (across multiple cycle) string for test objects and runners; could be useful for debugging purposes, and for naming externally created resources (e.g. docker images);

  • Ben Spiller Ben Spiller committed [r1012]

    add missing docstring entry for basetest.descriptor

  • Ben Spiller Ben Spiller committed [r1011]

    avoid internal flag __progressWritersEnabled getting shown up in xargs logged by testsummary.xml (it's not needed later, so no need to keep it in the xargs dict)

  • Ben Spiller Ben Spiller committed [r1010]

    docstring change - fix some errors in perfreporter docstring, and add docuemntation for non-static/instance fields

  • Ben Spiller Ben Spiller committed [r1009]

    add assert to give clearer error message if an invalid type is passed for a performance result

  • Ben Spiller Ben Spiller committed [r1008]

    improve PySys_internal_065 perf reporter test to really test with integer, string and float inputs

  • Ben Spiller Ben Spiller committed [r1007]

    Fix bug in which non-ASCII characters in test outcome reasons could prevent the test log being written to disk if executed in multi-threaded mode. Only affects Python 2. Added regresssion test 85 for this case

  • Ben Spiller Ben Spiller committed [r1006]

    fix XMLResultsWriter and JUnitXMLResultsWriter to write XML with UTF-8 encoding (as almost all XML files do; this is also much more useful when aggregating test results than having files in whatever is the default on the OS where the test is running, e.g. iso8859-1 on windows); and also to put the encoding="utf-8" header into the XML files so it's explicit;

  • Ben Spiller Ben Spiller committed [r1005]

    Added optional "errors" parameter to pycompat.openfile to allow easily enabling non-strict handling of unsupported characters for cases where it does not matter (e.g. logging file contents), without needing caller to special-case for python 2 where no encoding is performed and the parameter is not available in the open() method. ProcessUser.logFileContents() now uses errors='replace' since for diagnostic logging a best-effort approach to non-ASCII characters is most helpful.

  • Ben Spiller Ben Spiller committed [r1004]

    startProcess was allowing ProcessError exceptions to be swallowed with only an INFO level message; for improved test robustenss and better outcome reasons, change to add BLOCKED outcome (and abort if configured to), unless ignoreExitStatus=True which indicates user didn't care about the process failing (since ignoreExitStatus=True if not overridden in project config this change preserves backwards compat, and since it's False in our example pysysproject config if gives safer behaviour for peo...

  • Ben Spiller Ben Spiller committed [r1003]

    prepare release notes to accept new items for 1.3.1

  • Ben Spiller Ben Spiller committed [r1002]

    change error handling when loading project - simplify logic to print python trace to stderr in all cases since it doesn't hurt and otherwise it's impossible to debug problems if your project XML has errors in it, since the exception messages (e.g. if you dont supply a required XML attribute there's often no clue in the exception message about which part of your config it was parsing when that happened)

  • Ben Spiller Ben Spiller committed [r1001]

    create branch for post 1.3.0 minor fixes/improvements, pending review

  • Ben Spiller Ben Spiller committed [r1000]

    create tag for final 1.3.0 release (dated 13th July)

  • Ben Spiller Ben Spiller committed [r999]

    delete 1.3.0 release tag as not used yet; will be replaced with final 1.3.0 tag with date 13th July 2018

  • Ben Spiller Ben Spiller committed [r998]

    set final 1.3.0 release date (now 13 July rather than 4 July, includes lastgrep info-level logging fix)

  • Ben Spiller Ben Spiller committed [r997]

    remove inadvertent info-level logging of contents in lastgrep

  • Ben Spiller Ben Spiller committed [r996]

    create tag for final PySys 1.3.0 release

  • Ben Spiller Ben Spiller committed [r995]

    update release version now 1.3 is ready to go

  • Ben Spiller Ben Spiller committed [r994]

    add support for the newly released python 3.7, since it works :)

  • Ben Spiller Ben Spiller committed [r993]

    last-minute testing shows were writing README.rst to the site packages dir with no pysys prefix; thats not great so for this release, put it into the pysys/ dir; when theres time to discuss we can find a better solution, probably by refactoring the source layout to match the conventions/expectations of distutils/setuptools which will give automatic correct handling of README.rst and other artifacts

  • Ben Spiller Ben Spiller committed [r992]

    add failonerror to build.xml so we notice if something fails; use longfile=posix for maximum compatibility as per ant recommendations (now we have some example paths >100 chars)

  • Ben Spiller Ben Spiller committed [r991]

    remove unused imports

  • Ben Spiller Ben Spiller committed [r990]

    print python version number in the usage screen, since in this new multi-python world it's really important to know what you're running (esp since you may need different pythons for different test projects)

  • Ben Spiller Ben Spiller committed [r989]

    non-functional refactoring change - move most of the pysys.py code out to console.py, which is closer to where the associated code for usage of run/make/clean/print is, and also is helpful given I've discovered users may need multiple copies of pysys.py for different python versions; also this change ensures that the pysys version that gets printed is really the pysys that is being used (in case the pysys.py on path and the site-packages used by your default python installation were out of sync)

  • Ben Spiller Ben Spiller committed [r988]

    add native line endings svn property

  • Ben Spiller Ben Spiller committed [r987]

    delete now all changes are on trunk

1 >
MongoDB Logo MongoDB