On recent versions of Debian GNU/Linux, the 'python' command doesn't normally 
exist.  Instead, there are separate 'python3' and 'python2' commands.

As a result, four tests fail in the Subversion test suite as of r1885910, all 
for the same reason: the 'subversion/tests/cmdline/svneditor.py' mock editor 
starts out with "#!/usr/bin/env python" at the top, but there is no 'python' 
program on the system.  See details at footnote [1].

Now, it's true that all the Python-based test files also have "#!/usr/bin/env 
python" at the top.  But in practice they're actually invoked using whatever 
Python is specified by the environment variable SVN_TEST_PYTHON, which is set 
to Python's 'sys.executable' as part of running the tests.

The problem is that SVN_TEST_PYTHON is not used for the invocation of 
svneditor.py -- instead, svneditor.py is just run directly, as per this code in 
subversion/tests/cmdline/svntest/main.py:

  # The location of our mock svneditor script.
  if windows:
    svneditor_script = os.path.join(sys.path[0], 'svneditor.bat')
  else:
    svneditor_script = os.path.join(sys.path[0], 'svneditor.py')

So, one solution would be to just commit this change...

  Index: subversion/tests/cmdline/svntest/main.py
  ===================================================================
  --- subversion/tests/cmdline/svntest/main.py  (revision 1885910)
  +++ subversion/tests/cmdline/svntest/main.py  (working copy)
  @@ -129,7 +129,8 @@
   if windows:
     svneditor_script = os.path.join(sys.path[0], 'svneditor.bat')
   else:
  -  svneditor_script = os.path.join(sys.path[0], 'svneditor.py')
  +  svneditor_script =  sys.executable + " " + \
  +                      os.path.join(sys.path[0], 'svneditor.py')
   
   # Username and password used by the working copies
   wc_author = 'jrandom'

...which, somewhat to my surprise, seems to work :-), at least with preliminary 
testing.  I'd run it through the full test suite before committing, of course.

Another solution would be to create a 'svneditor.sh' that just runs 
'${SVN_TEST_PYTHON} /path/to/svneditor.py $@'.

I'm posting to get others' thoughts on how best to solve this.  If the above 
patch looks good, let me know and I'll test & commit it.

(This is all yak-shaving on the way to a somewhat more interesting, albeit 
minor, patch that I'll post once we get this resolved.)

Best regards,
-Karl

[1] Here are the detailed reports from the failing tests:

    START: commit_tests.py
    [...]
    W: /usr/bin/env: 'python': No such file or directory
    W: subversion/svn/propedit-cmd.c:278,
    W: subversion/libsvn_subr/cmdline.c:1678,
    W: subversion/libsvn_subr/cmdline.c:1615: (apr_err=SVN_ERR_EXTERNAL_PROGRAM)
    W: svn: E200012: 
system('/home/kfogel/src/subversion/subversion/tests/cmdline/svneditor.py 
"svn-prop.tmp"') returned 32512
    W: CWD: /home/kfogel/src/subversion/subversion/tests/cmdline
    W: EXCEPTION: Failure: Command failed: 
"/home/kfogel/src/subversion/subversion/svn/svn propedit -m msg ..."; exit code 
1
    Traceback (most recent call last):
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/main.py", line 
1927, in run
        rc = self.pred.run(sandbox)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/testcase.py", 
line 258, in run
        return self._delegate.run(sandbox)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/testcase.py", 
line 178, in run
        result = self.func(sandbox)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/commit_tests.py", line 
2358, in propedit_with_revprop
        sbox.repo_url)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/actions.py", line 
340, in run_and_verify_svn
        expected_exit, *varargs)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/actions.py", line 
378, in run_and_verify_svn2
        exit_code, out, err = main.run_svn(want_err, *varargs)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/main.py", line 
818, in run_svn
        *(_with_auth(_with_config_dir(varargs))))
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/main.py", line 
445, in run_command
        None, *varargs)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/main.py", line 
666, in run_command_stdin
        '"; exit code ' + str(exit_code))
    Failure: Command failed: "/home/kfogel/src/subversion/subversion/svn/svn 
propedit -m msg ..."; exit code 1
    FAIL:  commit_tests.py 48: set revision props during remote property edit

    START: prop_tests.py
    W: /usr/bin/env: 'python': No such file or directory
    W: subversion/svn/propedit-cmd.c:278,
    W: subversion/libsvn_subr/cmdline.c:1678,
    W: subversion/libsvn_subr/cmdline.c:1615: (apr_err=SVN_ERR_EXTERNAL_PROGRAM)
    W: svn: E200012: 
