Looks like I could, so I did!

I pushed a 'pypy' branch to git which, if not perfect, seems to work for me in
some limited testing without breaking the existing test suite.  I'll attach a
diff here for the fun of it.
diff --git a/support/python/detect b/support/python/detect
index 31e23be..4e4e528 100755
--- a/support/python/detect
+++ b/support/python/detect
@@ -1,4 +1,5 @@
 #!/bin/sh
 
 grep-dctrl --quiet -F Source -r '^python3\?-.*$' debian/control || \
-  grep-dctrl --quiet -F Package -r '^python3\?-.*$' debian/control
+  grep-dctrl --quiet -F Package -r '^python3\?-.*$' debian/control || \
+    grep-dctrl --quiet -F Package -r '^pypy-.*$' debian/control
diff --git a/support/python/generate b/support/python/generate
index b6fd61c..96e1966 100755
--- a/support/python/generate
+++ b/support/python/generate
@@ -3,6 +3,7 @@
 module=
 py2_package=
 py3_package=
+pypy_package=
 
 # Try source package
 source_package=$(grep-dctrl -n -s Source -F Source -r '^python3\?-.*$' debian/control || true)
@@ -12,6 +13,12 @@ if [ -n "$source_package" ] ; then
     py3_package=python3-$module
 fi
 
+source_package=$(grep-dctrl -n -s Source -F Source -r '^pypy-.*$' debian/control || true)
+if [ -n "$source_package" ] ; then
+    module=${source_package#python-}
+    pypy_package=pypy-$module
+fi
+
 # Try binary package(s)
 if [ -z "$source_package" ] ; then
     binary_packages=$(grep-dctrl -n -s Package -F Package -r '^python3\?-.*$' debian/control || true)
@@ -31,6 +38,24 @@ if [ -z "$source_package" ] ; then
     fi
 fi
 
+# Try binary package(s)
+if [ -z "$source_package" ] ; then
+    binary_packages=$(grep-dctrl -n -s Package -F Package -r '^pypy-.*$' debian/control || true)
+    if [ -n "$binary_packages" ] ; then
+        for binary_package in $binary_packages ; do
+            module=${binary_package#*-}
+            case $module in
+                *-doc|*-dbg|*-dbgsym|*-dev)
+                    continue
+                ;;
+            esac
+
+            pypy_package=pypy-$module
+            break
+        done
+    fi
+fi
+
 # Python2
 if [ -n "$py2_package" ]; then
     if [ "$(grep-dctrl -n -s Package -F Package -X "$py2_package" debian/control)" ] ; then
@@ -52,3 +77,14 @@ Depends: $py3_package
 EOF
     fi
 fi
+
+# PyPy
+if [ -n "$pypy_package" ]; then
+    if [ $(grep-dctrl -n -s Package -F Package -X "$pypy_package" debian/control) ] ; then
+        cat <<EOF
+Test-Command: cd "\$ADTTMP" ; pypy -c "import $module; print $module"
+Depends: $pypy_package
+
+EOF
+    fi
+fi
diff --git a/test/python_test.sh b/test/python_test.sh
index 578a85f..79d9ce9 100644
--- a/test/python_test.sh
+++ b/test/python_test.sh
@@ -16,6 +16,15 @@ test_python_detect_source_py3() {
   assertTrue 'have py3 test' 'grep --quiet "print(" stdout'
 }
 
+# PyPy is only Python 2 compatible for now.
+test_python_detect_source_pypy() {
+  has 'debian/control' 'Source: python-foo\n\nPackage:pypy-foo'
+  check_run autodep8
+  assertTrue 'get upstream name' 'grep --quiet "import foo;" stdout'
+  assertTrue 'have py2 test' 'grep --quiet "print " stdout'
+  assertFalse 'dont have py3 test' 'grep --quiet "print(" stdout'
+}
+
 test_python_detect_binary_py2() {
   has 'debian/control' 'Source: foo\n\nPackage: python-foo'
   check_run autodep8

Reply via email to