prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  run_tests --html doesn't work in ubuntu
  In ubuntu and debian systems, coverage isn't installed in `/usr/bin/coverage3` ... rather, it is installed as `/usr/bin/python3-coverage`. Hence, `--html` flag doesn't work. The corresponding launchpad bug is [here](https://bugs.launchpad.net/horizon/+bug/1241332)
  
  It would be better to use `python3 -m coverage` as this is platform independent.
  
  
  </issue>
  <code>
  [start of coalib/misc/StringConstants.py]
  1 import inspect
  2 import os
  3 
  4 from coalib.misc.i18n import _
  5 
  6 
  7 class StringConstants:
  8     THIS_IS_A_BUG = _("This is a bug. We are sorry for the inconvenience. "
  9                       "Please contact the developers for assistance.")
  10 
  11     OBJ_NOT_ACCESSIBLE = _("{} is not accessible and will be ignored!")
  12 
  13     TRUE_STRINGS = ['1',
  14                     "on",
  15                     'y',
  16                     'yes',
  17                     "yeah",
  18                     "sure",
  19                     'true',
  20                     'definitely',
  21                     'yup',
  22                     "right"]
  23 
  24     FALSE_STRINGS = ['0',
  25                      'off',
  26                      'n',
  27                      'no',
  28                      'nope',
  29                      'nah',
  30                      'false',
  31                      "wrong"]
  32 
  33     # This string contains many unicode characters to challenge tests.
  34     COMPLEX_TEST_STRING = ("4 r34l ch4ll3n63: 123 ÄÖü ABc @€¥ §&% {[( ←↓→↑ "
  35                            "ĦŊħ ß°^ \\\n\u2192")
  36 
  37     # Results from coverage for unittests are stored here.
  38     COVERAGE_DIR = "./.coverageresults"
  39 
  40     # Path to the coalib directory
  41     coalib_root = os.path.join(os.path.dirname(inspect.getfile(_)),
  42                                os.path.pardir)
  43 
  44     # Path to the directory containing the default bears
  45     coalib_bears_root = os.path.join(coalib_root, os.path.pardir, "bears")
  46 
  47     # Path to the language definition files
  48     language_definitions = os.path.join(coalib_root,
  49                                         "bearlib",
  50                                         "languages",
  51                                         "definitions")
  52 
  53     system_coafile = os.path.join(coalib_root, "default_coafile")
  54 
  55     user_coafile = os.path.join(os.path.expanduser("~"), ".coarc")
  56
  [end of coalib/misc/StringConstants.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/coalib/misc/StringConstants.py b/coalib/misc/StringConstants.py
  --- a/coalib/misc/StringConstants.py
  +++ b/coalib/misc/StringConstants.py
  @@ -1,5 +1,6 @@
   import inspect
   import os
  +import sys
   
   from coalib.misc.i18n import _
   
  @@ -53,3 +54,8 @@
       system_coafile = os.path.join(coalib_root, "default_coafile")
   
       user_coafile = os.path.join(os.path.expanduser("~"), ".coarc")
  +
  +    if sys.platform.startswith("win"):  # pragma: no cover
  +        python_executable = "python"
  +    else:
  +        python_executable = "python3"
  
verification_info: {"golden_diff": "diff --git a/coalib/misc/StringConstants.py b/coalib/misc/StringConstants.py\n--- a/coalib/misc/StringConstants.py\n+++ b/coalib/misc/StringConstants.py\n@@ -1,5 +1,6 @@\n import inspect\n import os\n+import sys\n \n from coalib.misc.i18n import _\n \n@@ -53,3 +54,8 @@\n     system_coafile = os.path.join(coalib_root, \"default_coafile\")\n \n     user_coafile = os.path.join(os.path.expanduser(\"~\"), \".coarc\")\n+\n+    if sys.platform.startswith(\"win\"):  # pragma: no cover\n+        python_executable = \"python\"\n+    else:\n+        python_executable = \"python3\"\n", "issue": "run_tests --html doesn't work in ubuntu\nIn ubuntu and debian systems, coverage isn't installed in `/usr/bin/coverage3` ... rather, it is installed as `/usr/bin/python3-coverage`. Hence, `--html` flag doesn't work. The corresponding launchpad bug is [here](https://bugs.launchpad.net/horizon/+bug/1241332)\n\nIt would be better to use `python3 -m coverage` as this is platform independent.\n\n", "before_files": [{"content": "import inspect\nimport os\n\nfrom coalib.misc.i18n import _\n\n\nclass StringConstants:\n    THIS_IS_A_BUG = _(\"This is a bug. We are sorry for the inconvenience. \"\n                      \"Please contact the developers for assistance.\")\n\n    OBJ_NOT_ACCESSIBLE = _(\"{} is not accessible and will be ignored!\")\n\n    TRUE_STRINGS = ['1',\n                    \"on\",\n                    'y',\n                    'yes',\n                    \"yeah\",\n                    \"sure\",\n                    'true',\n                    'definitely',\n                    'yup',\n                    \"right\"]\n\n    FALSE_STRINGS = ['0',\n                     'off',\n                     'n',\n                     'no',\n                     'nope',\n                     'nah',\n                     'false',\n                     \"wrong\"]\n\n    # This string contains many unicode characters to challenge tests.\n    COMPLEX_TEST_STRING = (\"4 r34l ch4ll3n63: 123 \u00c4\u00d6\u00fc ABc @\u20ac\u00a5 \u00a7&% {[( \u2190\u2193\u2192\u2191 \"\n                           \"\u0126\u014a\u0127 \u00df\u00b0^ \\\\\\n\\u2192\")\n\n    # Results from coverage for unittests are stored here.\n    COVERAGE_DIR = \"./.coverageresults\"\n\n    # Path to the coalib directory\n    coalib_root = os.path.join(os.path.dirname(inspect.getfile(_)),\n                               os.path.pardir)\n\n    # Path to the directory containing the default bears\n    coalib_bears_root = os.path.join(coalib_root, os.path.pardir, \"bears\")\n\n    # Path to the language definition files\n    language_definitions = os.path.join(coalib_root,\n                                        \"bearlib\",\n                                        \"languages\",\n                                        \"definitions\")\n\n    system_coafile = os.path.join(coalib_root, \"default_coafile\")\n\n    user_coafile = os.path.join(os.path.expanduser(\"~\"), \".coarc\")\n", "path": "coalib/misc/StringConstants.py"}]}