system('/home/kfogel/src/subversion/subversion/tests/cmdline/svneditor.py 
"svn-prop.tmp"') returned 32512
    W: CWD: /home/kfogel/src/subversion/subversion/tests/cmdline
    W: EXCEPTION: Failure: Command failed: 
"/home/kfogel/src/subversion/subversion/svn/svn propedit editme 
svn-test-work/working_copies/prop_tests-1/A/mu ..."; exit code 1
    Traceback (most recent call last):
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/main.py", line 
1927, in run
        rc = self.pred.run(sandbox)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/testcase.py", 
line 178, in run
        result = self.func(sandbox)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/prop_tests.py", line 88, 
in make_local_props
        os.path.join(wc_dir, 'A', 'mu'))
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/main.py", line 
818, in run_svn
        *(_with_auth(_with_config_dir(varargs))))
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/main.py", line 
445, in run_command
        None, *varargs)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/main.py", line 
666, in run_command_stdin
        '"; exit code ' + str(exit_code))
    Failure: Command failed: "/home/kfogel/src/subversion/subversion/svn/svn 
propedit editme svn-test-work/working_copies/prop_tests-1/A/mu ..."; exit code 1
    FAIL:  prop_tests.py 1: write/read props in wc only (ps, pl, pdel, pe)

    W: /usr/bin/env: 'python': No such file or directory
    W: subversion/svn/propedit-cmd.c:278,
    W: subversion/libsvn_subr/cmdline.c:1678,
    W: subversion/libsvn_subr/cmdline.c:1615: (apr_err=SVN_ERR_EXTERNAL_PROGRAM)
    W: svn: E200012: 
system('/home/kfogel/src/subversion/subversion/tests/cmdline/svneditor.py 
"svn-prop.tmp"') returned 32512
    W: CWD: /home/kfogel/src/subversion/subversion/tests/cmdline
    W: EXCEPTION: Failure: Command failed: 
"/home/kfogel/src/subversion/subversion/svn/svn propedit prop1 -m ..."; exit 
code 1
    Traceback (most recent call last):
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/main.py", line 
1927, in run
        rc = self.pred.run(sandbox)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/testcase.py", 
line 178, in run
        result = self.func(sandbox)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/prop_tests.py", line 
1172, in url_props_ops
        'propedit', prop1, '-m', 'editlog', iota_url)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/main.py", line 
818, in run_svn
        *(_with_auth(_with_config_dir(varargs))))
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/main.py", line 
445, in run_command
        None, *varargs)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/main.py", line 
666, in run_command_stdin
        '"; exit code ' + str(exit_code))
    Failure: Command failed: "/home/kfogel/src/subversion/subversion/svn/svn 
propedit prop1 -m ..."; exit code 1
    FAIL:  prop_tests.py 16: property operations on a URL

    START: update_tests.py
    [...]
    W: /usr/bin/env: 'python': No such file or directory
    W: The external merge tool 
'/home/kfogel/src/subversion/subversion/tests/cmdline/svneditor.py' exited with 
exit code 127.
    W: svn: warning: apr_err=SVN_ERR_EXTERNAL_PROGRAM
    W: svn: warning: W200012: The external merge tool 
'/home/kfogel/src/subversion/subversion/tests/cmdline/svneditor.py' exited with 
exit code 127.
    W: subversion/svn/update-cmd.c:188,
    W: subversion/svn/resolve-cmd.c:157: 
(apr_err=SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE)
    W: svn: E155027: Failure occurred resolving one or more conflicts
    W: CWD: /home/kfogel/src/subversion/subversion/tests/cmdline
    W: EXCEPTION: Failure: Command failed: 
"/home/kfogel/src/subversion/subversion/svn/svn update --accept=launch 
--force-interactive ..."; exit code 1
    Traceback (most recent call last):
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/main.py", line 
1927, in run
        rc = self.pred.run(sandbox)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/testcase.py", 
line 178, in run
        result = self.func(sandbox)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/update_tests.py", line 
3774, in update_accept_conflicts
        rho_path_backup)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/actions.py", line 
340, in run_and_verify_svn
        expected_exit, *varargs)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/actions.py", line 
378, in run_and_verify_svn2
        exit_code, out, err = main.run_svn(want_err, *varargs)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/main.py", line 
818, in run_svn
        *(_with_auth(_with_config_dir(varargs))))
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/main.py", line 
445, in run_command
        None, *varargs)
      File 
"/home/kfogel/src/subversion/subversion/tests/cmdline/svntest/main.py", line 
666, in run_command_stdin
        '"; exit code ' + str(exit_code))
    Failure: Command failed: "/home/kfogel/src/subversion/subversion/svn/svn 
update --accept=launch --force-interactive ..."; exit code 1
    FAIL:  update_tests.py 38: update --accept automatic conflict resolution

Reply via email to