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