Hi,

On 2023/12/09 0:04, Daniel Sahlberg wrote:

> Den fre 8 dec. 2023 kl 05:40 skrev Yasuhito FUTATSUKI <
> futat...@yf.bsdclub.org>:

<snip>

>> Then, how about this patch? It at least mailer-t1.sh passed both
>> on python=python2.7 and on python=python3.9.
>>
>> [[[
>> Fix inconsistency in path argment on Config.which_group()
>>
>> Previously, we call Config.which_group() with path as bytes in
>> Commit.__init__() and with path as str in Lock.__init__() and
>> in PropChange.__init__(), but Config.which_group handled path
>> argment as bytes. To fix it we only use str as path argment on
>> Config.wich_group().
>>
>> * tools/hook-scripts/mailer/mailer.py
>>   (Config.which_groups): Treat path as str.
>>   (Commit.__init__): convert bytes path into str before calling above.
>>
>> Found by: Ruediger Pluem (rpluem {_AT_} apache.org)
>>
>> Index: tools/hook-scripts/mailer/mailer.py
>> ===================================================================
>> --- tools/hook-scripts/mailer/mailer.py (revision 1913728)
>> +++ tools/hook-scripts/mailer/mailer.py (working copy)
>> @@ -488,7 +488,7 @@
>>      # collect the set of groups and the unique sets of params for the
>> options
>>      self.groups = { }
>>      for path, change in self.changelist:
>> -      for (group, params) in self.cfg.which_groups(path, log):
>> +      for (group, params) in self.cfg.which_groups(to_str(path), log):
>>          # turn the params into a hashable object and stash it away
>>          param_list = sorted(params.items())
>>          # collect the set of paths belonging to this group
>> @@ -1486,9 +1486,9 @@
>>      "Return the path's associated groups."
>>      groups = []
>>      for group, pattern, exclude_pattern, repos_params, search_logmsg_re
>> in self._group_re:
>> -      match = pattern.match(to_str(path))
>> +      match = pattern.match(path)
>>        if match:
>> -        if exclude_pattern and exclude_pattern.match(to_str(path)):
>> +        if exclude_pattern and exclude_pattern.match(path):
>>            continue
>>          params = repos_params.copy()
>>          params.update(match.groupdict())
>> ]]]
>>
>> Cheers,
>> --
>> Yasuhito FUTATSUKI <futat...@yf.bsdclub.org>
>>
> 
> This looks good to me! Thanks for the detailed explaination!

Thank you for the review. However, it turned out that even with this
patch, mailer.py did not work for post-revprop-change hook.
It caused exception like

[[[
svn: E165001: post-revprop-change hook failed (exit code 1) with output:
Traceback (most recent call last):
  File 
"/home/futatuki/tmp/svn-test/mailer_test/repo-smtpoutput/hooks/mailer.py", line 
1593, in <module>
    ret = svn.core.run_app(main, cmd, config_fname, repos_dir,
  File "/usr/local/lib/python3.9/site-packages/svn/core.py", line 324, in 
run_app
    return func(application_pool, *args, **kw)
  File 
"/home/futatuki/tmp/svn-test/mailer_test/repo-smtpoutput/hooks/mailer.py", line 
148, in main
    return messenger.generate(output, pool)
  File 
"/home/futatuki/tmp/svn-test/mailer_test/repo-smtpoutput/hooks/mailer.py", line 
601, in generate
    output.run(self.cfg.get_diff_cmd(group, {
  File 
"/home/futatuki/tmp/svn-test/mailer_test/repo-smtpoutput/hooks/mailer.py", line 
224, in run
    self.write_binary(buf)
AttributeError: 'SMTPOutput' object has no attribute 'write_binary'
]]]

On 1.14.x branch, the patch can be applied clearly, and it worked
for post-revprop-change hook.

Cheers,
-- 
Yasuhito FUTATSUKI <futat...@poem.co.jp>/<futat...@yf.bsdclub.org>

Reply via email to