Skip to content

Commit bb7d3b4

Browse files
committed
Tweaked the create_group_wiki management command and its test to show more information on failures.
- Legacy-Id: 12273
1 parent 888bd44 commit bb7d3b4

2 files changed

Lines changed: 30 additions & 14 deletions

File tree

ietf/utils/management/commands/create_group_wikis.py

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ def note(self, msg):
4747

4848
def log(self, msg):
4949
syslog.syslog(msg)
50+
self.stdout.write(msg)
5051
self.stderr.write(msg)
5152

5253
# --- svn ---
@@ -75,7 +76,11 @@ def create_svn(self, svn):
7576
self.log(msg)
7677
return msg
7778
err, out= self.svn_admin_cmd("create", svn )
78-
return err
79+
if err:
80+
msg = "Error %s creating svn repository %s:\n %s" % (err, svn, out)
81+
self.log(msg)
82+
return msg
83+
return None
7984

8085
# --- trac ---
8186

@@ -137,12 +142,14 @@ def sync_default_repository(self, group, env):
137142
if repository:
138143
self.note(" Indexing default repository")
139144
repository.sync()
145+
else:
146+
self.log("Trac environment '%s' does not have any repository" % env)
140147

141148
def create_trac(self, group):
142149
if not os.path.exists(os.path.dirname(group.trac_dir)):
143150
msg = "Intended to create '%s', but parent directory is missing" % group.trac_dir
144151
self.log(msg)
145-
return None
152+
return None, msg
146153
options = copy.deepcopy(settings.TRAC_ENV_OPTIONS)
147154
# Interpolate group field names to values in the option settings:
148155
for i in range(len(options)):
@@ -153,7 +160,7 @@ def create_trac(self, group):
153160
# custom pages and settings.
154161
if self.dummy_run:
155162
self.note("Would create Trac for group '%s' at %s" % (group.acronym, group.trac_dir))
156-
return True
163+
return None, None
157164
else:
158165
try:
159166
self.note("Creating Trac for group '%s' at %s" % (group.acronym, group.trac_dir))
@@ -172,11 +179,11 @@ def create_trac(self, group):
172179
# Components (i.e., drafts) will be handled during components
173180
# update later
174181
# Permissions will be handled during permission update later.
175-
return env
182+
return env, None
176183
except TracError as e:
177-
self.log("While creating Trac instance for %s: %s" % (group, e))
178-
raise
179-
return None
184+
msg = "While creating Trac instance for %s: %s" % (group, e)
185+
self.log(msg)
186+
return None, msg
180187

181188
def update_trac_permissions(self, group, env):
182189
if self.dummy_run:
@@ -258,7 +265,7 @@ def add_custom_group_states(self, group, env):
258265

259266
def handle(self, *filenames, **options):
260267
self.verbosity = options['verbosity']
261-
self.errors = 0
268+
self.errors = []
262269
self.wiki_dir_pattern = options.get('wiki_dir_pattern', settings.TRAC_WIKI_DIR_PATTERN)
263270
self.svn_dir_pattern = options.get('svn_dir_pattern', settings.TRAC_SVN_DIR_PATTERN)
264271
self.group_list = options.get('group_list', None)
@@ -294,11 +301,13 @@ def handle(self, *filenames, **options):
294301

295302
if not os.path.exists(group.svn_dir):
296303
err = self.create_svn(group.svn_dir)
297-
self.errors += 1 if err else 0
304+
if err:
305+
self.errors.append(err)
298306

299307
if not os.path.exists(group.trac_dir):
300-
trac_env = self.create_trac(group)
301-
self.errors += 1 if not trac_env else 0
308+
trac_env, msg = self.create_trac(group)
309+
if not trac_env:
310+
self.errors.append(msg)
302311
else:
303312
if not self.dummy_run:
304313
trac_env = Environment(group.trac_dir)
@@ -310,9 +319,9 @@ def handle(self, *filenames, **options):
310319
self.update_trac_components(group, trac_env)
311320

312321
except Exception as e:
313-
self.errors += 1
322+
self.errors.append(e)
314323
self.log("While processing %s: %s" % (group.acronym, e))
315324
raise
316325

317326
if self.errors:
318-
raise CommandError("There were %s failures in WG Trac creation, see syslog %s for details." % (self.errors, logname))
327+
raise CommandError("There were %s failures in WG Trac creation:\n %s" % (len(self.errors), "\n ".join(self.errors)))

ietf/utils/tests.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,10 @@ def check_that_static_tags_resolve(node, origin, checked):
203203
class TestWikiGlueManagementCommand(TestCase):
204204

205205
def setUp(self):
206+
# We create temporary wiki and svn directories, and provide them to the management
207+
# command through command line switches. We have to do it this way because the
208+
# management command reads in its own copy of settings.py in its own python
209+
# environment, so we can't modify it here.
206210
self.wiki_dir_pattern = os.path.abspath('tmp-wiki-dir-root/%s')
207211
if not os.path.exists(os.path.dirname(self.wiki_dir_pattern)):
208212
os.mkdir(os.path.dirname(self.wiki_dir_pattern))
@@ -221,11 +225,14 @@ def test_wiki_create_output(self):
221225
state__slug='active'
222226
).order_by('acronym')
223227
out = StringIO()
224-
call_command('create_group_wikis', stdout=out, verbosity=2,
228+
err = StringIO()
229+
call_command('create_group_wikis', stdout=out, stderr=err, verbosity=2,
225230
wiki_dir_pattern=self.wiki_dir_pattern,
226231
svn_dir_pattern=self.svn_dir_pattern,
227232
)
228233
command_output = out.getvalue()
234+
command_errors = err.getvalue()
235+
self.assertEqual("", command_errors)
229236
for group in groups:
230237
self.assertIn("Processing group '%s'" % group.acronym, command_output)
231238
# Do a bit of verification using trac-admin, too

0 commit comments

Comments
 (0)