Commit fa69ff87 authored by plundblad's avatar plundblad Committed by Commit bot

Build javascript unit tests with gn.

This extends the js2gtest template and uses it for the gtestjs
unit tests.

BUG=None

Review URL: https://codereview.chromium.org/1145113002

Cr-Commit-Position: refs/heads/master@{#330907}
parent dcd1d596
...@@ -209,19 +209,6 @@ ...@@ -209,19 +209,6 @@
'browser/renderer_context_menu/render_view_context_menu_test_util.cc', 'browser/renderer_context_menu/render_view_context_menu_test_util.cc',
'browser/renderer_context_menu/render_view_context_menu_test_util.h', 'browser/renderer_context_menu/render_view_context_menu_test_util.h',
'browser/renderer_host/chrome_render_widget_host_view_mac_history_swiper_unit_test.mm', 'browser/renderer_host/chrome_render_widget_host_view_mac_history_swiper_unit_test.mm',
'browser/resources/google_now/background.js',
'browser/resources/google_now/background_test_util.js',
'browser/resources/google_now/background_unittest.gtestjs',
'browser/resources/google_now/cards.js',
'browser/resources/google_now/cards_unittest.gtestjs',
'browser/resources/google_now/common_test_util.js',
'browser/resources/google_now/utility.js',
'browser/resources/google_now/utility_test_util.js',
'browser/resources/google_now/utility_unittest.gtestjs',
'browser/resources/print_preview/data/measurement_system.js',
'browser/resources/print_preview/data/measurement_system_unittest.gtestjs',
'browser/resources/print_preview/print_preview_utils.js',
'browser/resources/print_preview/print_preview_utils_unittest.gtestjs',
'browser/resources_util_unittest.cc', 'browser/resources_util_unittest.cc',
'browser/rlz/rlz_unittest.cc', 'browser/rlz/rlz_unittest.cc',
'browser/search/contextual_search_policy_handler_android_unittest.cc', 'browser/search/contextual_search_policy_handler_android_unittest.cc',
...@@ -565,9 +552,6 @@ ...@@ -565,9 +552,6 @@
'renderer/instant_restricted_id_cache_unittest.cc', 'renderer/instant_restricted_id_cache_unittest.cc',
'renderer/plugins/plugin_uma_unittest.cc', 'renderer/plugins/plugin_uma_unittest.cc',
'renderer/prerender/prerender_dispatcher_unittest.cc', 'renderer/prerender/prerender_dispatcher_unittest.cc',
'renderer/resources/extensions/notifications_custom_bindings.js',
'renderer/resources/extensions/notifications_custom_bindings.gtestjs',
'renderer/resources/extensions/notifications_test_util.js',
'renderer/searchbox/search_bouncer_unittest.cc', 'renderer/searchbox/search_bouncer_unittest.cc',
'renderer/searchbox/searchbox_extension_unittest.cc', 'renderer/searchbox/searchbox_extension_unittest.cc',
'renderer/searchbox/searchbox_unittest.cc', 'renderer/searchbox/searchbox_unittest.cc',
...@@ -608,7 +592,6 @@ ...@@ -608,7 +592,6 @@
'../tools/json_schema_compiler/test/idl_schemas_unittest.cc', '../tools/json_schema_compiler/test/idl_schemas_unittest.cc',
'../tools/json_schema_compiler/test/objects_unittest.cc', '../tools/json_schema_compiler/test/objects_unittest.cc',
'../tools/json_schema_compiler/test/simple_api_unittest.cc', '../tools/json_schema_compiler/test/simple_api_unittest.cc',
'../ui/webui/resources/js/cr.js',
], ],
'chrome_unit_tests_spellchecker_sources': [ 'chrome_unit_tests_spellchecker_sources': [
'browser/spellchecker/feedback_sender_unittest.cc', 'browser/spellchecker/feedback_sender_unittest.cc',
...@@ -1111,6 +1094,27 @@ ...@@ -1111,6 +1094,27 @@
'browser/media/webrtc_rtp_dump_writer_unittest.cc', 'browser/media/webrtc_rtp_dump_writer_unittest.cc',
'renderer/media/chrome_webrtc_log_message_delegate_unittest.cc', 'renderer/media/chrome_webrtc_log_message_delegate_unittest.cc',
], ],
'chrome_unit_tests_js_sources': [
'browser/resources/google_now/background.js',
'browser/resources/google_now/background_test_util.js',
'browser/resources/google_now/cards.js',
'browser/resources/google_now/common_test_util.js',
'browser/resources/google_now/utility.js',
'browser/resources/google_now/utility_test_util.js',
'browser/resources/print_preview/data/measurement_system.js',
'browser/resources/print_preview/print_preview_utils.js',
'renderer/resources/extensions/notifications_custom_bindings.js',
'renderer/resources/extensions/notifications_test_util.js',
'../ui/webui/resources/js/cr.js',
],
'chrome_unit_tests_gtestjs_sources': [
'browser/resources/google_now/background_unittest.gtestjs',
'browser/resources/google_now/cards_unittest.gtestjs',
'browser/resources/google_now/utility_unittest.gtestjs',
'browser/resources/print_preview/data/measurement_system_unittest.gtestjs',
'browser/resources/print_preview/print_preview_utils_unittest.gtestjs',
'renderer/resources/extensions/notifications_custom_bindings.gtestjs',
],
'chrome_unit_tests_chromeos_sources': [ 'chrome_unit_tests_chromeos_sources': [
'browser/chromeos/accessibility/magnification_manager_unittest.cc', 'browser/chromeos/accessibility/magnification_manager_unittest.cc',
'browser/chromeos/attestation/attestation_ca_client_unittest.cc', 'browser/chromeos/attestation/attestation_ca_client_unittest.cc',
...@@ -1314,8 +1318,6 @@ ...@@ -1314,8 +1318,6 @@
'browser/extensions/updater/local_extension_cache_unittest.cc', 'browser/extensions/updater/local_extension_cache_unittest.cc',
'browser/metrics/chromeos_metrics_provider_unittest.cc', 'browser/metrics/chromeos_metrics_provider_unittest.cc',
'browser/notifications/login_state_notification_blocker_chromeos_unittest.cc', 'browser/notifications/login_state_notification_blocker_chromeos_unittest.cc',
'browser/resources/chromeos/braille_ime/braille_ime.js',
'browser/resources/chromeos/braille_ime/braille_ime_unittest.gtestjs',
# TODO(zturner): Enable this on Windows. See # TODO(zturner): Enable this on Windows. See
# BrowserWithTestWindowTest::SetUp() for a comment explaining why this is # BrowserWithTestWindowTest::SetUp() for a comment explaining why this is
# broken. # broken.
...@@ -1330,6 +1332,12 @@ ...@@ -1330,6 +1332,12 @@
'common/extensions/api/file_browser_handlers/file_browser_handler_manifest_unittest.cc', 'common/extensions/api/file_browser_handlers/file_browser_handler_manifest_unittest.cc',
'common/extensions/api/file_system_provider/file_system_provider_handler_unittest.cc', 'common/extensions/api/file_system_provider/file_system_provider_handler_unittest.cc',
], ],
'chrome_unit_tests_chromeos_js_sources': [
'browser/resources/chromeos/braille_ime/braille_ime.js',
],
'chrome_unit_tests_chromeos_gtestjs_sources': [
'browser/resources/chromeos/braille_ime/braille_ime_unittest.gtestjs',
],
'chrome_unit_tests_desktop_linux_sources': [ 'chrome_unit_tests_desktop_linux_sources': [
'browser/password_manager/native_backend_kwallet_x_unittest.cc', 'browser/password_manager/native_backend_kwallet_x_unittest.cc',
'browser/profiles/profile_list_desktop_unittest.cc', 'browser/profiles/profile_list_desktop_unittest.cc',
...@@ -2147,7 +2155,11 @@ ...@@ -2147,7 +2155,11 @@
], ],
}, },
}, },
'sources': [ '<@(chrome_unit_tests_sources)' ], 'sources': [
'<@(chrome_unit_tests_sources)',
'<@(chrome_unit_tests_js_sources)',
'<@(chrome_unit_tests_gtestjs_sources)',
],
'conditions': [ 'conditions': [
['OS!="ios"', { ['OS!="ios"', {
'dependencies': [ 'dependencies': [
...@@ -2374,7 +2386,11 @@ ...@@ -2374,7 +2386,11 @@
'sources': [ '<@(chrome_unit_tests_webrtc_sources)' ], 'sources': [ '<@(chrome_unit_tests_webrtc_sources)' ],
}], }],
['chromeos==1', { ['chromeos==1', {
'sources': [ '<@(chrome_unit_tests_chromeos_sources)' ], 'sources': [
'<@(chrome_unit_tests_chromeos_sources)',
'<@(chrome_unit_tests_chromeos_gtestjs_sources)',
'<@(chrome_unit_tests_chromeos_js_sources)',
],
'dependencies': [ 'dependencies': [
'../ash/ash_resources.gyp:ash_resources', '../ash/ash_resources.gyp:ash_resources',
'../ui/chromeos/ui_chromeos.gyp:ui_chromeos_resources', '../ui/chromeos/ui_chromeos.gyp:ui_chromeos_resources',
......
...@@ -505,7 +505,9 @@ if (!is_android) { ...@@ -505,7 +505,9 @@ if (!is_android) {
} }
} }
template("js2webui") { template("js2gtest") {
assert(defined(invoker.test_type) &&
(invoker.test_type == "webui" || invoker.test_type == "unit"))
action_name = target_name + "_action" action_name = target_name + "_action"
source_set_name = target_name source_set_name = target_name
...@@ -531,14 +533,14 @@ if (!is_android) { ...@@ -531,14 +533,14 @@ if (!is_android) {
outputs = [ outputs = [
"$target_gen_dir/{{source_name_part}}-gen.cc", "$target_gen_dir/{{source_name_part}}-gen.cc",
"$root_out_dir/test_data/chrome/{{source_root_relative_dir}}/{{source_file_part}}", "$root_out_dir/test_data/{{source_root_relative_dir}}/{{source_file_part}}",
] ]
args = [ args = [
# Need "./" for script to find binary (cur dir is not on path). # Need "./" for script to find binary (cur dir is not on path).
"./" + rebase_path(d8_path, root_build_dir), "./" + rebase_path(d8_path, root_build_dir),
] ]
args += rebase_path(input_js, root_build_dir) + [ "webui" ] args += rebase_path(input_js, root_build_dir) + [ invoker.test_type ]
if (v8_use_external_startup_data) { if (v8_use_external_startup_data) {
args += [ "--external=y" ] args += [ "--external=y" ]
} else { } else {
...@@ -555,13 +557,25 @@ if (!is_android) { ...@@ -555,13 +557,25 @@ if (!is_android) {
] ]
} }
if (defined(invoker.extra_js_files)) {
copy_target_name = target_name + "_copy"
copy(copy_target_name) {
visibility = [ ":$source_set_name" ]
sources = invoker.extra_js_files
outputs = [
"$root_out_dir/test_data/{{source_root_relative_dir}}/{{source_file_part}}",
]
}
}
source_set(source_set_name) { source_set(source_set_name) {
testonly = true testonly = true
if (defined(invoker.visibility)) { if (defined(invoker.visibility)) {
visibility = invoker.visibility visibility = invoker.visibility
} }
sources = get_target_outputs(":$action_name") sources = get_target_outputs(":$action_name")
defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] if (defined(invoker.defines)) {
defines = invoker.defines
}
deps = [ deps = [
":$action_name", ":$action_name",
...@@ -573,10 +587,14 @@ if (!is_android) { ...@@ -573,10 +587,14 @@ if (!is_android) {
if (defined(invoker.deps)) { if (defined(invoker.deps)) {
deps += invoker.deps deps += invoker.deps
} }
if (defined(invoker.extra_js_files)) {
data_deps = [ ":$copy_target_name" ]
}
} }
} }
js2webui("browser_tests_js_webui") { js2gtest("browser_tests_js_webui") {
test_type = "webui"
sources = rebase_path( sources = rebase_path(
chrome_tests_gypi_values.chrome_browser_tests_webui_js_sources, chrome_tests_gypi_values.chrome_browser_tests_webui_js_sources,
".", ".",
...@@ -599,6 +617,7 @@ if (!is_android) { ...@@ -599,6 +617,7 @@ if (!is_android) {
"//chrome/browser/ui", "//chrome/browser/ui",
"//skia", "//skia",
] ]
defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
} }
test("browser_tests") { test("browser_tests") {
...@@ -1196,6 +1215,26 @@ if (!is_android) { ...@@ -1196,6 +1215,26 @@ if (!is_android) {
"scope", "scope",
[ "../chrome_tests_unit.gypi" ]) [ "../chrome_tests_unit.gypi" ])
js2gtest("unit_tests_js") {
test_type = "unit"
sources = rebase_path(unit_gypi_values.chrome_unit_tests_gtestjs_sources,
".",
"//chrome")
extra_js_files = rebase_path(unit_gypi_values.chrome_unit_tests_js_sources,
".",
"//chrome")
if (is_chromeos) {
sources += rebase_path(
unit_gypi_values.chrome_unit_tests_chromeos_gtestjs_sources,
".",
"//chrome")
extra_js_files +=
rebase_path(unit_gypi_values.chrome_unit_tests_chromeos_js_sources,
".",
"//chrome")
}
}
test("unit_tests") { test("unit_tests") {
sources = sources =
rebase_path(unit_gypi_values.chrome_unit_tests_sources, ".", "//chrome") rebase_path(unit_gypi_values.chrome_unit_tests_sources, ".", "//chrome")
...@@ -1250,6 +1289,7 @@ if (!is_android) { ...@@ -1250,6 +1289,7 @@ if (!is_android) {
if (!is_ios) { if (!is_ios) {
deps += [ deps += [
":unit_tests_js",
"//components/audio_modem:audio_modem_test_support", "//components/audio_modem:audio_modem_test_support",
"//components/autofill/content/browser:test_support", "//components/autofill/content/browser:test_support",
"//components/metrics/proto", "//components/metrics/proto",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment