This is an automated email from the ASF dual-hosted git repository.

humbedooh pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/incubator-ponymail-unit-tests.git

commit fb8025f06013811eed9e2ea3e4f7946dde1eea16
Author: Daniel Gruno <[email protected]>
AuthorDate: Wed Jun 2 14:02:14 2021 +0200

    --dropin for quickly reconfiguring unit tests on the fly
---
 runall.py                |  7 ++++++-
 tests/test-generators.py | 11 +++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/runall.py b/runall.py
index 556eec8..4b735cb 100755
--- a/runall.py
+++ b/runall.py
@@ -20,7 +20,10 @@ if __name__ == '__main__':
     parser.add_argument('--gtype', dest='gtype', type=str, nargs='+',
                         help="Run only specified generators (medium, cluster, 
dkim, full, etc)")
     parser.add_argument('--yamldir', dest='yamldir', type=str, action='store',
-                        help="Load yaml specs from alternate directory")    
+                        help="Load yaml specs from alternate directory")
+    parser.add_argument('--dropin', dest='dropin', type=str, action='store',
+                        help="If set to a specific generator name, replaces 
its unit test results with the current "
+                             "output in the yaml tests")
     parser.add_argument('--nomboxo', dest = 'nomboxo', action='store_true',
                         help = 'Skip Mboxo processing')
     parser.add_argument('--fof', dest='failonfail', action='store_true',
@@ -69,6 +72,8 @@ if __name__ == '__main__':
                     if args.gtype and test_type == 'generators':
                         cliargs.append('--generators')
                         cliargs.extend(args.gtype)
+                    if args.dropin:
+                        cliargs.extend(['--dropin', args.dropin])
                     if args.skipnodate and test_type == 'generators':
                         cliargs.append('--skipnodate')
                     rv = subprocess.check_output(cliargs, env=env)
diff --git a/tests/test-generators.py b/tests/test-generators.py
index aaa3daa..670d732 100755
--- a/tests/test-generators.py
+++ b/tests/test-generators.py
@@ -10,6 +10,7 @@ import yaml
 import argparse
 import collections
 import interfacer
+import time
 import email.utils
 
 parse_html = False
@@ -150,9 +151,17 @@ def run_tests(args):
                         errors += 1
                         sys.stderr.write("""[FAIL] %s, index %2u: Expected 
'%s', got '%s'!\n""" %
                                         (gen_type, key, expected, actual))
+                        if args.dropin and gen_type == args.dropin:
+                            if expected != actual:
+                                test['generated'] = actual
+                            else:
+                                test['alternate'] = actual
                     else:
                         print("[PASS] %s index %u" % (gen_type, key))
         mboxfiles = [] # reset for the next set of tests
+    if args.dropin and errors:
+        sys.stderr.write("Writing replacement yaml as --dropin was 
specified\n")
+        yaml.safe_dump(yml, open(args.load, "w"), sort_keys=False)
     print("[DONE] %u tests run, %u failed." % (tests_run, errors))
     if errors:
         sys.exit(-1)
@@ -174,6 +183,8 @@ def main():
                         help="Root directory of Apache Pony Mail")
     parser.add_argument('--nomboxo', dest = 'nomboxo', action='store_true',
                         help = 'Skip Mboxo processing')
+    parser.add_argument('--dropin', dest = 'dropin', type=str,
+                        help = 'Perform drop-in replacement of unit test 
results for the specified generator type [devs only!]')
     parser.add_argument('--skipnodate', dest = 'skipnodate', 
action='store_true',
                         help = 'Skip emails with no Date: header (useful for 
medium generator tests)')
     args = parser.parse_args()

Reply via email to