~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/registry/tests/test_teammembership.py

Improve the tests to add the logs as details.

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
from unittest import TestLoader
13
13
 
14
14
import pytz
 
15
from testtools.content import text_content
15
16
from testtools.matchers import Equals
16
17
import transaction
17
18
from zope.component import getUtility
1055
1056
            'cronscripts/check-teamparticipation.py', shell=True,
1056
1057
            stdin=subprocess.PIPE, stdout=subprocess.PIPE,
1057
1058
            stderr=subprocess.PIPE)
1058
 
        (out, err) = process.communicate()
1059
 
        self.assertEqual(process.returncode, expected_returncode, (out, err))
 
1059
        out, err = process.communicate()
 
1060
        if len(out) > 0:
 
1061
            self.addDetail("stdout", text_content(out))
 
1062
        if len(err) > 0:
 
1063
            self.addDetail("stderr", text_content(err))
 
1064
        self.assertEqual(process.returncode, expected_returncode)
1060
1065
        return out, err
1061
1066
 
1062
1067
    def test_no_output_if_no_invalid_entries(self):
1063
1068
        """No output if there's no invalid teamparticipation entries."""
1064
1069
        out, err = self._runScript()
1065
 
        self.assertEqual((out, err), ('', ''))
 
1070
        self.assertEqual(0, len(out))
 
1071
        self.assertEqual(0, len(err))
1066
1072
 
1067
1073
    def test_report_invalid_teamparticipation_entries(self):
1068
1074
        """The script reports missing/spurious TeamParticipation entries.
1104
1110
        transaction.commit()
1105
1111
 
1106
1112
        out, err = self._runScript()
1107
 
        self.assertEqual(out, '', (out, err))
1108
 
        self.failUnless(
1109
 
            re.search('missing TeamParticipation entries for zzzzz', err),
1110
 
            (out, err))
1111
 
        self.failUnless(
1112
 
            re.search('spurious TeamParticipation entries for zzzzz', err),
1113
 
            (out, err))
1114
 
        self.failUnless(
1115
 
            re.search('not members of themselves:.*zzzzz.*', err),
1116
 
            (out, err))
 
1113
        self.assertEqual(0, len(out))
 
1114
        self.failUnless(
 
1115
            re.search('missing TeamParticipation entries for zzzzz', err))
 
1116
        self.failUnless(
 
1117
            re.search('spurious TeamParticipation entries for zzzzz', err))
 
1118
        self.failUnless(
 
1119
            re.search('not members of themselves:.*zzzzz.*', err))
1117
1120
 
1118
1121
    def test_report_circular_team_references(self):
1119
1122
        """The script reports circular references between teams.
1146
1149
        import transaction
1147
1150
        transaction.commit()
1148
1151
        out, err = self._runScript(expected_returncode=1)
1149
 
        self.assertEqual(out, '', (out, err))
1150
 
        self.failUnless(
1151
 
            re.search('Circular references found', err), (out, err))
 
1152
        self.assertEqual(0, len(out))
 
1153
        self.failUnless(re.search('Circular references found', err))
1152
1154
 
1153
1155
 
1154
1156
class TestCheckTeamParticipationScriptPerformance(TestCaseWithFactory):