#!/usr/bin/env python
# Copyright (c) 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.


"""Run the Go tests and report any uncategorized tests. Exit 1 if any."""


import re
import subprocess
import sys


REGEX = '^--- ([A-Z]+): (\w+)'
SKIP = 'SKIP'


def main():
  cmd = ['go', 'test', '-v', './...', '--uncategorized']
  try:
    output = subprocess.check_output(cmd)
  except subprocess.CalledProcessError as e:
    output = e.output
  notskipped = []
  for line in output.splitlines():
    m = re.search(REGEX, line)
    if m:
      result, name = m.groups()
      if result != SKIP:
        notskipped.append(name)

  if notskipped:
    print '%d tests are not categorized:' % len(notskipped)
    for t in notskipped:
      print '\t%s' % t
    sys.exit(1)


if __name__ == '__main__':
  main()
