[GRASS-dev] [GRASS GIS] #3783: Python 3: ./raster/r.patch/testsuite/test_rpatch_artificial.py is broken

GRASS GIS trac at osgeo.org
Wed Mar 6 23:42:28 PST 2019


#3783: Python 3: ./raster/r.patch/testsuite/test_rpatch_artificial.py is broken
--------------------------+-------------------------
  Reporter:  pmav99       |      Owner:  grass-dev@…
      Type:  defect       |     Status:  new
  Priority:  normal       |  Milestone:
 Component:  Tests        |    Version:  svn-trunk
Resolution:               |   Keywords:
       CPU:  Unspecified  |   Platform:  Unspecified
--------------------------+-------------------------
Description changed by pmav99:

Old description:

> This is the traceback:
> {{{
> ======================================================================
> ERROR: test_patching_cell (__main__.TestSmallDataNoOverlap)
> Test patching two neighboring CELL raster maps
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File "raster/r.patch/testsuite/test_rpatch_artificial.py", line 162, in
> test_patching_cell
>     self.cell_patched_ref, precision=0)
>   File "etc/python/grass/gunittest/case.py", line 767, in
> assertRastersNoDifference
>     'assertRastersNoDifference')
>   File "etc/python/grass/gunittest/case.py", line 681, in
> _compute_difference_raster
>     s=second))
>   File "etc/python/grass/gunittest/gmodules.py", line 128, in call_module
>     output, errors = process.communicate(input=stdin)
>   File "/usr/lib/python3.7/subprocess.py", line 939, in communicate
>     stdout, stderr = self._communicate(input, endtime, timeout)
>   File "/usr/lib/python3.7/subprocess.py", line 1666, in _communicate
>     input_view = memoryview(self._input)
> TypeError: memoryview: a bytes-like object is required, not 'str'
> }}}
>
> This is the the suggested fix (git diff):
> {{{
> diff --git a/lib/python/gunittest/case.py b/lib/python/gunittest/case.py
> index cf995e4b2..d94a72b69 100644
> --- a/lib/python/gunittest/case.py
> +++ b/lib/python/gunittest/case.py
> @@ -675,10 +675,12 @@ class TestCase(unittest.TestCase):
>          """
>          diff = self._get_unique_name('compute_difference_raster_' +
> name_part
>                                       + '_' + first + '_minus_' + second)
> -        call_module('r.mapcalc',
> -                    stdin='"{d}" = "{f}" - "{s}"'.format(d=diff,
> -                                                         f=first,
> -                                                         s=second))
> +        expression = '"{d}" = "{f}" - "{s}"'.format(
> +            d=diff,
> +            f=first,
> +            s=second
> +        )
> +        call_module('r.mapcalc', stdin=expression.encode("utf-8"))
>          return diff
>
>      # TODO: name of map generation is repeted three times
> }}}
>
> Works on both Python 2 and Python 3

New description:

 This is the traceback:
 {{{
 ======================================================================
 ERROR: test_patching_cell (__main__.TestSmallDataNoOverlap)
 Test patching two neighboring CELL raster maps
 ----------------------------------------------------------------------
 Traceback (most recent call last):
   File "raster/r.patch/testsuite/test_rpatch_artificial.py", line 162, in
 test_patching_cell
     self.cell_patched_ref, precision=0)
   File "etc/python/grass/gunittest/case.py", line 767, in
 assertRastersNoDifference
     'assertRastersNoDifference')
   File "etc/python/grass/gunittest/case.py", line 681, in
 _compute_difference_raster
     s=second))
   File "etc/python/grass/gunittest/gmodules.py", line 128, in call_module
     output, errors = process.communicate(input=stdin)
   File "/usr/lib/python3.7/subprocess.py", line 939, in communicate
     stdout, stderr = self._communicate(input, endtime, timeout)
   File "/usr/lib/python3.7/subprocess.py", line 1666, in _communicate
     input_view = memoryview(self._input)
 TypeError: memoryview: a bytes-like object is required, not 'str'
 }}}

 This is the the suggested fix (git diff):
 {{{
 diff --git a/lib/python/gunittest/case.py b/lib/python/gunittest/case.py
 index cf995e4b2..d94a72b69 100644
 --- a/lib/python/gunittest/case.py
 +++ b/lib/python/gunittest/case.py
 @@ -675,10 +675,12 @@ class TestCase(unittest.TestCase):
          """
          diff = self._get_unique_name('compute_difference_raster_' +
 name_part
                                       + '_' + first + '_minus_' + second)
 -        call_module('r.mapcalc',
 -                    stdin='"{d}" = "{f}" - "{s}"'.format(d=diff,
 -                                                         f=first,
 -                                                         s=second))
 +        expression = '"{diff}" = "{first}" - "{second}"'.format(
 +            diff=diff,
 +            first=first,
 +            second=second
 +        )
 +        call_module('r.mapcalc', stdin=expression.encode("utf-8"))
          return diff

      # TODO: name of map generation is repeted three times
 }}}

 Works on both Python 2 and Python 3

--

-- 
Ticket URL: <https://trac.osgeo.org/grass/ticket/3783#comment:1>
GRASS GIS <https://grass.osgeo.org>



More information about the grass-dev mailing list