Hello community, here is the log from the commit of package python-hammett for openSUSE:Factory checked in at 2020-04-08 19:57:36 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-hammett (Old) and /work/SRC/openSUSE:Factory/.python-hammett.new.3248 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-hammett" Wed Apr 8 19:57:36 2020 rev:2 rq:792493 version:0.5.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-hammett/python-hammett.changes 2020-03-31 17:15:26.759635247 +0200 +++ /work/SRC/openSUSE:Factory/.python-hammett.new.3248/python-hammett.changes 2020-04-08 19:57:57.289179110 +0200 @@ -1,0 +2,9 @@ +Wed Apr 8 14:39:57 UTC 2020 - Marketa Calabkova <mcalabk...@suse.com> + +- update to 0.5.0 + * Implemented support for filtering tests based on markers. Also + supports the marker[argument] syntax that goes beyond what pytest + can do + * Nicer output on failed tests + +------------------------------------------------------------------- Old: ---- hammett-0.4.0.tar.gz New: ---- hammett-0.5.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-hammett.spec ++++++ --- /var/tmp/diff_new_pack.CTLSBN/_old 2020-04-08 19:57:58.029179651 +0200 +++ /var/tmp/diff_new_pack.CTLSBN/_new 2020-04-08 19:57:58.033179654 +0200 @@ -19,7 +19,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %define skip_python2 1 Name: python-hammett -Version: 0.4.0 +Version: 0.5.0 Release: 0 Summary: hammett is a fast python test runner License: BSD-3-Clause ++++++ hammett-0.4.0.tar.gz -> hammett-0.5.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hammett-0.4.0/HISTORY.rst new/hammett-0.5.0/HISTORY.rst --- old/hammett-0.4.0/HISTORY.rst 2020-03-25 15:55:06.000000000 +0100 +++ new/hammett-0.5.0/HISTORY.rst 2020-03-30 15:23:24.000000000 +0200 @@ -1,6 +1,14 @@ Changelog --------- +0.5.0 (2020-03-30) +~~~~~~~~~~~~~~~~~~ + +* Implemented support for filtering tests based on markers. Also supports the marker[argument] syntax that goes beyond what pytest can do + +* Nicer output on failed tests + + 0.4.0 (2020-03-25) ~~~~~~~~~~~~~~~~~~ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hammett-0.4.0/PKG-INFO new/hammett-0.5.0/PKG-INFO --- old/hammett-0.4.0/PKG-INFO 2020-03-25 15:55:33.000000000 +0100 +++ new/hammett-0.5.0/PKG-INFO 2020-03-30 15:23:58.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: hammett -Version: 0.4.0 +Version: 0.5.0 Summary: hammett is a fast python test runner Home-page: https://github.com/boxed/hammett Author: Anders Hovmöller diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hammett-0.4.0/hammett/__init__.py new/hammett-0.5.0/hammett/__init__.py --- old/hammett-0.4.0/hammett/__init__.py 2020-03-25 15:53:14.000000000 +0100 +++ new/hammett-0.5.0/hammett/__init__.py 2020-03-30 15:22:05.000000000 +0200 @@ -4,7 +4,7 @@ import hammett.mark as mark -__version__ = '0.4.0' +__version__ = '0.5.0' MISSING = object() @@ -138,10 +138,33 @@ return self.additional_fixtures_wanted.add(s) -def main(verbose=False, fail_fast=False, quiet=False, filenames=None, drop_into_debugger=False, match=False, durations=False): +def parse_markers(markers): + if markers is None: + return None + + def parse_one(s): + if '[' not in s: + return s, None + + assert s.endswith(']') + base_name, _, name_plus_end_bracket = s.partition('[') + return base_name, name_plus_end_bracket[:-1] + + # So far let's do something stupidly simple + markers = markers.split(';') + return dict(parse_one(m.strip()) for m in markers) + + +def main(verbose=False, fail_fast=False, quiet=False, filenames=None, drop_into_debugger=False, match=False, durations=False, markers=None): import sys + if sys.version_info[:2] < (3, 7): + print('hammett requires python 3.7 or later') + exit(999) + sys.modules['pytest'] = sys.modules['hammett'] + markers = parse_markers(markers) + clean_up_sys_path = False if os.getcwd() not in sys.path: sys.path.insert(0, os.getcwd()) @@ -149,7 +172,7 @@ from hammett.impl import should_stop - global _fail_fast, _verbose, _quiet, results, _drop_into_debugger, _durations + global _fail_fast, _verbose, _quiet, results, _drop_into_debugger, _durations, _markers results = dict(success=0, failed=0, skipped=0, abort=0) _verbose = verbose @@ -215,6 +238,22 @@ if match not in name: continue + if markers is not None: + keep = False + for f_marker in getattr(f, 'hammett_markers', []): + if f_marker.name in markers: + arg = markers[f_marker.name] + if arg is not None: + assert len(f_marker.args) == 1, 'hammett only supports filtering on single arguments to markers right now' + if str(f_marker.args[0]) == arg: + keep = True + break + else: + keep = True + break + if not keep: + continue + execute_test_function(module_name + '.' + name, f, module_request) if should_stop(): break @@ -269,6 +308,7 @@ parser.add_argument('-x', dest='fail_fast', action='store_true', default=False) parser.add_argument('-q', dest='quiet', action='store_true', default=False) parser.add_argument('-k', dest='match', default=None) + parser.add_argument('-m', dest='markers', default=None) parser.add_argument('--durations', dest='durations', action='store_true', default=False) parser.add_argument('--pdb', dest='drop_into_debugger', action='store_true', default=False) parser.add_argument(dest='filenames', nargs='*') @@ -282,6 +322,7 @@ drop_into_debugger=args.drop_into_debugger, match=args.match, durations=args.durations, + markers=args.markers, ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hammett-0.4.0/hammett/impl.py new/hammett-0.5.0/hammett/impl.py --- old/hammett-0.4.0/hammett/impl.py 2020-03-25 15:52:16.000000000 +0100 +++ new/hammett-0.5.0/hammett/impl.py 2020-03-27 13:38:29.000000000 +0100 @@ -197,6 +197,42 @@ return False +def indent(s, levels=1): + ind = ' ' * levels + return '\n'.join(ind + x for x in s.split('\n')) + + +def pretty_format(x, _indent=0): + indent = ' ' * _indent + result = '' + if isinstance(x, dict): + if not x: + return '{}' + result += '{\n' + for k, v in x.items(): + result += f'{indent} {k!r}: {pretty_format(v, _indent + 1)},\n' + result += f'{indent}}}' + return result + elif isinstance(x, list): + if not x: + return '[]' + result += '[\n' + for v in x: + result += f'{indent} {pretty_format(v, _indent + 1)},\n' + result += f'{indent}]' + return result + elif isinstance(x, tuple): + if not x: + return '(,)' + result += '(\n' + for v in x: + result += f'{indent} {pretty_format(v, _indent + 1)},\n' + result += f'{indent})' + return result + else: + return repr(x) + + def analyze_assert(tb): # grab assert source line try: @@ -238,10 +274,10 @@ from astunparse import unparse left = eval(unparse(assert_statement.test.left), tb.tb_frame.f_globals, tb.tb_frame.f_locals) hammett.print('left:') - hammett.print(f' {left!r}') + hammett.print(indent(pretty_format(left))) right = eval(unparse(assert_statement.test.comparators), tb.tb_frame.f_globals, tb.tb_frame.f_locals) hammett.print('right:') - hammett.print(f' {right!r}') + hammett.print(indent(pretty_format(right))) if isinstance(left, str) and isinstance(right, str) and len(left) > 200 and len(right) > 200 and '\n' in left: print() print('--- Diff of left and right assert components ---') @@ -360,7 +396,7 @@ for k, v in local_variables.items(): hammett.print(f'{k}:') try: - hammett.print(' ', repr(v)) + hammett.print(indent(pretty_format(v))) except Exception as e: hammett.print(f' Error getting local variable repr: {e}') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hammett-0.4.0/hammett.egg-info/PKG-INFO new/hammett-0.5.0/hammett.egg-info/PKG-INFO --- old/hammett-0.4.0/hammett.egg-info/PKG-INFO 2020-03-25 15:55:33.000000000 +0100 +++ new/hammett-0.5.0/hammett.egg-info/PKG-INFO 2020-03-30 15:23:56.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: hammett -Version: 0.4.0 +Version: 0.5.0 Summary: hammett is a fast python test runner Home-page: https://github.com/boxed/hammett Author: Anders Hovmöller