// Copyright 2013 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.

#ifndef GIN_TEST_FILE_RUNNER_H_
#define GIN_TEST_FILE_RUNNER_H_

#include "base/compiler_specific.h"
#include "base/files/file_path.h"
#include "base/macros.h"
#include "gin/modules/module_runner_delegate.h"
#include "gin/runner.h"

namespace gin {

// FileRunnerDelegate is a simple RunnerDelegate that's useful for running
// tests. The FileRunnerDelegate provides built-in modules for "console" and
// "gtest" that are useful when writing unit tests.
//
// TODO(abarth): Rename FileRunnerDelegate to TestRunnerDelegate.
class FileRunnerDelegate : public ModuleRunnerDelegate {
 public:
  FileRunnerDelegate();
  ~FileRunnerDelegate() override;

 private:
  // From ModuleRunnerDelegate:
  void UnhandledException(ShellRunner* runner, TryCatch& try_catch) override;

  DISALLOW_COPY_AND_ASSIGN(FileRunnerDelegate);
};

void RunTestFromFile(const base::FilePath& path, FileRunnerDelegate* delegate,
                     bool run_until_idle = true);

}  // namespace gin

#endif  // GIN_TEST_FILE_RUNNER_H_
