You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ponymail.apache.org by hu...@apache.org on 2020/08/15 13:53:43 UTC

[incubator-ponymail-unit-tests] branch master updated: Work with <= 0.11 of PM

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


The following commit(s) were added to refs/heads/master by this push:
     new bdf6bb4  Work with <= 0.11 of PM
bdf6bb4 is described below

commit bdf6bb45d23a125bee3a23f5117579f841b262af
Author: Daniel Gruno <hu...@apache.org>
AuthorDate: Sat Aug 15 15:53:30 2020 +0200

    Work with <= 0.11 of PM
    
    FWIW, we don't really need to detect in the generate functions, as we
    should be using foal as a reference, but I added some detection
    nonetheless.
    
    This build works with foal, 0.12+formatFlowed patch, fails with 0.11 on
    56 tests (as expected).
---
 tests/test-generators.py | 39 +++++++++++++++++++++++++++++----------
 tests/test-parsing.py    | 37 +++++++++++++++++++++++++++----------
 2 files changed, 56 insertions(+), 20 deletions(-)

diff --git a/tests/test-generators.py b/tests/test-generators.py
index a8f4e89..fdd253f 100644
--- a/tests/test-generators.py
+++ b/tests/test-generators.py
@@ -22,12 +22,19 @@ def generate_specs(args):
         import generators
     except:
         import plugins.generators as generators
-    archie = archiver.Archiver(parse_html=parse_html)
-    expected_parameters = inspect.signature(archie.compute_updates).parameters
+    expected_archie_parameters = inspect.signature(archiver.Archiver).parameters
+    expected_compute_parameters = inspect.signature(archiver.Archiver.compute_updates).parameters
     yml = {}
     for gen_type in generators.generator_names():
+        # <= 0.11:
+        if 'parseHTML' in expected_archie_parameters:
+            archiver.archiver_generator = gen_type
+            archie = archiver.Archiver(parseHTML=parse_html)
+        # current master and foal
+        else:
+            archie = archiver.Archiver(generator=gen_type, parse_html=parse_html)
         sys.stderr.write("Generating specs for type '%s'...\n" % gen_type)
-        archiver.archiver_generator = gen_type
+
         gen_spec = []
         mbox = mailbox.mbox(args.mboxfile, None, create=False)
         for key in mbox.keys():
@@ -35,7 +42,7 @@ def generate_specs(args):
             message = mbox.get(key)
             lid = args.lid or archiver.normalize_lid(message.get('list-id', '??'))
             # Foal parameters
-            if 'raw_msg' in expected_parameters:
+            if 'raw_msg' in expected_compute_parameters:
                 json, _, _, _ = archie.compute_updates(fake_args, lid, False, message, message_raw)
             # PM <= 0.12 parameters
             else:
@@ -60,13 +67,21 @@ def run_tests(args):
     errors = 0
     tests_run = 0
     yml = yaml.safe_load(open(args.load, 'r'))
+    expected_archie_parameters = inspect.signature(archiver.Archiver).parameters
+    expected_compute_parameters = inspect.signature(archiver.Archiver.compute_updates).parameters
+    generator_names = generators.generator_names() if hasattr(generators, 'generator_names') else ['full', 'medium', 'cluster', 'legacy']
     for mboxfile, run in yml['generators'].items():
         for gen_type, tests in run.items():
-            if gen_type not in generators.generator_names():
+            if gen_type not in generator_names:
                 sys.stderr.write("Warning: generators.py does not have the '%s' generator, skipping tests\n" % gen_type)
                 continue
-            archie = archiver.Archiver(generator=gen_type, parse_html=parse_html)
-            expected_parameters = inspect.signature(archie.compute_updates).parameters
+            # <= 0.11:
+            if 'parseHTML' in expected_archie_parameters:
+                archiver.archiver_generator = gen_type
+                archie = archiver.Archiver(parseHTML=parse_html)
+            # current master and foal
+            else:
+                archie = archiver.Archiver(generator=gen_type, parse_html=parse_html)
             mbox = mailbox.mbox(mboxfile, None, create=False)
             no_messages = len(mbox.keys())
             no_tests = len(tests)
@@ -79,11 +94,15 @@ def run_tests(args):
                 message = mbox.get(test['index'])
                 lid = args.lid or archiver.normalize_lid(message.get('list-id', '??'))
                 # Foal parameters
-                if 'raw_msg' in expected_parameters:
+                if 'raw_msg' in expected_compute_parameters:
                     json, _, _, _ = archie.compute_updates(fake_args, lid, False, message, message_raw)
