code: def run(ci=False):
      
  
      xml_report_path = os.path.join(package_root, 'coverage.xml')
      if os.path.exists(xml_report_path):
          os.unlink(xml_report_path)
  
      cov = coverage.Coverage(include='%s/*.py' % package_name)
      cov.start()
  
      from .tests import run as run_tests
      result = run_tests()
      print()
  
      if ci:
          suite = unittest.TestSuite()
          loader = unittest.TestLoader()
          for other_package in other_packages:
              for test_class in _load_package_tests(other_package):
                  suite.addTest(loader.loadTestsFromTestCase(test_class))
  
          if suite.countTestCases() > 0:
              print('Running tests from other modularcrypto packages')
              sys.stdout.flush()
              runner_result = unittest.TextTestRunner(stream=sys.stdout, verbosity=1).run(suite)
              result = runner_result.wasSuccessful() and result
              print()
              sys.stdout.flush()
  
      cov.stop()
      cov.save()
  
      cov.report(show_missing=False)
      print()
      sys.stdout.flush()
      if ci:
          cov.xml_report()
  
      if ci and result and os.path.exists(xml_report_path):
          _codecov_submit()
          print()
  
      return result
docs: Runs the tests while measuring coverage
  
      :param ci:
          If coverage is being run in a CI environment - this triggers trying to
          run the tests for the rest of modularcrypto and uploading coverage data
  
      :return:
          A bool - if the tests ran successfully