On Mon, Jun 4, 2012 at 9:25 PM, Johan Corveleyn <jcorvel_at_gmail.com> wrote:
> On Thu, May 31, 2012 at 11:28 AM, <rhuijben_at_apache.org> wrote:
>> Author: rhuijben
>> Date: Thu May 31 09:28:13 2012
>> New Revision: 1344616
>>
>> URL: http://svn.apache.org/viewvc?rev=1344616&view=rev
>> Log:
>> Avoid firing up both cmd.exe and python.exe in the most common hook scripts
>> of our test suite on Windows.
>>
>> * subversion/tests/cmdline/svntest/actions.py
>> (enable_revprop_changes,
>> disable_revprop_changes,
>> create_failing_post_commit_hook) Provide a cmd alternative hook script.
>> Print all arguments from disable_revprop_changes() instead of just a set.
>>
>> * subversion/tests/cmdline/svntest/main.py
>> (create_python_hook_script): When a cmd alternative is passed write that
>> to the .bat file instead of calling a python script.
>>
>> Modified:
>> subversion/trunk/subversion/tests/cmdline/svntest/actions.py
>> subversion/trunk/subversion/tests/cmdline/svntest/main.py
>>
>> Modified: subversion/trunk/subversion/tests/cmdline/svntest/actions.py
>> URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svntest/actions.py?rev=1344616&r1=1344615&r2=1344616&view=diff
>> ==============================================================================
>> --- subversion/trunk/subversion/tests/cmdline/svntest/actions.py (original)
>> +++ subversion/trunk/subversion/tests/cmdline/svntest/actions.py Thu May 31 09:28:13 2012
>> @@ -1868,7 +1868,8 @@ def enable_revprop_changes(repo_dir):
>> pre-revprop-change hook script and (if appropriate) making it executable."""
>>
>> hook_path = main.get_pre_revprop_change_hook_path(repo_dir)
>> - main.create_python_hook_script(hook_path, 'import sys; sys.exit(0)')
>> + main.create_python_hook_script(hook_path, 'import sys; sys.exit(0)',
>> + cmd_alternative='@exit /b 0')
>>
>> def disable_revprop_changes(repo_dir):
>> """Disable revprop changes in the repository at REPO_DIR by creating a
>> @@ -1878,8 +1879,12 @@ def disable_revprop_changes(repo_dir):
>> hook_path = main.get_pre_revprop_change_hook_path(repo_dir)
>> main.create_python_hook_script(hook_path,
>> 'import sys\n'
>> - 'sys.stderr.write("pre-revprop-change %s" % " ".join(sys.argv[1:6]))\n'
>> - 'sys.exit(1)\n')
>> + 'sys.stderr.write("pre-revprop-change %s" %'
>> + ' " ".join(sys.argv[1:]))\n'
>> + 'sys.exit(1)\n',
>> + cmd_alternative=
>> + '@echo pre-revprop-change %* 1>&2\n'
>> + '@exit /b 1\n')
>>
>> def create_failing_post_commit_hook(repo_dir):
>> """Create a post-commit hook script in the repository at REPO_DIR that always
>> @@ -1888,7 +1893,10 @@ def create_failing_post_commit_hook(repo
>> hook_path = main.get_post_commit_hook_path(repo_dir)
>> main.create_python_hook_script(hook_path, 'import sys\n'
>> 'sys.stderr.write("Post-commit hook failed")\n'
>> - 'sys.exit(1)')
>> + 'sys.exit(1)\n',
>> + cmd_alternative=
>> + '@echo Post-commit hook failed 1>&2\n'
>> + '@exit /b 1\n')
>>
>> # set_prop can be used for properties with NULL characters which are not
>> # handled correctly when passed to subprocess.Popen() and values like "*"
>>
>> Modified: subversion/trunk/subversion/tests/cmdline/svntest/main.py
>> URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svntest/main.py?rev=1344616&r1=1344615&r2=1344616&view=diff
>> ==============================================================================
>> --- subversion/trunk/subversion/tests/cmdline/svntest/main.py (original)
>> +++ subversion/trunk/subversion/tests/cmdline/svntest/main.py Thu May 31 09:28:13 2012
>> @@ -934,18 +934,23 @@ def canonicalize_url(input):
>> return input
>>
>>
>> -def create_python_hook_script(hook_path, hook_script_code):
>> +def create_python_hook_script(hook_path, hook_script_code,
>> + cmd_alternative=None):
>> """Create a Python hook script at HOOK_PATH with the specified
>> HOOK_SCRIPT_CODE."""
>>
>> if windows:
>> - # Use an absolute path since the working directory is not guaranteed
>> - hook_path = os.path.abspath(hook_path)
>> - # Fill the python file.
>> - file_write("%s.py" % hook_path, hook_script_code)
>> - # Fill the batch wrapper file.
>> - file_append("%s.bat" % hook_path,
>> - "@\"%s\" %s.py %%*\n" % (sys.executable, hook_path))
>> + if cmd_alternative is not None:
>> + file_write("%s.bat" % hook_path,
>> + cmd_alternative)
>> + else:
>> + # Use an absolute path since the working directory is not guaranteed
>> + hook_path = os.path.abspath(hook_path)
>> + # Fill the python file.
>> + file_write("%s.py" % hook_path, hook_script_code)
>> + # Fill the batch wrapper file.
>> + file_write("%s.bat" % hook_path,
>> + "@\"%s\" %s.py %%*\n" % (sys.executable, hook_path))
>> else:
>> # For all other platforms
>> file_write(hook_path, "#!%s\n%s" % (sys.executable, hook_script_code))
>>
> This commit makes prop_tests.py 12 fail for me (on Windows XP).
>
> I haven't looked at it in detail (busy figuring out other problems).
> Bert (or anyone), if you spot (and can fix) the problem, that would be
> most helpful.
>
> Output at default log level:
> [[[
> W: EXPECTED STDERR (regexp):
> .*pre-revprop-change.* 0 jrandom cash-sound A
> W: ACTUAL STDERR:
> W: CWD: R:\test\subversion\tests\cmdline
> W: EXCEPTION: SVNUnmatchedError
> Traceback (most recent call last):
> File "C:\research\svn\client_build\trunk2\subversion\tests\cmdline\svntest\main.py",
> line 1340, in run
> rc = self.pred.run(sandbox)
> File "C:\research\svn\client_build\trunk2\subversion\tests\cmdline\svntest\testcase.py",
> line 254, in run
> return self._delegate.run(sandbox)
> File "C:\research\svn\client_build\trunk2\subversion\tests\cmdline\svntest\testcase.py",
> line 114, in run
> return self._delegate.run(sandbox)
> File "C:\research\svn\client_build\trunk2\subversion\tests\cmdline\svntest\testcase.py",
> line 176, in run
> return self.func(sandbox)
> File "C:\research\svn\client_build\trunk2\subversion\tests\cmdline\prop_tests.py",
> line 822, in revprop_change
> 'cash-sound', 'cha-ching!', sbox.wc_dir)
> File "C:\research\svn\client_build\trunk2\subversion\tests\cmdline\svntest\actions.py",
> line 285, in run_and_verify_svn
> expected_exit, *varargs)
> File "C:\research\svn\client_build\trunk2\subversion\tests\cmdline\svntest\actions.py",
> line 324, in run_and_verify_svn2
> verify.verify_outputs(message, out, err, expected_stdout, expected_stderr)
> File "C:\research\svn\client_build\trunk2\subversion\tests\cmdline\svntest\verify.py",
> line 396, in verify_outputs
> compare_and_display_lines(message, label, expected, actual, raisable)
> File "C:\research\svn\client_build\trunk2\subversion\tests\cmdline\svntest\verify.py",
> line 369, in compare_and_display_lines
> raise raisable
> SVNUnmatchedError
> FAIL: prop_tests.py 12: set, get, and delete a revprop change
> ]]]
>
> See fails.log in attachment with output at DEBUG log-level.
I don't get it.
There is a pre-revprop-change.bat with the right content in
svn-test-work\repositories\prop_tests-12\hooks. If I invoke it
directly, it gives the correct output and exit code:
[[[
R:\test\subversion\tests\cmdline\svn-test-work\repositories\prop_tests-12\hooks>pre-revprop-change
a b c > NUL
pre-revprop-change a b c
R:\test\subversion\tests\cmdline\svn-test-work\repositories\prop_tests-12\hooks>echo
%errorlevel%
1
]]]
But if I execute a revprop change, it doesn't fail:
[[[
R:\test\subversion\tests\cmdline>svn.exe propset --revprop -r 0
cash-sound cha-ching! svn-test-work\working_copies\prop_tests-12
--config-dir R:\test\subversion\tests\cmdline\svn-test-work\local_tmp\config
--password rayjandom --no-auth-cache --username jrandom
property 'cash-sound' set on repository revision 0
]]]
I'm confused.
--
Johan
Received on 2012-06-04 22:54:33 CEST