run_apps_js_tests.cc revision 0529e5d033099cbfc42635f6f6183833b09dff6e
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/file_util.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/path_service.h" 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "build/build_config.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "gin/modules/console.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "gin/modules/module_registry.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "gin/modules/timer.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "gin/test/file_runner.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "gin/test/gtest.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "mojo/apps/js/bindings/monotonic_clock.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "mojo/apps/js/bindings/threading.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "mojo/bindings/js/core.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "mojo/bindings/js/unicode.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace mojo { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace js { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TestRunnerDelegate : public gin::FileRunnerDelegate { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestRunnerDelegate() { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddBuiltinModule(gin::Console::kModuleName, gin::Console::GetModule); 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddBuiltinModule(Core::kModuleName, Core::GetModule); 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AddBuiltinModule(Unicode::kModuleName, Unicode::GetModule); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddBuiltinModule(gin::TimerModule::kName, gin::TimerModule::GetModule); 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AddBuiltinModule(apps::MonotonicClock::kModuleName, 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) apps::MonotonicClock::GetModule); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddBuiltinModule(apps::Threading::kModuleName, apps::Threading::GetModule); 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TestRunnerDelegate); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RunTest(std::string test, bool run_until_idle) { 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FilePath path; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PathService::Get(base::DIR_SOURCE_ROOT, &path); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) path = path.AppendASCII("mojo") 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .AppendASCII("apps") 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .AppendASCII("js") 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .AppendASCII("bindings") 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .AppendASCII(test); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestRunnerDelegate delegate; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gin::RunTestFromFile(path, &delegate, run_until_idle); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(abarth): Should we autogenerate these stubs from GYP? 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://crbug.com/351214 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_POSIX) 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MAYBE_sample_test DISABLED_sample_test 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_sample_test sample_test 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(JSTest, MAYBE_sample_test) { 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunTest("sample_service_unittests.js", true); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://crbug.com/351214 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_POSIX) 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MAYBE_connection DISABLED_connection 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define MAYBE_connection connection 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(JSTest, MAYBE_connection) { 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunTest("connection_unittests.js", false); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(JSTest, monotonic_clock) { 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunTest("monotonic_clock_unittests.js", false); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace js 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace mojo 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)