view test/cmp_helper.py @ 6178:227c05ce2d85

Nuke database on install and fix specification test Need to empty database as part of install_init(). Wasn't a problem for sqlite/anydbm as those got nuked by killing the test directory on each new test. For postgres/mysql in CI it needs to be nuked. Using admin.force=True to get the admin.py module to do it. If that doesn't work can open the instance and nuke it manually. Fields listed when getting specification for class are in different orders for different databases backends and versions. Use sorted lines for comparison.
author John Rouillard <rouilj@ieee.org>
date Tue, 19 May 2020 01:14:48 -0400
parents 19bd4b413ed6
children
line wrap: on
line source

class StringFragmentCmpHelper:
    def compareStringFragments(self, s, fragments):
        """Compare a string agains a list of fragments where a tuple denotes a
        set of alternatives
        """
        pos = 0
        for frag in fragments:
            if type(frag) != tuple:
                self.assertEqual(s[pos:pos + len(frag)], frag)
                pos += len(frag)
            else:
                found = False
                for alt in frag:
                    if s[pos:pos + len(alt)] == alt:
                        pos += len(alt)
                        found = True
                        break

                if not found:
                    l = max(map(len, frag))
                    raise AssertionError('%s != %s' %
                                         (repr(s[pos:pos + l]), str(frag)))
        self.assertEqual(s[pos:], '')

Roundup Issue Tracker: http://roundup-tracker.org/