All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: "Philippe Mathieu-Daudé" <f4bug@amsat.org>, qemu-devel@nongnu.org
Cc: "Huacai Chen" <zltjiangshi@gmail.com>,
	"Daniel P . Berrange" <berrange@redhat.com>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Mark Cave-Ayland" <mark.cave-ayland@ilande.co.uk>,
	"Jiaxun Yang" <jiaxun.yang@flygoat.com>,
	"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
	"Cleber Rosa" <crosa@redhat.com>,
	"Huacai Chen" <chenhc@lemote.com>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>
Subject: Re: [PATCH 4/6] tests/acceptance: Introduce tesseract_ocr() helper
Date: Sat, 24 Oct 2020 08:35:23 +0200	[thread overview]
Message-ID: <0b31c367-f054-ce03-c1f8-d6fb6cbffc28@redhat.com> (raw)
In-Reply-To: <20201021105035.2477784-5-f4bug@amsat.org>

On 21/10/2020 12.50, Philippe Mathieu-Daudé wrote:
> We are going to reuse the tesseract OCR code.
> Create a new tesseract_ocr() helper and use it.
> 
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  tests/acceptance/machine_m68k_nextcube.py | 21 +++++----------------
>  tests/acceptance/tesseract_utils.py       | 18 ++++++++++++++++++
>  2 files changed, 23 insertions(+), 16 deletions(-)
> 
> diff --git a/tests/acceptance/machine_m68k_nextcube.py b/tests/acceptance/machine_m68k_nextcube.py
> index 3c7400c43e4..09e2745cc52 100644
> --- a/tests/acceptance/machine_m68k_nextcube.py
> +++ b/tests/acceptance/machine_m68k_nextcube.py
> @@ -7,13 +7,11 @@
>  
>  import os
>  import time
> -import logging
>  
>  from avocado_qemu import Test
>  from avocado import skipUnless
> -from avocado.utils import process
>  
> -from tesseract_utils import tesseract_available
> +from tesseract_utils import tesseract_available, tesseract_ocr
>  
>  PIL_AVAILABLE = True
>  try:
> @@ -61,12 +59,8 @@ def test_bootrom_framebuffer_size(self):
>      def test_bootrom_framebuffer_ocr_with_tesseract_v3(self):
>          screenshot_path = os.path.join(self.workdir, "dump.ppm")
>          self.check_bootrom_framebuffer(screenshot_path)
> -
> -        console_logger = logging.getLogger('console')
> -        text = process.run("tesseract %s stdout" % screenshot_path).stdout_text
> -        for line in text.split('\n'):
> -            if len(line):
> -                console_logger.debug(line)
> +        lines = tesseract_ocr(screenshot_path, tesseract_version=3)
> +        text = '\n'.join(lines)
>          self.assertIn('Backplane', text)
>          self.assertIn('Ethernet address', text)
>  
> @@ -77,13 +71,8 @@ def test_bootrom_framebuffer_ocr_with_tesseract_v3(self):
>      def test_bootrom_framebuffer_ocr_with_tesseract_v4(self):
>          screenshot_path = os.path.join(self.workdir, "dump.ppm")
>          self.check_bootrom_framebuffer(screenshot_path)
> -
> -        console_logger = logging.getLogger('console')
> -        proc = process.run("tesseract --oem 1 %s stdout" % screenshot_path)
> -        text = proc.stdout_text
> -        for line in text.split('\n'):
> -            if len(line):
> -                console_logger.debug(line)
> +        lines = tesseract_ocr(screenshot_path, tesseract_version=4)
> +        text = '\n'.join(lines)
>          self.assertIn('Testing the FPU, SCC', text)
>          self.assertIn('System test failed. Error code', text)
>          self.assertIn('Boot command', text)
> diff --git a/tests/acceptance/tesseract_utils.py b/tests/acceptance/tesseract_utils.py
> index acd6e8c2faa..72cd9ab7989 100644
> --- a/tests/acceptance/tesseract_utils.py
> +++ b/tests/acceptance/tesseract_utils.py
> @@ -6,7 +6,9 @@
>  # later. See the COPYING file in the top-level directory.
>  
>  import re
> +import logging
>  
> +from avocado.utils import process
>  from avocado.utils.path import find_command, CmdNotFoundError
>  
>  def tesseract_available(expected_version):
> @@ -26,3 +28,19 @@ def tesseract_available(expected_version):
>          return False
>      # now this is guaranteed to be a digit
>      return int(match.groups()[0]) == expected_version
> +
> +
> +def tesseract_ocr(image_path, tesseract_args='', tesseract_version=3):
> +    console_logger = logging.getLogger('tesseract')
> +    console_logger.debug(image_path)
> +    if tesseract_version == 4:
> +        tesseract_args += ' --oem 1'
> +    proc = process.run("tesseract {} {} stdout".format(tesseract_args,
> +                                                       image_path))
> +    lines = []
> +    for line in proc.stdout_text.split('\n'):
> +        sline = line.strip()
> +        if len(sline):
> +            console_logger.debug(sline)
> +            lines += [sline]
> +    return lines

