1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "base/file_util.h" 6#include "base/files/file_path.h" 7#include "base/path_service.h" 8#include "gin/modules/console.h" 9#include "gin/modules/module_registry.h" 10#include "gin/modules/timer.h" 11#include "gin/test/file_runner.h" 12#include "gin/test/gtest.h" 13#include "mojo/bindings/js/core.h" 14#include "mojo/common/test/test_utils.h" 15#include "testing/gtest/include/gtest/gtest.h" 16 17namespace mojo { 18namespace js { 19namespace { 20 21class TestRunnerDelegate : public gin::FileRunnerDelegate { 22 public: 23 TestRunnerDelegate() { 24 AddBuiltinModule(gin::Console::kModuleName, gin::Console::GetModule); 25 AddBuiltinModule(Core::kModuleName, Core::GetModule); 26 } 27 28 private: 29 DISALLOW_COPY_AND_ASSIGN(TestRunnerDelegate); 30}; 31 32void RunTest(std::string test, bool run_until_idle) { 33 base::FilePath path; 34 PathService::Get(base::DIR_SOURCE_ROOT, &path); 35 path = path.AppendASCII("mojo") 36 .AppendASCII("bindings") 37 .AppendASCII("js") 38 .AppendASCII(test); 39 TestRunnerDelegate delegate; 40 gin::RunTestFromFile(path, &delegate, run_until_idle); 41} 42 43// TODO(abarth): Should we autogenerate these stubs from GYP? 44TEST(JSTest, core) { 45 RunTest("core_unittests.js", true); 46} 47 48TEST(JSTest, codec) { 49 // TODO(yzshen): Remove this check once isolated tests are supported on the 50 // Chromium waterfall. (http://crbug.com/351214) 51 const base::FilePath test_file_path( 52 test::GetFilePathForJSResource( 53 "mojo/public/interfaces/bindings/tests/sample_service.mojom")); 54 if (!base::PathExists(test_file_path)) { 55 LOG(WARNING) << "Mojom binding files don't exist. Skipping the test."; 56 return; 57 } 58 59 RunTest("codec_unittests.js", true); 60} 61 62} // namespace 63} // namespace js 64} // namespace mojo 65