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)