12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#!/usr/bin/env python
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# Copyright (c) 2012 The Chromium Authors. All rights reserved.
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# found in the LICENSE file.
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)""" Test runner for IDL Generator changes """
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import subprocess
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import sys
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def TestIDL(testname, args):
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  print '\nRunning unit tests for %s.' % testname
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  try:
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    args = [sys.executable, testname] + args
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    subprocess.check_call(args)
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return 0
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  except subprocess.CalledProcessError as err:
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    print 'Failed with %s.' % str(err)
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return 1
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def main(args):
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  errors = 0
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  errors += TestIDL('idl_lexer.py', ['--test'])
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  assert errors == 0
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  errors += TestIDL('idl_parser.py', ['--test'])
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  assert errors == 0
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  errors += TestIDL('idl_c_header.py', [])
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  assert errors == 0
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  errors += TestIDL('idl_c_proto.py', ['--wnone', '--test'])
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  assert errors == 0
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  errors += TestIDL('idl_gen_pnacl.py', ['--wnone', '--test'])
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  assert errors == 0
33a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  errors += TestIDL('idl_namespace.py', [])
34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  assert errors == 0
35a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  errors += TestIDL('idl_node.py', [])
36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  assert errors == 0
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if errors:
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    print '\nFailed tests.'
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return errors
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)if __name__ == '__main__':
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  sys.exit(main(sys.argv[1:]))
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
46