Skip to content

Commit c22842a

Browse files
committed
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
1 parent ba5c17e commit c22842a

2 files changed

Lines changed: 24 additions & 4 deletions

File tree

ietf/utils/management/commands/create_group_wikis.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ class Command(BaseCommand):
3131
help = "Create group wikis for WGs, RGs and Areas which don't have one."
3232

3333
option_list = BaseCommand.option_list + (
34-
make_option('--wiki-dir-pattern', dest='wiki_dir_pattern', help='File containing email (default: stdin)'),
34+
make_option('--wiki-dir-pattern', dest='wiki_dir_pattern', help='A pattern with %s placeholder for group wiki path'),
35+
make_option('--svn-dir-pattern', dest='svn_dir_pattern', help='A pattern with %s placeholder for group svn path'),
3536
)
3637

3738
def note(self, msg):
@@ -237,6 +238,7 @@ def handle(self, *filenames, **options):
237238
self.verbosity = options['verbosity']
238239
self.errors = 0
239240
self.wiki_dir_pattern = options.get('wiki_dir_pattern', settings.TRAC_WIKI_DIR_PATTERN)
241+
self.svn_dir_pattern = options.get('svn_dir_pattern', settings.TRAC_SVN_DIR_PATTERN)
240242

241243
if isinstance(self.verbosity, (type(""), type(u""))) and self.verbosity.isdigit():
242244
self.verbosity = int(self.verbosity)
@@ -253,7 +255,7 @@ def handle(self, *filenames, **options):
253255
try:
254256
self.note("Processing group %s" % group.acronym)
255257
group.trac_dir = self.wiki_dir_pattern % group.acronym
256-
group.svn_dir = settings.TRAC_SVN_DIR_PATTERN % group.acronym
258+
group.svn_dir = self.svn_dir_pattern % group.acronym
257259

258260
if not os.path.exists(group.svn_dir):
259261
err = self.create_svn(group.svn_dir)

ietf/utils/tests.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import shutil
55
from StringIO import StringIO
66
from pipe import pipe
7+
from unittest import skipIf
78

89
from textwrap import dedent
910
from email.mime.text import MIMEText
@@ -27,6 +28,14 @@
2728
from ietf.utils.test_runner import get_template_paths
2829
from ietf.group.models import Group
2930

31+
skip_wiki_glue_testing = False
32+
skip_wiki_glue_message = ""
33+
try:
34+
import svn # pyflakes:ignore
35+
except ImportError as e:
36+
skip_wiki_glue_testing = True
37+
skip_wiki_glue_message = " Skipping trac tests: %s" % e
38+
3039
class PyFlakesTestCase(TestCase):
3140

3241
def test_pyflakes(self):
@@ -190,15 +199,20 @@ def check_that_static_tags_resolve(node, origin, checked):
190199
settings.DEBUG = saved_debug
191200

192201

202+
@skipIf(skip_wiki_glue_testing, skip_wiki_glue_message)
193203
class TestWikiGlueManagementCommand(TestCase):
194204

195205
def setUp(self):
196206
self.wiki_dir_pattern = os.path.abspath('tmp-wiki-dir-root/%s')
197207
if not os.path.exists(self.wiki_dir_pattern):
198208
os.mkdir(os.path.dirname(self.wiki_dir_pattern))
209+
self.svn_dir_pattern = os.path.abspath('tmp-svn-dir-root/%s')
210+
if not os.path.exists(self.svn_dir_pattern):
211+
os.mkdir(os.path.dirname(self.svn_dir_pattern))
199212

200213
def tearDown(self):
201214
shutil.rmtree(os.path.dirname(self.wiki_dir_pattern))
215+
shutil.rmtree(os.path.dirname(self.svn_dir_pattern))
202216

203217
def test_wiki_create_output(self):
204218
make_test_data()
@@ -207,12 +221,16 @@ def test_wiki_create_output(self):
207221
state__slug='active'
208222
).order_by('acronym')
209223
out = StringIO()
210-
call_command('create_group_wikis', stdout=out, verbosity=2, wiki_dir_pattern=self.wiki_dir_pattern)
224+
call_command('create_group_wikis', stdout=out, verbosity=2,
225+
wiki_dir_pattern=self.wiki_dir_pattern,
226+
svn_dir_pattern=self.svn_dir_pattern,
227+
)
211228
command_output = out.getvalue()
212229
for group in groups:
213230
self.assertIn("Processing group %s" % group.acronym, command_output)
214231
# Do a bit of verification using trac-admin, too
215-
admin_code, admin_output, admin_error = pipe('trac-admin %s permission list' % (self.wiki_dir_pattern % group.acronym))
232+
admin_code, admin_output, admin_error = pipe(
233+
'trac-admin %s permission list' % (self.wiki_dir_pattern % group.acronym))
216234
self.assertEqual(admin_code, 0)
217235
roles = group.role_set.filter(name_id__in=['chair', 'secr', 'ad'])
218236
for role in roles:

0 commit comments

Comments
 (0)