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:
parent
ba5c17ecfd
commit
c22842a7c4
|
@ -31,7 +31,8 @@ class Command(BaseCommand):
|
||||||
help = "Create group wikis for WGs, RGs and Areas which don't have one."
|
help = "Create group wikis for WGs, RGs and Areas which don't have one."
|
||||||
|
|
||||||
option_list = BaseCommand.option_list + (
|
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):
|
def note(self, msg):
|
||||||
|
@ -237,6 +238,7 @@ class Command(BaseCommand):
|
||||||
self.verbosity = options['verbosity']
|
self.verbosity = options['verbosity']
|
||||||
self.errors = 0
|
self.errors = 0
|
||||||
self.wiki_dir_pattern = options.get('wiki_dir_pattern', settings.TRAC_WIKI_DIR_PATTERN)
|
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():
|
if isinstance(self.verbosity, (type(""), type(u""))) and self.verbosity.isdigit():
|
||||||
self.verbosity = int(self.verbosity)
|
self.verbosity = int(self.verbosity)
|
||||||
|
@ -253,7 +255,7 @@ class Command(BaseCommand):
|
||||||
try:
|
try:
|
||||||
self.note("Processing group %s" % group.acronym)
|
self.note("Processing group %s" % group.acronym)
|
||||||
group.trac_dir = self.wiki_dir_pattern % 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):
|
if not os.path.exists(group.svn_dir):
|
||||||
err = self.create_svn(group.svn_dir)
|
err = self.create_svn(group.svn_dir)
|
||||||
|
|
|
@ -4,6 +4,7 @@ import types
|
||||||
import shutil
|
import shutil
|
||||||
from StringIO import StringIO
|
from StringIO import StringIO
|
||||||
from pipe import pipe
|
from pipe import pipe
|
||||||
|
from unittest import skipIf
|
||||||
|
|
||||||
from textwrap import dedent
|
from textwrap import dedent
|
||||||
from email.mime.text import MIMEText
|
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.utils.test_runner import get_template_paths
|
||||||
from ietf.group.models import Group
|
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):
|
class PyFlakesTestCase(TestCase):
|
||||||
|
|
||||||
def test_pyflakes(self):
|
def test_pyflakes(self):
|
||||||
|
@ -190,15 +199,20 @@ class TemplateChecksTestCase(TestCase):
|
||||||
settings.DEBUG = saved_debug
|
settings.DEBUG = saved_debug
|
||||||
|
|
||||||
|
|
||||||
|
@skipIf(skip_wiki_glue_testing, skip_wiki_glue_message)
|
||||||
class TestWikiGlueManagementCommand(TestCase):
|
class TestWikiGlueManagementCommand(TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.wiki_dir_pattern = os.path.abspath('tmp-wiki-dir-root/%s')
|
self.wiki_dir_pattern = os.path.abspath('tmp-wiki-dir-root/%s')
|
||||||
if not os.path.exists(self.wiki_dir_pattern):
|
if not os.path.exists(self.wiki_dir_pattern):
|
||||||
os.mkdir(os.path.dirname(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):
|
def tearDown(self):
|
||||||
shutil.rmtree(os.path.dirname(self.wiki_dir_pattern))
|
shutil.rmtree(os.path.dirname(self.wiki_dir_pattern))
|
||||||
|
shutil.rmtree(os.path.dirname(self.svn_dir_pattern))
|
||||||
|
|
||||||
def test_wiki_create_output(self):
|
def test_wiki_create_output(self):
|
||||||
make_test_data()
|
make_test_data()
|
||||||
|
@ -207,12 +221,16 @@ class TestWikiGlueManagementCommand(TestCase):
|
||||||
state__slug='active'
|
state__slug='active'
|
||||||
).order_by('acronym')
|
).order_by('acronym')
|
||||||
out = StringIO()
|
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()
|
command_output = out.getvalue()
|
||||||
for group in groups:
|
for group in groups:
|
||||||
self.assertIn("Processing group %s" % group.acronym, command_output)
|
self.assertIn("Processing group %s" % group.acronym, command_output)
|
||||||
# Do a bit of verification using trac-admin, too
|
# 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)
|
self.assertEqual(admin_code, 0)
|
||||||
roles = group.role_set.filter(name_id__in=['chair', 'secr', 'ad'])
|
roles = group.role_set.filter(name_id__in=['chair', 'secr', 'ad'])
|
||||||
for role in roles:
|
for role in roles:
|
||||||
|
|
Loading…
Reference in a new issue