Made the wiki glue test skippable, in case the python subversion bindings are unavailable. Added creation of temporary directories also for the svn repositores created for wikis during testing.

- Legacy-Id: 12183
This commit is contained in:
Henrik Levkowetz 2016-10-19 21:14:20 +00:00
parent ba5c17ecfd
commit c22842a7c4
2 changed files with 24 additions and 4 deletions

View file

@ -31,7 +31,8 @@ class Command(BaseCommand):
help = "Create group wikis for WGs, RGs and Areas which don't have one."
option_list = BaseCommand.option_list + (
make_option('--wiki-dir-pattern', dest='wiki_dir_pattern', help='File containing email (default: stdin)'),
make_option('--wiki-dir-pattern', dest='wiki_dir_pattern', help='A pattern with %s placeholder for group wiki path'),
make_option('--svn-dir-pattern', dest='svn_dir_pattern', help='A pattern with %s placeholder for group svn path'),
)
def note(self, msg):
@ -237,6 +238,7 @@ class Command(BaseCommand):
self.verbosity = options['verbosity']
self.errors = 0
self.wiki_dir_pattern = options.get('wiki_dir_pattern', settings.TRAC_WIKI_DIR_PATTERN)
self.svn_dir_pattern = options.get('svn_dir_pattern', settings.TRAC_SVN_DIR_PATTERN)
if isinstance(self.verbosity, (type(""), type(u""))) and self.verbosity.isdigit():
self.verbosity = int(self.verbosity)
@ -253,7 +255,7 @@ class Command(BaseCommand):
try:
self.note("Processing group %s" % group.acronym)
group.trac_dir = self.wiki_dir_pattern % group.acronym
group.svn_dir = settings.TRAC_SVN_DIR_PATTERN % group.acronym
group.svn_dir = self.svn_dir_pattern % group.acronym
if not os.path.exists(group.svn_dir):
err = self.create_svn(group.svn_dir)

View file

@ -4,6 +4,7 @@ import types
import shutil
from StringIO import StringIO
from pipe import pipe
from unittest import skipIf
from textwrap import dedent
from email.mime.text import MIMEText
@ -27,6 +28,14 @@ from ietf.utils.test_data import make_test_data
from ietf.utils.test_runner import get_template_paths
from ietf.group.models import Group
skip_wiki_glue_testing = False
skip_wiki_glue_message = ""
try:
import svn # pyflakes:ignore
except ImportError as e:
skip_wiki_glue_testing = True
skip_wiki_glue_message = " Skipping trac tests: %s" % e
class PyFlakesTestCase(TestCase):
def test_pyflakes(self):
@ -190,15 +199,20 @@ class TemplateChecksTestCase(TestCase):
settings.DEBUG = saved_debug
@skipIf(skip_wiki_glue_testing, skip_wiki_glue_message)
class TestWikiGlueManagementCommand(TestCase):
def setUp(self):
self.wiki_dir_pattern = os.path.abspath('tmp-wiki-dir-root/%s')
if not os.path.exists(self.wiki_dir_pattern):
os.mkdir(os.path.dirname(self.wiki_dir_pattern))
self.svn_dir_pattern = os.path.abspath('tmp-svn-dir-root/%s')
if not os.path.exists(self.svn_dir_pattern):
os.mkdir(os.path.dirname(self.svn_dir_pattern))
def tearDown(self):
shutil.rmtree(os.path.dirname(self.wiki_dir_pattern))
shutil.rmtree(os.path.dirname(self.svn_dir_pattern))
def test_wiki_create_output(self):
make_test_data()
@ -207,12 +221,16 @@ class TestWikiGlueManagementCommand(TestCase):
state__slug='active'
).order_by('acronym')
out = StringIO()
call_command('create_group_wikis', stdout=out, verbosity=2, wiki_dir_pattern=self.wiki_dir_pattern)
call_command('create_group_wikis', stdout=out, verbosity=2,
wiki_dir_pattern=self.wiki_dir_pattern,
svn_dir_pattern=self.svn_dir_pattern,
)
command_output = out.getvalue()
for group in groups:
self.assertIn("Processing group %s" % group.acronym, command_output)
# Do a bit of verification using trac-admin, too
admin_code, admin_output, admin_error = pipe('trac-admin %s permission list' % (self.wiki_dir_pattern % group.acronym))
admin_code, admin_output, admin_error = pipe(
'trac-admin %s permission list' % (self.wiki_dir_pattern % group.acronym))
self.assertEqual(admin_code, 0)
roles = group.role_set.filter(name_id__in=['chair', 'secr', 'ad'])
for role in roles: