1 # Copyright 2013 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 { 6 'targets': [ 7 # Test support files for the 'sync_core' target. 8 { 9 'target_name': 'test_support_sync_core', 10 'type': 'static_library', 11 'variables': { 'enable_wexit_time_destructors': 1, }, 12 'include_dirs': [ 13 '..', 14 ], 15 'defines': [ 16 'SYNC_TEST' 17 ], 18 'dependencies': [ 19 '../base/base.gyp:base', 20 '../testing/gmock.gyp:gmock', 21 '../testing/gtest.gyp:gtest', 22 'sync', 23 ], 24 'export_dependent_settings': [ 25 '../testing/gmock.gyp:gmock', 26 '../testing/gtest.gyp:gtest', 27 'sync', 28 ], 29 'sources': [ 30 'internal_api/public/base/model_type_test_util.cc', 31 'internal_api/public/base/model_type_test_util.h', 32 'js/js_test_util.cc', 33 'js/js_test_util.h', 34 'sessions/test_util.cc', 35 'sessions/test_util.h', 36 'test/callback_counter.h', 37 'test/engine/fake_model_worker.cc', 38 'test/engine/fake_model_worker.h', 39 'test/engine/fake_sync_scheduler.cc', 40 'test/engine/fake_sync_scheduler.h', 41 'test/engine/mock_connection_manager.cc', 42 'test/engine/mock_connection_manager.h', 43 'test/engine/test_directory_setter_upper.cc', 44 'test/engine/test_directory_setter_upper.h', 45 'test/engine/test_id_factory.h', 46 'test/engine/test_syncable_utils.cc', 47 'test/engine/test_syncable_utils.h', 48 'test/fake_encryptor.cc', 49 'test/fake_encryptor.h', 50 'test/fake_sync_encryption_handler.cc', 51 'test/fake_sync_encryption_handler.h', 52 'test/null_directory_change_delegate.cc', 53 'test/null_directory_change_delegate.h', 54 'test/null_transaction_observer.cc', 55 'test/null_transaction_observer.h', 56 'test/sessions/test_scoped_session_event_listener.h', 57 'test/sessions/mock_debug_info_getter.h', 58 'test/sessions/mock_debug_info_getter.cc', 59 'test/test_directory_backing_store.cc', 60 'test/test_directory_backing_store.h', 61 'test/test_transaction_observer.cc', 62 'test/test_transaction_observer.h', 63 'util/test_unrecoverable_error_handler.cc', 64 'util/test_unrecoverable_error_handler.h', 65 ], 66 }, 67 68 # Test support files for the python sync test server. 69 { 70 'target_name': 'test_support_sync_testserver', 71 'type': 'static_library', 72 'variables': { 'enable_wexit_time_destructors': 1, }, 73 'include_dirs': [ 74 '..', 75 ], 76 'dependencies': [ 77 '../base/base.gyp:base', 78 '../net/net.gyp:net_test_support', 79 # The sync test server uses Python modules generated by the sync protos. 80 '../third_party/protobuf/protobuf.gyp:py_proto', 81 'sync', 82 ], 83 'export_dependent_settings': [ 84 '../base/base.gyp:base', 85 '../net/net.gyp:net_test_support', 86 ], 87 'sources': [ 88 'test/local_sync_test_server.cc', 89 'test/local_sync_test_server.h', 90 ], 91 }, 92 93 # Test support files for the 'sync_notifier' target. 94 { 95 'target_name': 'test_support_sync_notifier', 96 'type': 'static_library', 97 'include_dirs': [ 98 '..', 99 ], 100 'defines': [ 101 'SYNC_TEST' 102 ], 103 'dependencies': [ 104 '../testing/gmock.gyp:gmock', 105 '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_proto_cpp', 106 'sync', 107 ], 108 'export_dependent_settings': [ 109 '../testing/gmock.gyp:gmock', 110 '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_proto_cpp', 111 'sync', 112 ], 113 'sources': [ 114 'notifier/fake_invalidation_handler.cc', 115 'notifier/fake_invalidation_handler.h', 116 'notifier/fake_invalidation_state_tracker.cc', 117 'notifier/fake_invalidation_state_tracker.h', 118 'notifier/fake_invalidator.cc', 119 'notifier/fake_invalidator.h', 120 'notifier/invalidator_test_template.cc', 121 'notifier/invalidator_test_template.h', 122 'notifier/unacked_invalidation_set_test_util.cc', 123 'notifier/unacked_invalidation_set_test_util.h', 124 'internal_api/public/base/object_id_invalidation_map_test_util.h', 125 'internal_api/public/base/object_id_invalidation_map_test_util.cc', 126 ], 127 }, 128 129 # Test support files for the 'sync_internal_api' target. 130 { 131 'target_name': 'test_support_sync_internal_api', 132 'type': 'static_library', 133 'variables': { 'enable_wexit_time_destructors': 1, }, 134 'include_dirs': [ 135 '..', 136 ], 137 'defines': [ 138 'SYNC_TEST' 139 ], 140 'dependencies': [ 141 '../base/base.gyp:base', 142 '../testing/gtest.gyp:gtest', 143 'sync', 144 'test_support_sync_core', 145 ], 146 'export_dependent_settings': [ 147 '../testing/gtest.gyp:gtest', 148 'sync', 149 'test_support_sync_core', 150 ], 151 'sources': [ 152 'internal_api/public/base/invalidation_test_util.cc', 153 'internal_api/public/base/invalidation_test_util.h', 154 'internal_api/public/test/fake_sync_manager.h', 155 'internal_api/public/test/sync_manager_factory_for_profile_sync_test.h', 156 'internal_api/public/test/test_entry_factory.h', 157 'internal_api/public/test/test_internal_components_factory.h', 158 'internal_api/public/test/test_user_share.h', 159 'internal_api/test/fake_sync_manager.cc', 160 'internal_api/test/sync_manager_factory_for_profile_sync_test.cc', 161 'internal_api/test/sync_manager_for_profile_sync_test.cc', 162 'internal_api/test/sync_manager_for_profile_sync_test.h', 163 'internal_api/test/test_entry_factory.cc', 164 'internal_api/test/test_internal_components_factory.cc', 165 'internal_api/test/test_user_share.cc', 166 ], 167 }, 168 169 # Test support files for the 'sync_api' target. 170 { 171 'target_name': 'test_support_sync_api', 172 'type': 'static_library', 173 'include_dirs': [ 174 '..', 175 ], 176 'defines': [ 177 'SYNC_TEST' 178 ], 179 'dependencies': [ 180 '../testing/gmock.gyp:gmock', 181 'sync', 182 ], 183 'export_dependent_settings': [ 184 '../testing/gmock.gyp:gmock', 185 'sync', 186 ], 187 'sources': [ 188 'api/fake_syncable_service.cc', 189 'api/fake_syncable_service.h', 190 'api/sync_error_factory_mock.cc', 191 'api/sync_error_factory_mock.h', 192 ], 193 }, 194 195 # Unit tests for the 'sync_core' target. This cannot be a static 196 # library because the unit test files have to be compiled directly 197 # into the executable, so we push the target files to the 198 # depending executable target via direct_dependent_settings. 199 { 200 'target_name': 'sync_core_tests', 201 'type': 'none', 202 # We only want unit test executables to include this target. 203 'suppress_wildcard': 1, 204 'dependencies': [ 205 '../base/base.gyp:base', 206 '../sql/sql.gyp:sql', 207 '../testing/gmock.gyp:gmock', 208 '../testing/gtest.gyp:gtest', 209 'sync', 210 'test_support_sync_core', 211 ], 212 'conditions': [ 213 ['OS=="linux" and chromeos==1', { 214 # Required by get_session_name_unittest.cc on Chrome OS. 215 'dependencies': [ 216 '../chromeos/chromeos.gyp:chromeos', 217 ], 218 }], 219 ], 220 # Propagate all dependencies since the actual compilation 221 # happens in the dependents. 222 'export_dependent_settings': [ 223 '../base/base.gyp:base', 224 '../sql/sql.gyp:sql', 225 '../testing/gmock.gyp:gmock', 226 '../testing/gtest.gyp:gtest', 227 'sync', 228 'test_support_sync_core', 229 ], 230 'direct_dependent_settings': { 231 'include_dirs': [ 232 '..', 233 ], 234 'sources': [ 235 'internal_api/public/base/cancelation_signal_unittest.cc', 236 'internal_api/public/base/enum_set_unittest.cc', 237 'internal_api/public/base/node_ordinal_unittest.cc', 238 'internal_api/public/base/ordinal_unittest.cc', 239 'internal_api/public/base/unique_position_unittest.cc', 240 'internal_api/public/engine/model_safe_worker_unittest.cc', 241 'internal_api/public/util/immutable_unittest.cc', 242 'internal_api/public/util/weak_handle_unittest.cc', 243 'engine/apply_control_data_updates_unittest.cc', 244 'engine/backoff_delay_provider_unittest.cc', 245 'engine/download_unittest.cc', 246 'engine/sync_scheduler_unittest.cc', 247 'engine/syncer_proto_util_unittest.cc', 248 'engine/syncer_unittest.cc', 249 'engine/sync_directory_commit_contribution_unittest.cc', 250 'engine/sync_directory_update_handler_unittest.cc', 251 'engine/traffic_recorder_unittest.cc', 252 'js/js_arg_list_unittest.cc', 253 'js/js_event_details_unittest.cc', 254 'js/sync_js_controller_unittest.cc', 255 'protocol/proto_enum_conversions_unittest.cc', 256 'protocol/proto_value_conversions_unittest.cc', 257 'sessions/nudge_tracker_unittest.cc', 258 'sessions/status_controller_unittest.cc', 259 'sessions/sync_session_unittest.cc', 260 'syncable/directory_backing_store_unittest.cc', 261 'syncable/model_type_unittest.cc', 262 'syncable/nigori_util_unittest.cc', 263 'syncable/parent_child_index_unittest.cc', 264 'syncable/syncable_enum_conversions_unittest.cc', 265 'syncable/syncable_id_unittest.cc', 266 'syncable/syncable_unittest.cc', 267 'syncable/syncable_util_unittest.cc', 268 'util/cryptographer_unittest.cc', 269 'util/data_type_histogram_unittest.cc', 270 'util/get_session_name_unittest.cc', 271 'util/nigori_unittest.cc', 272 'util/protobuf_unittest.cc', 273 ], 274 }, 275 }, 276 277 # Unit tests for the 'sync_notifier' target. This cannot be a static 278 # library because the unit test files have to be compiled directly 279 # into the executable, so we push the target files to the 280 # depending executable target via direct_dependent_settings. 281 { 282 'target_name': 'sync_notifier_tests', 283 'type': 'none', 284 # We only want unit test executables to include this target. 285 'suppress_wildcard': 1, 286 'dependencies': [ 287 '../base/base.gyp:base', 288 '../jingle/jingle.gyp:notifier_test_util', 289 '../net/net.gyp:net_test_support', 290 '../testing/gmock.gyp:gmock', 291 '../testing/gtest.gyp:gtest', 292 '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation', 293 '../third_party/libjingle/libjingle.gyp:libjingle', 294 'sync', 295 'test_support_sync_notifier', 296 ], 297 # Propagate all dependencies since the actual compilation 298 # happens in the dependents. 299 'export_dependent_settings': [ 300 '../base/base.gyp:base', 301 '../jingle/jingle.gyp:notifier_test_util', 302 '../net/net.gyp:net_test_support', 303 '../testing/gmock.gyp:gmock', 304 '../testing/gtest.gyp:gtest', 305 '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation', 306 '../third_party/libjingle/libjingle.gyp:libjingle', 307 'sync', 308 'test_support_sync_notifier', 309 ], 310 'direct_dependent_settings': { 311 'include_dirs': [ 312 '..', 313 ], 314 'conditions': [ 315 ['OS != "android"', { 316 'sources': [ 317 'notifier/fake_invalidator_unittest.cc', 318 'notifier/invalidation_notifier_unittest.cc', 319 'notifier/invalidator_registrar_unittest.cc', 320 'notifier/non_blocking_invalidator_unittest.cc', 321 'notifier/object_id_invalidation_map_unittest.cc', 322 'notifier/p2p_invalidator_unittest.cc', 323 'notifier/push_client_channel_unittest.cc', 324 'notifier/registration_manager_unittest.cc', 325 'notifier/single_object_invalidation_set_unittest.cc', 326 'notifier/sync_invalidation_listener_unittest.cc', 327 'notifier/sync_system_resources_unittest.cc', 328 'notifier/unacked_invalidation_set_unittest.cc', 329 ], 330 }], 331 ], 332 }, 333 }, 334 335 # Unit tests for the 'sync_internal_api' target. This cannot be a static 336 # library because the unit test files have to be compiled directly 337 # into the executable, so we push the target files to the 338 # depending executable target via direct_dependent_settings. 339 { 340 'target_name': 'sync_internal_api_tests', 341 'type': 'none', 342 # We only want unit test executables to include this target. 343 'suppress_wildcard': 1, 344 'dependencies': [ 345 '../base/base.gyp:base', 346 '../net/net.gyp:net', 347 '../net/net.gyp:net_test_support', 348 '../testing/gmock.gyp:gmock', 349 '../testing/gtest.gyp:gtest', 350 'sync', 351 'test_support_sync_internal_api', 352 ], 353 # Propagate all dependencies since the actual compilation 354 # happens in the dependents. 355 'export_dependent_settings': [ 356 '../base/base.gyp:base', 357 '../net/net.gyp:net', 358 '../net/net.gyp:net_test_support', 359 '../testing/gmock.gyp:gmock', 360 '../testing/gtest.gyp:gtest', 361 'sync', 362 'test_support_sync_internal_api', 363 ], 364 'direct_dependent_settings': { 365 'include_dirs': [ 366 '..', 367 ], 368 'sources': [ 369 'internal_api/debug_info_event_listener_unittest.cc', 370 'internal_api/http_bridge_unittest.cc', 371 'internal_api/js_mutation_event_observer_unittest.cc', 372 'internal_api/js_sync_encryption_handler_observer_unittest.cc', 373 'internal_api/js_sync_manager_observer_unittest.cc', 374 'internal_api/public/change_record_unittest.cc', 375 'internal_api/public/sessions/sync_session_snapshot_unittest.cc', 376 'internal_api/syncapi_server_connection_manager_unittest.cc', 377 'internal_api/sync_encryption_handler_impl_unittest.cc', 378 'internal_api/sync_manager_impl_unittest.cc', 379 ], 380 'conditions': [ 381 ['OS == "ios"', { 382 'sources!': [ 383 'internal_api/http_bridge_unittest.cc', 384 ], 385 }], 386 ], 387 }, 388 }, 389 390 # Unit tests for the 'sync_api' target. This cannot be a static 391 # library because the unit test files have to be compiled directly 392 # into the executable, so we push the target files to the 393 # depending executable target via direct_dependent_settings. 394 { 395 'target_name': 'sync_api_tests', 396 'type': 'none', 397 # We only want unit test executables to include this target. 398 'suppress_wildcard': 1, 399 'dependencies': [ 400 '../base/base.gyp:base', 401 '../testing/gtest.gyp:gtest', 402 'sync', 403 'test_support_sync_internal_api', 404 ], 405 # Propagate all dependencies since the actual compilation 406 # happens in the dependents. 407 'export_dependent_settings': [ 408 '../base/base.gyp:base', 409 '../testing/gtest.gyp:gtest', 410 'sync', 411 'test_support_sync_internal_api', 412 ], 413 'direct_dependent_settings': { 414 'include_dirs': [ 415 '..', 416 ], 417 'sources': [ 418 'api/sync_change_unittest.cc', 419 'api/sync_error_unittest.cc', 420 'api/sync_merge_result_unittest.cc', 421 ], 422 }, 423 }, 424 425 # The unit test executable for sync tests. 426 { 427 'target_name': 'sync_unit_tests', 428 'type': '<(gtest_target_type)', 429 # Typed-parametrized tests generate exit-time destructors. 430 'variables': { 'enable_wexit_time_destructors': 0, }, 431 'defines': [ 432 'SYNC_TEST', 433 ], 434 'dependencies': [ 435 '../base/base.gyp:run_all_unittests', 436 'sync_api_tests', 437 'sync_core_tests', 438 'sync_internal_api_tests', 439 'sync_notifier_tests', 440 ], 441 'conditions': [ 442 # TODO(akalin): This is needed because histogram.cc uses 443 # leak_annotations.h, which pulls this in. Make 'base' 444 # propagate this dependency. 445 ['OS=="linux" and linux_use_tcmalloc==1', { 446 'dependencies': [ 447 '../base/allocator/allocator.gyp:allocator', 448 ], 449 }], 450 ['OS == "android" and gtest_target_type == "shared_library"', { 451 'dependencies': [ 452 '../testing/android/native_test.gyp:native_test_native_code', 453 ], 454 }], 455 ], 456 }, 457 458 # Test support files for using the Test Accounts service. 459 { 460 'target_name': 'test_support_accounts_client', 461 'type': 'static_library', 462 'direct_dependent_settings': { 463 'include_dirs': [ 464 '..', 465 ], 466 }, 467 'dependencies': [ 468 '../base/base.gyp:base', 469 '../net/net.gyp:net', 470 ], 471 'sources': [ 472 'test/accounts_client/test_accounts_client.cc', 473 'test/accounts_client/test_accounts_client.h', 474 'test/accounts_client/url_request_context_getter.cc', 475 'test/accounts_client/url_request_context_getter.h', 476 ], 477 }, 478 479 # The Sync end-to-end (and associated infrastructure) tests. 480 { 481 'target_name': 'sync_endtoend_tests', 482 'type': '<(gtest_target_type)', 483 'dependencies': [ 484 '../base/base.gyp:run_all_unittests', 485 '../testing/gmock.gyp:gmock', 486 '../testing/gtest.gyp:gtest', 487 '../url/url.gyp:url_lib', 488 'test_support_accounts_client', 489 ], 490 'sources': [ 491 'test/accounts_client/test_accounts_client_unittest.cc', 492 ], 493 }, 494 495 ], 496 'conditions': [ 497 ['OS != "ios"', { 498 'targets': [ 499 { 500 'target_name': 'sync_tools_helper', 501 'type': 'static_library', 502 'defines': [ 503 'SYNC_IMPLEMENTATION', 504 ], 505 'include_dirs': [ 506 '..', 507 ], 508 'dependencies': [ 509 '../base/base.gyp:base', 510 'sync', 511 ], 512 'export_dependent_settings': [ 513 '../base/base.gyp:base', 514 'sync', 515 ], 516 'sources': [ 517 'tools/null_invalidation_state_tracker.cc', 518 'tools/null_invalidation_state_tracker.h', 519 ], 520 }, 521 522 # A tool that can be used to launch a python sync server instance. 523 { 524 'target_name': 'run_sync_testserver', 525 'type': 'executable', 526 'dependencies': [ 527 '../base/base.gyp:base', 528 '../base/base.gyp:test_support_base', 529 '../net/net.gyp:net_test_support', 530 '../testing/gtest.gyp:gtest', 531 'test_support_sync_testserver', 532 ], 533 'sources': [ 534 'tools/testserver/run_sync_testserver.cc', 535 ], 536 }, 537 538 # A tool to listen to sync notifications and print them out. 539 { 540 'target_name': 'sync_listen_notifications', 541 'type': 'executable', 542 'defines': [ 543 'SYNC_TEST', 544 ], 545 'dependencies': [ 546 '../base/base.gyp:base', 547 '../jingle/jingle.gyp:notifier', 548 '../net/net.gyp:net', 549 '../net/net.gyp:net_test_support', 550 'sync', 551 'sync_tools_helper', 552 ], 553 'sources': [ 554 'tools/sync_listen_notifications.cc', 555 ], 556 }, 557 558 # A standalone command-line sync client. 559 { 560 'target_name': 'sync_client', 561 'type': 'executable', 562 'defines': [ 563 'SYNC_TEST', 564 ], 565 'dependencies': [ 566 '../base/base.gyp:base', 567 '../jingle/jingle.gyp:notifier', 568 '../net/net.gyp:net', 569 '../net/net.gyp:net_test_support', 570 'sync', 571 'sync_tools_helper', 572 'test_support_sync_core' 573 ], 574 'sources': [ 575 'tools/sync_client.cc', 576 ], 577 }, 578 ], 579 }], 580 ['OS == "android"', { 581 'targets': [ 582 { 583 'target_name': 'sync_javatests', 584 'type': 'none', 585 'variables': { 586 'java_in_dir': '../sync/android/javatests', 587 }, 588 'dependencies': [ 589 'sync_java', 590 'sync_java_test_support', 591 '../base/base.gyp:base_java_test_support', 592 ], 593 'includes': [ '../build/java.gypi' ], 594 }, 595 { 596 'target_name': 'sync_java_test_support', 597 'type': 'none', 598 'variables': { 599 'package_name': 'sync_java_test_support', 600 'java_in_dir': '../sync/test/android/javatests', 601 }, 602 'dependencies': [ 603 'sync_java', 604 ], 605 'includes': [ '../build/java.gypi' ], 606 }, 607 ], 608 }], 609 # Special target to wrap a gtest_target_type==shared_library 610 # sync_unit_tests into an android apk for execution. 611 ['OS == "android" and gtest_target_type == "shared_library"', { 612 'targets': [ 613 { 614 'target_name': 'sync_unit_tests_apk', 615 'type': 'none', 616 'dependencies': [ 617 'sync_unit_tests', 618 ], 619 'variables': { 620 'test_suite_name': 'sync_unit_tests', 621 'input_shlib_path': '<(SHARED_LIB_DIR)/<(SHARED_LIB_PREFIX)sync_unit_tests<(SHARED_LIB_SUFFIX)', 622 }, 623 'includes': [ '../build/apk_test.gypi' ], 624 }, 625 ], 626 }], 627 ], 628 } 629