text: #
  # This source file is part of the EdgeDB open source project.
  #
  # Copyright 2017-present MagicStack Inc. and the EdgeDB authors.
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  #     http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  #
  
  
  import os
  import subprocess
  import sys
  import unittest
  
  
  def find_edgedb_root():
      return os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  
  
  class TestFlake8(unittest.TestCase):
  
      def test_flake8(self):
          edgepath = find_edgedb_root()
          config_path = os.path.join(edgepath, '.flake8')
          if not os.path.exists(config_path):
              raise RuntimeError('could not locate .flake8 file')
  
          try:
              import flake8  # NoQA
          except ImportError:
              raise unittest.SkipTest('flake8 moudule is missing')
  
          for subdir in ['edgedb', 'tests']:  # ignore any top-level test files
              try:
                  subprocess.run(
                      [sys.executable, '-m', 'flake8', '--config', config_path],
                      check=True,
                      stdout=subprocess.PIPE,
                      stderr=subprocess.PIPE,
                      cwd=os.path.join(edgepath, subdir))
              except subprocess.CalledProcessError as ex:
                  output = ex.output.decode()
                  raise AssertionError(
                      f'flake8 validation failed:\n{output}') from None
  