-                # PM <= 0.12 parameters
-                else:
+                # PM 0.12 parameters
+                elif 'args' in expected_compute_parameters:
                     json, _, _, _ = archie.compute_updates(fake_args, lid, False, message)
+                # PM <= 0.11 parameters (missing args)
+                else:
+                    json, _, _, _ = archie.compute_updates(lid, False, message)
+
                 if json['mid'] != test['generated']:
                     errors += 1
                     sys.stderr.write("""[FAIL] %s, index %u: Expected '%s', got '%s'!\n""" %
diff --git a/tests/test-parsing.py b/tests/test-parsing.py
index c5054d0..7ab0b1f 100644
--- a/tests/test-parsing.py
+++ b/tests/test-parsing.py
@@ -18,8 +18,13 @@ fake_args = collections.namedtuple('fakeargs', ['verbose', 'ibody'])(False, None
 
 def generate_specs(args):
     import archiver
-    archie = archiver.Archiver(parse_html=args.html)
-    expected_parameters = inspect.signature(archie.compute_updates).parameters
+    expected_archie_args = inspect.signature(archiver.Archiver).parameters
+    # <= 0.11:
+    if 'parseHTML' in expected_archie_args:
+        archie = archiver.Archiver(parseHTML=args.html)
+    else:
+        archie = archiver.Archiver(parse_html=args.html)
+    expected_compute_parameters = inspect.signature(archie.compute_updates).parameters
     sys.stderr.write("Generating parsing specs for file '%s'...\n" % args.mboxfile)
     items = {}
     for mboxfile in args.mboxfile:
@@ -30,11 +35,14 @@ def generate_specs(args):
             message = mbox.get(key)
             lid = archiver.normalize_lid(message.get('list-id', '??'))
             # Foal parameters
-            if 'raw_msg' in expected_parameters:
+            if 'raw_msg' in expected_compute_parameters:
                 json, _, _, _ = archie.compute_updates(fake_args, lid, False, message, message_raw)
-            # PM <= 0.12 parameters
-            else:
+            # PM 0.12 parameters
+            elif 'args' in expected_compute_parameters:
                 json, _, _, _ = archie.compute_updates(fake_args, lid, False, message)
+            # PM <= 0.11 parameters (missing args)
+            else:
+                json, _, _, _ = archie.compute_updates(lid, False, message)
             body_sha3_256 = None
             if json and json.get('body') is not None:
                 body_sha3_256 = hashlib.sha3_256(json['body'].encode('utf-8')).hexdigest()
@@ -56,8 +64,14 @@ def run_tests(args):
     tests_run = 0
     yml = yaml.safe_load(open(args.load, 'r'))
     parse_html = yml.get('args', {}).get('parse_html', False)
-    archie = archiver.Archiver(parse_html=parse_html)
-    expected_parameters = inspect.signature(archie.compute_updates).parameters
+    expected_archie_parameters = inspect.signature(archiver.Archiver).parameters
+    expected_compute_parameters = inspect.signature(archiver.Archiver.compute_updates).parameters
+    # <= 0.11:
+    if 'parseHTML' in expected_archie_parameters:
+        archie = archiver.Archiver(parseHTML=parse_html)
+    else:
+        archie = archiver.Archiver(parse_html=parse_html)
+
     for mboxfile, tests in yml['parsing'].items():
         mbox = mailbox.mbox(mboxfile, None, create=False)
         no_messages = len(mbox.keys())
@@ -71,11 +85,14 @@ def run_tests(args):
             message = mbox.get(test['index'])
             lid = archiver.normalize_lid(message.get('list-id', '??'))
             # Foal parameters
-            if 'raw_msg' in expected_parameters:
+            if 'raw_msg' in expected_compute_parameters:
                 json, _, _, _ = archie.compute_updates(fake_args, lid, False, message, message_raw)
-            # PM <= 0.12 parameters
-            else:
+            # PM 0.12 parameters
+            elif 'args' in expected_compute_parameters:
                 json, _, _, _ = archie.compute_updates(fake_args, lid, False, message)
+            # PM <= 0.11 parameters (missing args)
+            else:
+                json, _, _, _ = archie.compute_updates(lid, False, message)
             body_sha3_256 = None
             if json and json.get('body') is not None:
                 body_sha3_256 = hashlib.sha3_256(json['body'].encode('utf-8')).hexdigest()