Would it make sense to completely hide the tesseract version handling in
this new tesseract_utils.py file now, so that the tests themselves do not
have to worry about this anymore (i.e. would it be possible to merge
test_bootrom_framebuffer_ocr_with_tesseract_v3 and
test_bootrom_framebuffer_ocr_with_tesseract_v4 into one single test that way?)

 Thomas



  reply	other threads:[~2020-10-24  6:37 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-21 10:50 [PATCH 0/6] tests/acceptance: Test the Fuloong 2E machine Philippe Mathieu-Daudé
2020-10-21 10:50 ` [PATCH 1/6] tests/acceptance: Remove unused import Philippe Mathieu-Daudé
2020-10-24  6:58   ` Thomas Huth
2020-10-21 10:50 ` [PATCH 2/6] tests/acceptance: Use .ppm extention for Portable PixMap files Philippe Mathieu-Daudé
2020-10-24  6:24   ` Thomas Huth
2020-10-21 10:50 ` [PATCH 3/6] tests/acceptance: Extract tesseract_available() helper in new namespace Philippe Mathieu-Daudé
2020-10-24  6:31   ` Thomas Huth
2020-10-21 10:50 ` [PATCH 4/6] tests/acceptance: Introduce tesseract_ocr() helper Philippe Mathieu-Daudé
2020-10-24  6:35   ` Thomas Huth [this message]
2020-10-24  6:40     ` Thomas Huth
2020-10-24  7:37       ` Philippe Mathieu-Daudé
2020-10-24 17:40         ` Philippe Mathieu-Daudé
2020-10-26  6:09           ` Thomas Huth
2020-10-21 10:50 ` [PATCH 5/6] tests/acceptance: Test Linux on the Fuloong 2E machine Philippe Mathieu-Daudé
2020-10-21 10:50 ` [PATCH 6/6] tests/acceptance: Test PMON " Philippe Mathieu-Daudé
2020-10-25 11:18 ` [PATCH 0/6] tests/acceptance: Test " Mark Cave-Ayland
2020-10-25 12:22   ` Philippe Mathieu-Daudé
2020-10-25 14:30     ` BALATON Zoltan via
2020-10-26  8:50 ` Philippe Mathieu-Daudé
2020-10-26 17:20   ` Philippe Mathieu-Daudé

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0b31c367-f054-ce03-c1f8-d6fb6cbffc28@redhat.com \
    --to=thuth@redhat.com \
    --cc=alex.bennee@linaro.org \
    --cc=berrange@redhat.com \
    --cc=chenhc@lemote.com \
    --cc=crosa@redhat.com \
    --cc=f4bug@amsat.org \
    --cc=jiaxun.yang@flygoat.com \
    --cc=mark.cave-ayland@ilande.co.uk \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=wainersm@redhat.com \
    --cc=zltjiangshi@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.