mgorny      14/06/19 08:08:10

  Modified:             python-utils-r1.sh
  Log:
  Improve handling of corner cases in python_fix_shebang. Support --force and 
--quiet options, bug #505354. Add tests.

Revision  Changes    Path
1.7                  eclass/tests/python-utils-r1.sh

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/tests/python-utils-r1.sh?rev=1.7&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/tests/python-utils-r1.sh?rev=1.7&content-type=text/plain
diff : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/tests/python-utils-r1.sh?r1=1.6&r2=1.7

Index: python-utils-r1.sh
===================================================================
RCS file: /var/cvsroot/gentoo-x86/eclass/tests/python-utils-r1.sh,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- python-utils-r1.sh  8 Apr 2014 16:05:30 -0000       1.6
+++ python-utils-r1.sh  19 Jun 2014 08:08:10 -0000      1.7
@@ -30,6 +30,33 @@
        tend ${?}
 }
 
+test_fix_shebang() {
+       local from=${1}
+       local to=${2}
+       local expect=${3}
+       local args=( "${@:4}" )
+
+       tbegin "python_fix_shebang${args[@]+ ${args[*]}} from ${from} to ${to} 
(exp: ${expect})"
+
+       echo "${from}" > "${tmpfile}"
+       output=$( EPYTHON=${to} python_fix_shebang "${args[@]}" -q "${tmpfile}" 
2>&1 )
+
+       if [[ ${?} != 0 ]]; then
+               if [[ ${expect} != FAIL ]]; then
+                       echo "${output}"
+                       tend 1
+               else
+                       tend 0
+               fi
+       else
+               [[ $(<"${tmpfile}") == ${expect} ]] \
+                       || eerror "${from} -> ${to}: $(<"${tmpfile}") != 
${expect}"
+               tend ${?}
+       fi
+}
+
+tmpfile=$(mktemp)
+
 inherit python-utils-r1
 
 test_var EPYTHON python2_7 python2.7
@@ -66,4 +93,48 @@
 test_is python_is_python3 jython2.7 1
 test_is python_is_python3 pypy 1
 
+# generic shebangs
+test_fix_shebang '#!/usr/bin/python' python2.7 '#!/usr/bin/python2.7'
+test_fix_shebang '#!/usr/bin/python' python3.4 '#!/usr/bin/python3.4'
+test_fix_shebang '#!/usr/bin/python' pypy '#!/usr/bin/pypy'
+test_fix_shebang '#!/usr/bin/python' jython2.7 '#!/usr/bin/jython2.7'
+
+# python2/python3 matching
+test_fix_shebang '#!/usr/bin/python2' python2.7 '#!/usr/bin/python2.7'
+test_fix_shebang '#!/usr/bin/python3' python2.7 FAIL
+test_fix_shebang '#!/usr/bin/python3' python2.7 '#!/usr/bin/python2.7' --force
+test_fix_shebang '#!/usr/bin/python3' python3.4 '#!/usr/bin/python3.4'
+test_fix_shebang '#!/usr/bin/python2' python3.4 FAIL
+test_fix_shebang '#!/usr/bin/python2' python3.4 '#!/usr/bin/python3.4' --force
+
+# pythonX.Y matching (those mostly test the patterns)
+test_fix_shebang '#!/usr/bin/python2.7' python2.7 '#!/usr/bin/python2.7'
+test_fix_shebang '#!/usr/bin/python2.7' python3.2 FAIL
+test_fix_shebang '#!/usr/bin/python2.7' python3.2 '#!/usr/bin/python3.2' 
--force
+test_fix_shebang '#!/usr/bin/python3.2' python3.2 '#!/usr/bin/python3.2'
+test_fix_shebang '#!/usr/bin/python3.2' python2.7 FAIL
+test_fix_shebang '#!/usr/bin/python3.2' python2.7 '#!/usr/bin/python2.7' 
--force
+test_fix_shebang '#!/usr/bin/pypy' pypy '#!/usr/bin/pypy'
+test_fix_shebang '#!/usr/bin/pypy' python2.7 FAIL
+test_fix_shebang '#!/usr/bin/pypy' python2.7 '#!/usr/bin/python2.7' --force
+test_fix_shebang '#!/usr/bin/jython2.7' jython2.7 '#!/usr/bin/jython2.7'
+test_fix_shebang '#!/usr/bin/jython2.7' jython3.2 FAIL
+test_fix_shebang '#!/usr/bin/jython2.7' jython3.2 '#!/usr/bin/jython3.2' 
--force
+
+# fancy path handling
+test_fix_shebang '#!/mnt/python2/usr/bin/python' python3.4 \
+       '#!/mnt/python2/usr/bin/python3.4'
+test_fix_shebang '#!/mnt/python2/usr/bin/python2' python2.7 \
+       '#!/mnt/python2/usr/bin/python2.7'
+test_fix_shebang '#!/mnt/python2/usr/bin/env python' python2.7 \
+       '#!/mnt/python2/usr/bin/env python2.7'
+test_fix_shebang '#!/mnt/python2/usr/bin/python2 python2' python2.7 \
+       '#!/mnt/python2/usr/bin/python2.7 python2'
+test_fix_shebang '#!/mnt/python2/usr/bin/python3 python2' python2.7 FAIL
+test_fix_shebang '#!/mnt/python2/usr/bin/python3 python2' python2.7 \
+       '#!/mnt/python2/usr/bin/python2.7 python2' --force
+test_fix_shebang '#!/usr/bin/foo' python2.7 FAIL
+
+rm "${tmpfile}"
+
 texit




Reply via email to