text: #!/usr/bin/env python
  # Runs the full test suite.
  # Usage: ./tools/test.py out/Debug
  import os
  import sys
  from check_output_test import check_output_test
  from deno_dir_test import deno_dir_test
  from setup_test import setup_test
  from util import build_path, enable_ansi_colors, executable_suffix, run, rmtree
  from unit_tests import unit_tests
  from util_test import util_test
  from benchmark_test import benchmark_test
  import subprocess
  import http_server
  
  
  def check_exists(filename):
      if not os.path.exists(filename):
          print "Required target doesn't exist:", filename
          print "Run ./tools/build.py"
          sys.exit(1)
  
  
  def main(argv):
      if len(argv) == 2:
          build_dir = sys.argv[1]
      elif len(argv) == 1:
          build_dir = build_path()
      else:
          print "Usage: tools/test.py [build_dir]"
          sys.exit(1)
  
      deno_dir = os.path.join(build_dir, ".deno_test")
      if os.path.isdir(deno_dir):
          rmtree(deno_dir)
      os.environ["DENO_DIR"] = deno_dir
  
      enable_ansi_colors()
  
      http_server.spawn()
  
      deno_exe = os.path.join(build_dir, "deno" + executable_suffix)
      check_exists(deno_exe)
      deno_ns_exe = os.path.join(build_dir, "deno_ns" + executable_suffix)
      check_exists(deno_ns_exe)
  
      # Internal tools testing
      setup_test()
      util_test()
      benchmark_test(build_dir, deno_exe)
  
      test_cc = os.path.join(build_dir, "test_cc" + executable_suffix)
      check_exists(test_cc)
      run([test_cc])
  
      test_rs = os.path.join(build_dir, "test_rs" + executable_suffix)
      check_exists(test_rs)
      run([test_rs])
  
      unit_tests(deno_exe)
  
      check_output_test(deno_exe)
      check_output_test(deno_ns_exe)
  
      rmtree(deno_dir)
  
      deno_dir_test(deno_exe, deno_dir)
  
  
  if __name__ == '__main__':
      sys.exit(main(sys.argv))
  