diff options
author | iilyak <iilyak@users.noreply.github.com> | 2019-07-29 07:44:08 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-29 07:44:08 -0700 |
commit | f37e1e73205e98d6a74a714a23c4a59f7cf2bb0b (patch) | |
tree | cdc6c540ed1b43ec6363bade88ef853378b52ec1 | |
parent | 29d484e45054c4b40f6b3a223298c8a31914f90d (diff) | |
parent | 25ad74a6cdc03732265d5175218e96a004dd4c40 (diff) | |
download | couchdb-f37e1e73205e98d6a74a714a23c4a59f7cf2bb0b.tar.gz |
Merge pull request #2039 from cloudant/exunit-simplified
Exunit simplified
-rw-r--r-- | .credo.exs (renamed from test/elixir/.credo.exs) | 11 | ||||
-rw-r--r-- | .formatter.exs | 9 | ||||
-rw-r--r-- | .gitignore | 7 | ||||
-rw-r--r-- | .travis.yml | 5 | ||||
-rw-r--r-- | Makefile | 33 | ||||
-rw-r--r-- | Makefile.win | 22 | ||||
-rw-r--r-- | config/config.exs | 30 | ||||
-rw-r--r-- | config/dev.exs | 1 | ||||
-rw-r--r-- | config/integration.exs | 12 | ||||
-rw-r--r-- | config/prod.exs | 1 | ||||
-rw-r--r-- | config/test.exs | 12 | ||||
-rw-r--r-- | mix.exs | 60 | ||||
-rw-r--r-- | mix.lock (renamed from test/elixir/mix.lock) | 6 | ||||
-rw-r--r-- | src/chttpd/test/eunit/chttpd_cors_test.erl (renamed from src/chttpd/test/chttpd_cors_test.erl) | 0 | ||||
-rw-r--r-- | src/chttpd/test/eunit/chttpd_csp_tests.erl (renamed from src/chttpd/test/chttpd_csp_tests.erl) | 0 | ||||
-rw-r--r-- | src/chttpd/test/eunit/chttpd_db_attachment_size_tests.erl (renamed from src/chttpd/test/chttpd_db_attachment_size_tests.erl) | 0 | ||||
-rw-r--r-- | src/chttpd/test/eunit/chttpd_db_bulk_get_multipart_test.erl (renamed from src/chttpd/test/chttpd_db_bulk_get_multipart_test.erl) | 0 | ||||
-rw-r--r-- | src/chttpd/test/eunit/chttpd_db_bulk_get_test.erl (renamed from src/chttpd/test/chttpd_db_bulk_get_test.erl) | 0 | ||||
-rw-r--r-- | src/chttpd/test/eunit/chttpd_db_doc_size_tests.erl (renamed from src/chttpd/test/chttpd_db_doc_size_tests.erl) | 0 | ||||
-rw-r--r-- | src/chttpd/test/eunit/chttpd_db_test.erl (renamed from src/chttpd/test/chttpd_db_test.erl) | 0 | ||||
-rw-r--r-- | src/chttpd/test/eunit/chttpd_dbs_info_test.erl (renamed from src/chttpd/test/chttpd_dbs_info_test.erl) | 0 | ||||
-rw-r--r-- | src/chttpd/test/eunit/chttpd_error_info_tests.erl (renamed from src/chttpd/test/chttpd_error_info_tests.erl) | 0 | ||||
-rw-r--r-- | src/chttpd/test/eunit/chttpd_handlers_tests.erl (renamed from src/chttpd/test/chttpd_handlers_tests.erl) | 0 | ||||
-rw-r--r-- | src/chttpd/test/eunit/chttpd_open_revs_error_test.erl (renamed from src/chttpd/test/chttpd_open_revs_error_test.erl) | 0 | ||||
-rw-r--r-- | src/chttpd/test/eunit/chttpd_plugin_tests.erl (renamed from src/chttpd/test/chttpd_plugin_tests.erl) | 0 | ||||
-rw-r--r-- | src/chttpd/test/eunit/chttpd_prefer_header_test.erl (renamed from src/chttpd/test/chttpd_prefer_header_test.erl) | 0 | ||||
-rw-r--r-- | src/chttpd/test/eunit/chttpd_purge_tests.erl (renamed from src/chttpd/test/chttpd_purge_tests.erl) | 0 | ||||
-rw-r--r-- | src/chttpd/test/eunit/chttpd_security_tests.erl (renamed from src/chttpd/test/chttpd_security_tests.erl) | 0 | ||||
-rw-r--r-- | src/chttpd/test/eunit/chttpd_socket_buffer_size_test.erl (renamed from src/chttpd/test/chttpd_socket_buffer_size_test.erl) | 0 | ||||
-rw-r--r-- | src/chttpd/test/eunit/chttpd_view_test.erl (renamed from src/chttpd/test/chttpd_view_test.erl) | 0 | ||||
-rw-r--r-- | src/chttpd/test/eunit/chttpd_welcome_test.erl (renamed from src/chttpd/test/chttpd_welcome_test.erl) | 0 | ||||
-rw-r--r-- | src/chttpd/test/eunit/chttpd_xframe_test.erl (renamed from src/chttpd/test/chttpd_xframe_test.erl) | 0 | ||||
-rw-r--r-- | src/couch/include/couch_eunit.hrl | 2 | ||||
-rw-r--r-- | src/couch/test/eunit/chttpd_endpoints_tests.erl (renamed from src/couch/test/chttpd_endpoints_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_auth_cache_tests.erl (renamed from src/couch/test/couch_auth_cache_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_base32_tests.erl (renamed from src/couch/test/couch_base32_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_bt_engine_compactor_tests.erl (renamed from src/couch/test/couch_bt_engine_compactor_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_bt_engine_tests.erl (renamed from src/couch/test/couch_bt_engine_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_bt_engine_upgrade_tests.erl (renamed from src/couch/test/couch_bt_engine_upgrade_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_btree_tests.erl (renamed from src/couch/test/couch_btree_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_changes_tests.erl (renamed from src/couch/test/couch_changes_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_compress_tests.erl (renamed from src/couch/test/couch_compress_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_db_doc_tests.erl (renamed from src/couch/test/couch_db_doc_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_db_mpr_tests.erl (renamed from src/couch/test/couch_db_mpr_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_db_plugin_tests.erl (renamed from src/couch/test/couch_db_plugin_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_db_props_upgrade_tests.erl (renamed from src/couch/test/couch_db_props_upgrade_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_db_split_tests.erl (renamed from src/couch/test/couch_db_split_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_db_tests.erl (renamed from src/couch/test/couch_db_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_doc_json_tests.erl (renamed from src/couch/test/couch_doc_json_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_doc_tests.erl (renamed from src/couch/test/couch_doc_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_ejson_size_tests.erl (renamed from src/couch/test/couch_ejson_size_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_etag_tests.erl (renamed from src/couch/test/couch_etag_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_file_tests.erl (renamed from src/couch/test/couch_file_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_flags_config_tests.erl (renamed from src/couch/test/couch_flags_config_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_flags_tests.erl (renamed from src/couch/test/couch_flags_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_hotp_tests.erl (renamed from src/couch/test/couch_hotp_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_index_tests.erl (renamed from src/couch/test/couch_index_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_key_tree_prop_tests.erl (renamed from src/couch/test/couch_key_tree_prop_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_key_tree_tests.erl (renamed from src/couch/test/couch_key_tree_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_passwords_tests.erl (renamed from src/couch/test/couch_passwords_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_query_servers_tests.erl (renamed from src/couch/test/couch_query_servers_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_server_tests.erl (renamed from src/couch/test/couch_server_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_stream_tests.erl (renamed from src/couch/test/couch_stream_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_task_status_tests.erl (renamed from src/couch/test/couch_task_status_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_totp_tests.erl (renamed from src/couch/test/couch_totp_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_util_tests.erl (renamed from src/couch/test/couch_util_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_uuids_tests.erl (renamed from src/couch/test/couch_uuids_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couch_work_queue_tests.erl (renamed from src/couch/test/couch_work_queue_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couchdb_attachments_tests.erl (renamed from src/couch/test/couchdb_attachments_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couchdb_auth_tests.erl (renamed from src/couch/test/couchdb_auth_tests.erl) | 0 | ||||
-rwxr-xr-x | src/couch/test/eunit/couchdb_cookie_domain_tests.erl (renamed from src/couch/test/couchdb_cookie_domain_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couchdb_cors_tests.erl (renamed from src/couch/test/couchdb_cors_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couchdb_db_tests.erl (renamed from src/couch/test/couchdb_db_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couchdb_design_doc_tests.erl (renamed from src/couch/test/couchdb_design_doc_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couchdb_file_compression_tests.erl (renamed from src/couch/test/couchdb_file_compression_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couchdb_location_header_tests.erl (renamed from src/couch/test/couchdb_location_header_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couchdb_mrview_cors_tests.erl (renamed from src/couch/test/couchdb_mrview_cors_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couchdb_mrview_tests.erl (renamed from src/couch/test/couchdb_mrview_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couchdb_os_proc_pool.erl (renamed from src/couch/test/couchdb_os_proc_pool.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couchdb_update_conflicts_tests.erl (renamed from src/couch/test/couchdb_update_conflicts_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couchdb_vhosts_tests.erl (renamed from src/couch/test/couchdb_vhosts_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/couchdb_views_tests.erl (renamed from src/couch/test/couchdb_views_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/fixtures/3b835456c235b1827e012e25666152f3.view (renamed from src/couch/test/fixtures/3b835456c235b1827e012e25666152f3.view) | bin | 4192 -> 4192 bytes | |||
-rw-r--r-- | src/couch/test/eunit/fixtures/couch_stats_aggregates.cfg (renamed from src/couch/test/fixtures/couch_stats_aggregates.cfg) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/fixtures/couch_stats_aggregates.ini (renamed from src/couch/test/fixtures/couch_stats_aggregates.ini) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/fixtures/db_non_partitioned.couch (renamed from src/couch/test/fixtures/db_non_partitioned.couch) | bin | 12479 -> 12479 bytes | |||
-rw-r--r-- | src/couch/test/eunit/fixtures/db_v6_with_1_purge_req.couch (renamed from src/couch/test/fixtures/db_v6_with_1_purge_req.couch) | bin | 12470 -> 12470 bytes | |||
-rw-r--r-- | src/couch/test/eunit/fixtures/db_v6_with_1_purge_req_for_2_docs.couch (renamed from src/couch/test/fixtures/db_v6_with_1_purge_req_for_2_docs.couch) | bin | 16557 -> 16557 bytes | |||
-rw-r--r-- | src/couch/test/eunit/fixtures/db_v6_with_2_purge_req.couch (renamed from src/couch/test/fixtures/db_v6_with_2_purge_req.couch) | bin | 16566 -> 16566 bytes | |||
-rw-r--r-- | src/couch/test/eunit/fixtures/db_v6_without_purge_req.couch (renamed from src/couch/test/fixtures/db_v6_without_purge_req.couch) | bin | 61644 -> 61644 bytes | |||
-rw-r--r-- | src/couch/test/eunit/fixtures/db_v7_with_1_purge_req.couch (renamed from src/couch/test/fixtures/db_v7_with_1_purge_req.couch) | bin | 16617 -> 16617 bytes | |||
-rw-r--r-- | src/couch/test/eunit/fixtures/db_v7_with_1_purge_req_for_2_docs.couch (renamed from src/couch/test/fixtures/db_v7_with_1_purge_req_for_2_docs.couch) | bin | 20705 -> 20705 bytes | |||
-rw-r--r-- | src/couch/test/eunit/fixtures/db_v7_with_2_purge_req.couch (renamed from src/couch/test/fixtures/db_v7_with_2_purge_req.couch) | bin | 20713 -> 20713 bytes | |||
-rw-r--r-- | src/couch/test/eunit/fixtures/db_v7_without_purge_req.couch (renamed from src/couch/test/fixtures/db_v7_without_purge_req.couch) | bin | 65781 -> 65781 bytes | |||
-rw-r--r-- | src/couch/test/eunit/fixtures/logo.png (renamed from src/couch/test/fixtures/logo.png) | bin | 3010 -> 3010 bytes | |||
-rw-r--r-- | src/couch/test/eunit/fixtures/multipart.http (renamed from src/couch/test/fixtures/multipart.http) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/fixtures/os_daemon_bad_perm.sh (renamed from src/couch/test/fixtures/os_daemon_bad_perm.sh) | 0 | ||||
-rwxr-xr-x | src/couch/test/eunit/fixtures/os_daemon_can_reboot.sh (renamed from src/couch/test/fixtures/os_daemon_can_reboot.sh) | 0 | ||||
-rwxr-xr-x | src/couch/test/eunit/fixtures/os_daemon_configer.escript (renamed from src/couch/test/fixtures/os_daemon_configer.escript) | 0 | ||||
-rwxr-xr-x | src/couch/test/eunit/fixtures/os_daemon_die_on_boot.sh (renamed from src/couch/test/fixtures/os_daemon_die_on_boot.sh) | 0 | ||||
-rwxr-xr-x | src/couch/test/eunit/fixtures/os_daemon_die_quickly.sh (renamed from src/couch/test/fixtures/os_daemon_die_quickly.sh) | 0 | ||||
-rwxr-xr-x | src/couch/test/eunit/fixtures/os_daemon_looper.escript (renamed from src/couch/test/fixtures/os_daemon_looper.escript) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/fixtures/test.couch (renamed from src/couch/test/fixtures/test.couch) | bin | 16482 -> 16482 bytes | |||
-rw-r--r-- | src/couch/test/eunit/global_changes_tests.erl (renamed from src/couch/test/global_changes_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/json_stream_parse_tests.erl (renamed from src/couch/test/json_stream_parse_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/eunit/test_web.erl (renamed from src/couch/test/test_web.erl) | 0 | ||||
-rw-r--r-- | src/couch/test/exunit/test_helper.exs | 2 | ||||
-rw-r--r-- | src/couch_epi/test/eunit/couch_epi_basic_test.erl (renamed from src/couch_epi/test/couch_epi_basic_test.erl) | 0 | ||||
-rw-r--r-- | src/couch_epi/test/eunit/couch_epi_tests.erl (renamed from src/couch_epi/test/couch_epi_tests.erl) | 4 | ||||
-rw-r--r-- | src/couch_epi/test/eunit/fixtures/app_data1.cfg (renamed from src/couch_epi/test/fixtures/app_data1.cfg) | 0 | ||||
-rw-r--r-- | src/couch_epi/test/eunit/fixtures/app_data2.cfg (renamed from src/couch_epi/test/fixtures/app_data2.cfg) | 0 | ||||
-rw-r--r-- | src/couch_index/test/eunit/couch_index_compaction_tests.erl (renamed from src/couch_index/test/couch_index_compaction_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_index/test/eunit/couch_index_ddoc_updated_tests.erl (renamed from src/couch_index/test/couch_index_ddoc_updated_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_log/test/eunit/couch_log_config_listener_test.erl (renamed from src/couch_log/test/couch_log_config_listener_test.erl) | 0 | ||||
-rw-r--r-- | src/couch_log/test/eunit/couch_log_config_test.erl (renamed from src/couch_log/test/couch_log_config_test.erl) | 0 | ||||
-rw-r--r-- | src/couch_log/test/eunit/couch_log_error_logger_h_test.erl (renamed from src/couch_log/test/couch_log_error_logger_h_test.erl) | 0 | ||||
-rw-r--r-- | src/couch_log/test/eunit/couch_log_formatter_test.erl (renamed from src/couch_log/test/couch_log_formatter_test.erl) | 0 | ||||
-rw-r--r-- | src/couch_log/test/eunit/couch_log_monitor_test.erl (renamed from src/couch_log/test/couch_log_monitor_test.erl) | 0 | ||||
-rw-r--r-- | src/couch_log/test/eunit/couch_log_server_test.erl (renamed from src/couch_log/test/couch_log_server_test.erl) | 0 | ||||
-rw-r--r-- | src/couch_log/test/eunit/couch_log_test.erl (renamed from src/couch_log/test/couch_log_test.erl) | 0 | ||||
-rw-r--r-- | src/couch_log/test/eunit/couch_log_test_util.erl (renamed from src/couch_log/test/couch_log_test_util.erl) | 0 | ||||
-rw-r--r-- | src/couch_log/test/eunit/couch_log_trunc_io_fmt_test.erl (renamed from src/couch_log/test/couch_log_trunc_io_fmt_test.erl) | 0 | ||||
-rw-r--r-- | src/couch_log/test/eunit/couch_log_util_test.erl (renamed from src/couch_log/test/couch_log_util_test.erl) | 0 | ||||
-rw-r--r-- | src/couch_log/test/eunit/couch_log_writer_ets.erl (renamed from src/couch_log/test/couch_log_writer_ets.erl) | 0 | ||||
-rw-r--r-- | src/couch_log/test/eunit/couch_log_writer_file_test.erl (renamed from src/couch_log/test/couch_log_writer_file_test.erl) | 0 | ||||
-rw-r--r-- | src/couch_log/test/eunit/couch_log_writer_stderr_test.erl (renamed from src/couch_log/test/couch_log_writer_stderr_test.erl) | 0 | ||||
-rw-r--r-- | src/couch_log/test/eunit/couch_log_writer_syslog_test.erl (renamed from src/couch_log/test/couch_log_writer_syslog_test.erl) | 0 | ||||
-rw-r--r-- | src/couch_log/test/eunit/couch_log_writer_test.erl (renamed from src/couch_log/test/couch_log_writer_test.erl) | 0 | ||||
-rw-r--r-- | src/couch_mrview/test/eunit/couch_mrview_all_docs_tests.erl (renamed from src/couch_mrview/test/couch_mrview_all_docs_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_mrview/test/eunit/couch_mrview_changes_since_tests.erl (renamed from src/couch_mrview/test/couch_mrview_changes_since_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_mrview/test/eunit/couch_mrview_collation_tests.erl (renamed from src/couch_mrview/test/couch_mrview_collation_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_mrview/test/eunit/couch_mrview_compact_tests.erl (renamed from src/couch_mrview/test/couch_mrview_compact_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_mrview/test/eunit/couch_mrview_ddoc_updated_tests.erl (renamed from src/couch_mrview/test/couch_mrview_ddoc_updated_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_mrview/test/eunit/couch_mrview_ddoc_validation_tests.erl (renamed from src/couch_mrview/test/couch_mrview_ddoc_validation_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_mrview/test/eunit/couch_mrview_design_docs_tests.erl (renamed from src/couch_mrview/test/couch_mrview_design_docs_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_mrview/test/eunit/couch_mrview_http_tests.erl (renamed from src/couch_mrview/test/couch_mrview_http_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_mrview/test/eunit/couch_mrview_index_changes_tests.erl (renamed from src/couch_mrview/test/couch_mrview_index_changes_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_mrview/test/eunit/couch_mrview_index_info_tests.erl (renamed from src/couch_mrview/test/couch_mrview_index_info_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_mrview/test/eunit/couch_mrview_local_docs_tests.erl (renamed from src/couch_mrview/test/couch_mrview_local_docs_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_mrview/test/eunit/couch_mrview_map_views_tests.erl (renamed from src/couch_mrview/test/couch_mrview_map_views_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_mrview/test/eunit/couch_mrview_purge_docs_fabric_tests.erl (renamed from src/couch_mrview/test/couch_mrview_purge_docs_fabric_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_mrview/test/eunit/couch_mrview_purge_docs_tests.erl (renamed from src/couch_mrview/test/couch_mrview_purge_docs_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_mrview/test/eunit/couch_mrview_red_views_tests.erl (renamed from src/couch_mrview/test/couch_mrview_red_views_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_mrview/test/eunit/couch_mrview_util_tests.erl (renamed from src/couch_mrview/test/couch_mrview_util_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_peruser/test/eunit/couch_peruser_test.erl (renamed from src/couch_peruser/test/couch_peruser_test.erl) | 0 | ||||
-rw-r--r-- | src/couch_replicator/test/eunit/couch_replicator_attachments_too_large.erl (renamed from src/couch_replicator/test/couch_replicator_attachments_too_large.erl) | 0 | ||||
-rw-r--r-- | src/couch_replicator/test/eunit/couch_replicator_compact_tests.erl (renamed from src/couch_replicator/test/couch_replicator_compact_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_replicator/test/eunit/couch_replicator_connection_tests.erl (renamed from src/couch_replicator/test/couch_replicator_connection_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_replicator/test/eunit/couch_replicator_create_target_with_options_tests.erl (renamed from src/couch_replicator/test/couch_replicator_create_target_with_options_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_replicator/test/eunit/couch_replicator_filtered_tests.erl (renamed from src/couch_replicator/test/couch_replicator_filtered_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_replicator/test/eunit/couch_replicator_httpc_pool_tests.erl (renamed from src/couch_replicator/test/couch_replicator_httpc_pool_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_replicator/test/eunit/couch_replicator_id_too_long_tests.erl (renamed from src/couch_replicator/test/couch_replicator_id_too_long_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_replicator/test/eunit/couch_replicator_large_atts_tests.erl (renamed from src/couch_replicator/test/couch_replicator_large_atts_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_replicator/test/eunit/couch_replicator_many_leaves_tests.erl (renamed from src/couch_replicator/test/couch_replicator_many_leaves_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_replicator/test/eunit/couch_replicator_missing_stubs_tests.erl (renamed from src/couch_replicator/test/couch_replicator_missing_stubs_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_replicator/test/eunit/couch_replicator_proxy_tests.erl (renamed from src/couch_replicator/test/couch_replicator_proxy_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_replicator/test/eunit/couch_replicator_rate_limiter_tests.erl (renamed from src/couch_replicator/test/couch_replicator_rate_limiter_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_replicator/test/eunit/couch_replicator_retain_stats_between_job_runs.erl (renamed from src/couch_replicator/test/couch_replicator_retain_stats_between_job_runs.erl) | 0 | ||||
-rw-r--r-- | src/couch_replicator/test/eunit/couch_replicator_selector_tests.erl (renamed from src/couch_replicator/test/couch_replicator_selector_tests.erl) | 0 | ||||
-rw-r--r-- | src/couch_replicator/test/eunit/couch_replicator_small_max_request_size_target.erl (renamed from src/couch_replicator/test/couch_replicator_small_max_request_size_target.erl) | 0 | ||||
-rw-r--r-- | src/couch_replicator/test/eunit/couch_replicator_test_helper.erl (renamed from src/couch_replicator/test/couch_replicator_test_helper.erl) | 0 | ||||
-rw-r--r-- | src/couch_replicator/test/eunit/couch_replicator_use_checkpoints_tests.erl (renamed from src/couch_replicator/test/couch_replicator_use_checkpoints_tests.erl) | 0 | ||||
-rw-r--r-- | src/ddoc_cache/test/eunit/ddoc_cache_basic_test.erl (renamed from src/ddoc_cache/test/ddoc_cache_basic_test.erl) | 0 | ||||
-rw-r--r-- | src/ddoc_cache/test/eunit/ddoc_cache_coverage_test.erl (renamed from src/ddoc_cache/test/ddoc_cache_coverage_test.erl) | 0 | ||||
-rw-r--r-- | src/ddoc_cache/test/eunit/ddoc_cache_disabled_test.erl (renamed from src/ddoc_cache/test/ddoc_cache_disabled_test.erl) | 0 | ||||
-rw-r--r-- | src/ddoc_cache/test/eunit/ddoc_cache_entry_test.erl (renamed from src/ddoc_cache/test/ddoc_cache_entry_test.erl) | 0 | ||||
-rw-r--r-- | src/ddoc_cache/test/eunit/ddoc_cache_ev.erl (renamed from src/ddoc_cache/test/ddoc_cache_ev.erl) | 0 | ||||
-rw-r--r-- | src/ddoc_cache/test/eunit/ddoc_cache_eviction_test.erl (renamed from src/ddoc_cache/test/ddoc_cache_eviction_test.erl) | 0 | ||||
-rw-r--r-- | src/ddoc_cache/test/eunit/ddoc_cache_lru_test.erl (renamed from src/ddoc_cache/test/ddoc_cache_lru_test.erl) | 0 | ||||
-rw-r--r-- | src/ddoc_cache/test/eunit/ddoc_cache_no_cache_test.erl (renamed from src/ddoc_cache/test/ddoc_cache_no_cache_test.erl) | 0 | ||||
-rw-r--r-- | src/ddoc_cache/test/eunit/ddoc_cache_open_error_test.erl (renamed from src/ddoc_cache/test/ddoc_cache_open_error_test.erl) | 0 | ||||
-rw-r--r-- | src/ddoc_cache/test/eunit/ddoc_cache_open_test.erl (renamed from src/ddoc_cache/test/ddoc_cache_open_test.erl) | 0 | ||||
-rw-r--r-- | src/ddoc_cache/test/eunit/ddoc_cache_opener_test.erl (renamed from src/ddoc_cache/test/ddoc_cache_opener_test.erl) | 0 | ||||
-rw-r--r-- | src/ddoc_cache/test/eunit/ddoc_cache_refresh_test.erl (renamed from src/ddoc_cache/test/ddoc_cache_refresh_test.erl) | 0 | ||||
-rw-r--r-- | src/ddoc_cache/test/eunit/ddoc_cache_remove_test.erl (renamed from src/ddoc_cache/test/ddoc_cache_remove_test.erl) | 0 | ||||
-rw-r--r-- | src/ddoc_cache/test/eunit/ddoc_cache_test.hrl (renamed from src/ddoc_cache/test/ddoc_cache_test.hrl) | 0 | ||||
-rw-r--r-- | src/ddoc_cache/test/eunit/ddoc_cache_tutil.erl (renamed from src/ddoc_cache/test/ddoc_cache_tutil.erl) | 0 | ||||
-rw-r--r-- | src/dreyfus/test/elixir/test/partition_search_test.exs | 4 | ||||
-rw-r--r-- | src/fabric/test/eunit/fabric_rpc_purge_tests.erl (renamed from src/fabric/test/fabric_rpc_purge_tests.erl) | 0 | ||||
-rw-r--r-- | src/global_changes/test/eunit/global_changes_hooks_tests.erl (renamed from src/global_changes/test/global_changes_hooks_tests.erl) | 0 | ||||
-rw-r--r-- | src/mem3/test/eunit/mem3_cluster_test.erl (renamed from src/mem3/test/mem3_cluster_test.erl) | 0 | ||||
-rw-r--r-- | src/mem3/test/eunit/mem3_hash_test.erl (renamed from src/mem3/test/mem3_hash_test.erl) | 0 | ||||
-rw-r--r-- | src/mem3/test/eunit/mem3_rep_test.erl (renamed from src/mem3/test/mem3_rep_test.erl) | 0 | ||||
-rw-r--r-- | src/mem3/test/eunit/mem3_reshard_api_test.erl (renamed from src/mem3/test/mem3_reshard_api_test.erl) | 0 | ||||
-rw-r--r-- | src/mem3/test/eunit/mem3_reshard_changes_feed_test.erl (renamed from src/mem3/test/mem3_reshard_changes_feed_test.erl) | 0 | ||||
-rw-r--r-- | src/mem3/test/eunit/mem3_reshard_test.erl (renamed from src/mem3/test/mem3_reshard_test.erl) | 0 | ||||
-rw-r--r-- | src/mem3/test/eunit/mem3_ring_prop_tests.erl (renamed from src/mem3/test/mem3_ring_prop_tests.erl) | 0 | ||||
-rw-r--r-- | src/mem3/test/eunit/mem3_seeds_test.erl (renamed from src/mem3/test/mem3_seeds_test.erl) | 0 | ||||
-rw-r--r-- | src/mem3/test/eunit/mem3_sync_security_test.erl (renamed from src/mem3/test/mem3_sync_security_test.erl) | 0 | ||||
-rw-r--r-- | src/mem3/test/eunit/mem3_util_test.erl (renamed from src/mem3/test/mem3_util_test.erl) | 0 | ||||
-rw-r--r-- | test/elixir/Makefile | 4 | ||||
-rw-r--r-- | test/elixir/README.md | 143 | ||||
-rw-r--r-- | test/elixir/lib/ex_unit.ex | 44 | ||||
-rw-r--r-- | test/elixir/lib/setup.ex | 97 | ||||
-rw-r--r-- | test/elixir/lib/setup/common.ex | 22 | ||||
-rw-r--r-- | test/elixir/lib/step.ex | 44 | ||||
-rw-r--r-- | test/elixir/lib/step/config.ex | 33 | ||||
-rw-r--r-- | test/elixir/lib/step/create_db.ex | 53 | ||||
-rw-r--r-- | test/elixir/lib/step/start.ex | 85 | ||||
-rw-r--r-- | test/elixir/lib/step/user.ex | 104 | ||||
-rw-r--r-- | test/elixir/lib/utils.ex | 61 | ||||
-rw-r--r-- | test/elixir/mix.exs | 37 | ||||
-rwxr-xr-x | test/elixir/run | 6 | ||||
-rw-r--r-- | test/elixir/test/replication_test.exs | 4 | ||||
-rw-r--r-- | test/elixir/test/test_helper.exs | 8 |
205 files changed, 887 insertions, 79 deletions
diff --git a/test/elixir/.credo.exs b/.credo.exs index e24836c8f..2b84a5064 100644 --- a/test/elixir/.credo.exs +++ b/.credo.exs @@ -22,7 +22,16 @@ # In the latter case `**/*.{ex,exs}` will be used. # included: ["lib/", "src/", "test/", "web/", "apps/"], - excluded: [~r"/_build/", ~r"/deps/", ~r"/node_modules/"] + excluded: [ + ~r"/_build/", + ~r"/node_modules/", + ~r"/src/jason", + ~r"/src/httpotion", + ~r"/src/credo", + ~r"/src/junit_formatter", + ~r"/src/bunt", + ~r"/test/elixir/deps/" + ] }, # # If you create your own checks, you must specify the source files for diff --git a/.formatter.exs b/.formatter.exs new file mode 100644 index 000000000..28b883d54 --- /dev/null +++ b/.formatter.exs @@ -0,0 +1,9 @@ +# Used by "mix format" +[ + inputs: [ + "{mix,.formatter}.exs", + "{config,src}/*/test/exunit/*.{ex,exs}" + ], + line_length: 90, + rename_deprecated_at: "1.5.0" +] diff --git a/.gitignore b/.gitignore index 36bc13007..6b9198d42 100644 --- a/.gitignore +++ b/.gitignore @@ -104,3 +104,10 @@ src/global_changes/ebin/ src/mango/ebin/ src/mango/test/*.pyc src/mango/venv/ + +/_build/ +/src/bunt +/src/credo/ +/src/httpotion/ +/src/jason/ +/src/junit_formatter/ diff --git a/.travis.yml b/.travis.yml index 7ef4aeadf..4af915ee9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -41,10 +41,6 @@ env: - secure: "UdA/gKIlyuXaW+hUgRx40t1TYjLCGxMqHvM5Uw7UbUH2dqEkgJiLfhZGchS1JVzl8M01VKZUUzS7v2nvRLiHZN1kvaw5kfq31VRoafUah8jfmvqNWZVdLovHl3aw5UX/HRt0RkbWbhdbdknTfh6+YinSZ+Nb54jCErMg9nabXtM=" - COUCHDB_IO_LOG_DIR=/tmp/couchjslogs -# Change to elixir folder so that travis can run mix deps.get during install -before_install: - - cd test/elixir - # Enable this block if you want to build docs & fauxton too #node_js: # - 6 @@ -53,7 +49,6 @@ before_install: # Then comment this section out before_script: - - cd ../.. - kerl list installations - rm -rf /tmp/couchjslogs - mkdir -p /tmp/couchjslogs @@ -173,6 +173,16 @@ eunit: couch $(REBAR) -r eunit $(EUNIT_OPTS) apps=$$dir || exit 1; \ done +.PHONY: exunit +# target: exunit - Run ExUnit tests +exunit: export BUILDDIR = $(shell pwd) +exunit: export MIX_ENV=test +exunit: export ERL_LIBS = $(shell pwd)/src +exunit: export ERL_AFLAGS = -config $(shell pwd)/rel/files/eunit.config +exunit: export COUCHDB_QUERY_SERVER_JAVASCRIPT = $(shell pwd)/bin/couchjs $(shell pwd)/share/server/main.js +exunit: couch elixir-init setup-eunit elixir-check-formatted elixir-credo + @mix test --trace $(EXUNIT_OPTS) + setup-eunit: export BUILDDIR = $(shell pwd) setup-eunit: export ERL_AFLAGS = -config $(shell pwd)/rel/files/eunit.config setup-eunit: @@ -212,34 +222,37 @@ python-black-update: .venv/bin/black . dev/run rel/overlay/bin/couchup test/javascript/run .PHONY: elixir +elixir: export MIX_ENV=integration elixir: elixir-init elixir-check-formatted elixir-credo devclean - @dev/run -a adm:pass --no-eval 'test/elixir/run --exclude without_quorum_test --exclude with_quorum_test $(EXUNIT_OPTS)' + @dev/run -a adm:pass --no-eval 'mix test --trace --exclude without_quorum_test --exclude with_quorum_test $(EXUNIT_OPTS)' .PHONY: elixir-init elixir-init: - @cd test/elixir && mix local.rebar --force && mix local.hex --force && mix deps.get + @mix local.rebar --force && mix local.hex --force && mix deps.get .PHONY: elixir-cluster-without-quorum -elixir-cluster-without-quorum: elixir-check-formatted elixir-credo devclean +elixir-cluster-without-quorum: export MIX_ENV=integration +elixir-cluster-without-quorum: elixir-init elixir-check-formatted elixir-credo devclean @dev/run -n 3 -q -a adm:pass \ --degrade-cluster 2 \ - --no-eval 'test/elixir/run --only without_quorum_test $(EXUNIT_OPTS)' + --no-eval 'mix test --trace --only without_quorum_test $(EXUNIT_OPTS)' .PHONY: elixir-cluster-with-quorum -elixir-cluster-with-quorum: elixir-check-formatted elixir-credo devclean +elixir-cluster-with-quorum: export MIX_ENV=integration +elixir-cluster-with-quorum: elixir-init elixir-check-formatted elixir-credo devclean @dev/run -n 3 -q -a adm:pass \ --degrade-cluster 1 \ - --no-eval 'test/elixir/run --only with_quorum_test $(EXUNIT_OPTS)' + --no-eval 'mix test --trace --only with_quorum_test $(EXUNIT_OPTS)' .PHONY: elixir-check-formatted -elixir-check-formatted: - @cd test/elixir/ && mix format --check-formatted +elixir-check-formatted: elixir-init + @mix format --check-formatted # Credo is a static code analysis tool for Elixir. # We use it in our tests .PHONY: elixir-credo -elixir-credo: - @cd test/elixir/ && mix credo +elixir-credo: elixir-init + @mix credo .PHONY: javascript # target: javascript - Run JavaScript test suites or specific ones defined by suites option diff --git a/Makefile.win b/Makefile.win index 99ec71278..a5e23d498 100644 --- a/Makefile.win +++ b/Makefile.win @@ -144,6 +144,16 @@ eunit: couch @$(REBAR) setup_eunit 2> nul @$(REBAR) -r eunit $(EUNIT_OPTS) +.PHONY: exunit +# target: exunit - Run ExUnit tests +exunit: export BUILDDIR = $(shell echo %cd%) +exunit: export MIX_ENV=test +exunit: export ERL_LIBS = $(shell echo %cd%)\src +exunit: export ERL_AFLAGS = -config $(shell echo %cd%)/rel/files/eunit.config +exunit: export COUCHDB_QUERY_SERVER_JAVASCRIPT = $(shell echo %cd%)/bin/couchjs $(shell echo %cd%)/share/server/main.js +exunit: couch elixir-init setup-eunit elixir-check-formatted elixir-credo + @mix test --trace $(EXUNIT_OPTS) + setup-eunit: export BUILDDIR = $(shell pwd) setup-eunit: export ERL_AFLAGS = $(shell echo "-config rel/files/eunit.config") setup-eunit: @@ -177,33 +187,33 @@ python-black-update: .venv/bin/black .PHONY: elixir elixir: elixir-init elixir-check-formatted elixir-credo devclean - @dev\run -a adm:pass --no-eval 'test\elixir\run.cmd --exclude without_quorum_test --exclude with_quorum_test $(EXUNIT_OPTS)' + @dev\run -a adm:pass --no-eval 'mix test --trace --exclude without_quorum_test --exclude with_quorum_test $(EXUNIT_OPTS)' .PHONY: elixir-init elixir-init: - @cd test/elixir && mix local.rebar --force && mix local.hex --force && mix deps.get + @mix local.rebar --force && mix local.hex --force && mix deps.get .PHONY: elixir-cluster-without-quorum elixir-cluster-without-quorum: elixir-check-formatted elixir-credo devclean @dev\run -n 3 -q -a adm:pass \ --degrade-cluster 2 \ - --no-eval 'test\elixir\run.cmd --only without_quorum_test $(EXUNIT_OPTS)' + --no-eval 'mix test --trace --only without_quorum_test $(EXUNIT_OPTS)' .PHONY: elixir-cluster-with-quorum elixir-cluster-with-quorum: elixir-check-formatted elixir-credo devclean @dev\run -n 3 -q -a adm:pass \ --degrade-cluster 1 \ - --no-eval 'test\elixir\run.cmd --only with_quorum_test $(EXUNIT_OPTS)' + --no-eval 'mix test --trace --only with_quorum_test $(EXUNIT_OPTS)' .PHONY: elixir-check-formatted elixir-check-formatted: - @cd test\elixir && mix format --check-formatted + @mix format --check-formatted # Credo is a static code analysis tool for Elixir. # We use it in our tests .PHONY: elixir-credo elixir-credo: - @cd test/elixir/ && mix credo + @mix credo .PHONY: test-cluster-with-quorum test-cluster-with-quorum: devclean diff --git a/config/config.exs b/config/config.exs new file mode 100644 index 000000000..8e52433cc --- /dev/null +++ b/config/config.exs @@ -0,0 +1,30 @@ +# This file is responsible for configuring your application +# and its dependencies with the aid of the Mix.Config module. +use Mix.Config + +# This configuration is loaded before any dependency and is restricted +# to this project. If another project depends on this project, this +# file won't be loaded nor affect the parent project. For this reason, +# if you want to provide default values for your application for +# 3rd-party users, it should be done in your "mix.exs" file. + +# You can configure your application as: +# +# config :couchdbtest, key: :value +# +# and access this configuration in your application as: +# +# Application.get_env(:couchdbtest, :key) +# +# You can also configure a 3rd-party app: +# +# config :logger, level: :info +# + +# It is also possible to import configuration files, relative to this +# directory. For example, you can emulate configuration per environment +# by uncommenting the line below and defining dev.exs, test.exs and such. +# Configuration from the imported file will override the ones defined +# here (which is why it is important to import them last). +# +import_config "#{Mix.env}.exs"
\ No newline at end of file diff --git a/config/dev.exs b/config/dev.exs new file mode 100644 index 000000000..d2d855e6d --- /dev/null +++ b/config/dev.exs @@ -0,0 +1 @@ +use Mix.Config diff --git a/config/integration.exs b/config/integration.exs new file mode 100644 index 000000000..c5a5ed24a --- /dev/null +++ b/config/integration.exs @@ -0,0 +1,12 @@ +use Mix.Config + +config :logger, + backends: [:console], + compile_time_purge_level: :debug, + level: :debug + +config :kernel, + error_logger: false + +config :sasl, + sasl_error_logger: false diff --git a/config/prod.exs b/config/prod.exs new file mode 100644 index 000000000..d2d855e6d --- /dev/null +++ b/config/prod.exs @@ -0,0 +1 @@ +use Mix.Config diff --git a/config/test.exs b/config/test.exs new file mode 100644 index 000000000..c5a5ed24a --- /dev/null +++ b/config/test.exs @@ -0,0 +1,12 @@ +use Mix.Config + +config :logger, + backends: [:console], + compile_time_purge_level: :debug, + level: :debug + +config :kernel, + error_logger: false + +config :sasl, + sasl_error_logger: false diff --git a/mix.exs b/mix.exs new file mode 100644 index 000000000..2e213aeb1 --- /dev/null +++ b/mix.exs @@ -0,0 +1,60 @@ +defmodule CouchDBTest.Mixfile do + use Mix.Project + + def project do + [ + app: :couchdbtest, + version: "0.1.0", + elixir: "~> 1.5", + lockfile: Path.expand("mix.lock", __DIR__), + deps_path: Path.expand("src", __DIR__), + build_path: Path.expand("_build", __DIR__), + compilers: [:elixir, :app], + start_permanent: Mix.env() == :prod, + build_embedded: Mix.env() == :prod, + deps: deps(), + consolidate_protocols: Mix.env() not in [:test, :dev, :integration], + test_paths: get_test_paths(Mix.env()), + elixirc_paths: elixirc_paths(Mix.env()) + ] + end + + # Run "mix help compile.app" to learn about applications. + def application do + [ + extra_applications: [:logger], + applications: [:httpotion] + ] + end + + # Specifies which paths to compile per environment. + defp elixirc_paths(:test), do: ["test/elixir/lib", "test/elixir/test/support"] + defp elixirc_paths(:integration), do: ["test/elixir/lib", "test/elixir/test/support"] + defp elixirc_paths(_), do: ["test/elixir/lib"] + + # Run "mix help deps" to learn about dependencies. + defp deps() do + [ + {:httpotion, "~> 3.0", only: [:dev, :test, :integration], runtime: false}, + {:jiffy, path: Path.expand("src/jiffy", __DIR__)}, + {:ibrowse, + path: Path.expand("src/ibrowse", __DIR__), override: true, compile: false}, + {:credo, "~> 1.0.0", only: [:dev, :test, :integration], runtime: false} + ] + end + + def get_test_paths(:test) do + Path.wildcard("src/*/test/exunit") |> Enum.filter(&File.dir?/1) + end + + def get_test_paths(:integration) do + integration_tests = + Path.wildcard("src/*/test/integration") |> Enum.filter(&File.dir?/1) + + ["test/elixir/test" | integration_tests] + end + + def get_test_paths(_) do + [] + end +end diff --git a/test/elixir/mix.lock b/mix.lock index 0fc391a92..34c0ea961 100644 --- a/test/elixir/mix.lock +++ b/mix.lock @@ -1,8 +1,8 @@ %{ "bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm"}, - "credo": {:hex, :credo, "1.0.0", "aaa40fdd0543a0cf8080e8c5949d8c25f0a24e4fc8c1d83d06c388f5e5e0ea42", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm"}, - "httpotion": {:hex, :httpotion, "3.1.0", "14d20d9b0ce4e86e253eb91e4af79e469ad949f57a5d23c0a51b2f86559f6589", [:mix], [{:ibrowse, "~> 4.4", [hex: :ibrowse, repo: "hexpm", optional: false]}], "hexpm"}, - "ibrowse": {:hex, :ibrowse, "4.4.1", "2b7d0637b0f8b9b4182de4bd0f2e826a4da2c9b04898b6e15659ba921a8d6ec2", [:rebar3], [], "hexpm"}, + "credo": {:hex, :credo, "1.0.5", "fdea745579f8845315fe6a3b43e2f9f8866839cfbc8562bb72778e9fdaa94214", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm"}, + "httpotion": {:hex, :httpotion, "3.1.2", "50e3e559c2ffe8c8908c97e4ffb01efc1c18e8547cc7ce5dd173c9cf0a573a3b", [:mix], [{:ibrowse, "== 4.4.0", [hex: :ibrowse, repo: "hexpm", optional: false]}], "hexpm"}, + "ibrowse": {:hex, :ibrowse, "4.4.0", "2d923325efe0d2cb09b9c6a047b2835a5eda69d8a47ed6ff8bc03628b764e991", [:rebar3], [], "hexpm"}, "jason": {:hex, :jason, "1.1.2", "b03dedea67a99223a2eaf9f1264ce37154564de899fd3d8b9a21b1a6fd64afe7", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm"}, "jiffy": {:hex, :jiffy, "0.15.2", "de266c390111fd4ea28b9302f0bc3d7472468f3b8e0aceabfbefa26d08cd73b7", [:rebar3], [], "hexpm"}, "junit_formatter": {:hex, :junit_formatter, "3.0.0", "13950d944dbd295da7d8cc4798b8faee808a8bb9b637c88069954eac078ac9da", [:mix], [], "hexpm"}, diff --git a/src/chttpd/test/chttpd_cors_test.erl b/src/chttpd/test/eunit/chttpd_cors_test.erl index 19e851561..19e851561 100644 --- a/src/chttpd/test/chttpd_cors_test.erl +++ b/src/chttpd/test/eunit/chttpd_cors_test.erl diff --git a/src/chttpd/test/chttpd_csp_tests.erl b/src/chttpd/test/eunit/chttpd_csp_tests.erl index e86436254..e86436254 100644 --- a/src/chttpd/test/chttpd_csp_tests.erl +++ b/src/chttpd/test/eunit/chttpd_csp_tests.erl diff --git a/src/chttpd/test/chttpd_db_attachment_size_tests.erl b/src/chttpd/test/eunit/chttpd_db_attachment_size_tests.erl index 0ab08dd80..0ab08dd80 100644 --- a/src/chttpd/test/chttpd_db_attachment_size_tests.erl +++ b/src/chttpd/test/eunit/chttpd_db_attachment_size_tests.erl diff --git a/src/chttpd/test/chttpd_db_bulk_get_multipart_test.erl b/src/chttpd/test/eunit/chttpd_db_bulk_get_multipart_test.erl index 8a95c92ac..8a95c92ac 100644 --- a/src/chttpd/test/chttpd_db_bulk_get_multipart_test.erl +++ b/src/chttpd/test/eunit/chttpd_db_bulk_get_multipart_test.erl diff --git a/src/chttpd/test/chttpd_db_bulk_get_test.erl b/src/chttpd/test/eunit/chttpd_db_bulk_get_test.erl index 864e7079a..864e7079a 100644 --- a/src/chttpd/test/chttpd_db_bulk_get_test.erl +++ b/src/chttpd/test/eunit/chttpd_db_bulk_get_test.erl diff --git a/src/chttpd/test/chttpd_db_doc_size_tests.erl b/src/chttpd/test/eunit/chttpd_db_doc_size_tests.erl index 88e2797a3..88e2797a3 100644 --- a/src/chttpd/test/chttpd_db_doc_size_tests.erl +++ b/src/chttpd/test/eunit/chttpd_db_doc_size_tests.erl diff --git a/src/chttpd/test/chttpd_db_test.erl b/src/chttpd/test/eunit/chttpd_db_test.erl index 2708aa033..2708aa033 100644 --- a/src/chttpd/test/chttpd_db_test.erl +++ b/src/chttpd/test/eunit/chttpd_db_test.erl diff --git a/src/chttpd/test/chttpd_dbs_info_test.erl b/src/chttpd/test/eunit/chttpd_dbs_info_test.erl index 5b61d8831..5b61d8831 100644 --- a/src/chttpd/test/chttpd_dbs_info_test.erl +++ b/src/chttpd/test/eunit/chttpd_dbs_info_test.erl diff --git a/src/chttpd/test/chttpd_error_info_tests.erl b/src/chttpd/test/eunit/chttpd_error_info_tests.erl index fdb015c08..fdb015c08 100644 --- a/src/chttpd/test/chttpd_error_info_tests.erl +++ b/src/chttpd/test/eunit/chttpd_error_info_tests.erl diff --git a/src/chttpd/test/chttpd_handlers_tests.erl b/src/chttpd/test/eunit/chttpd_handlers_tests.erl index f3e8f5dcd..f3e8f5dcd 100644 --- a/src/chttpd/test/chttpd_handlers_tests.erl +++ b/src/chttpd/test/eunit/chttpd_handlers_tests.erl diff --git a/src/chttpd/test/chttpd_open_revs_error_test.erl b/src/chttpd/test/eunit/chttpd_open_revs_error_test.erl index d53d370f8..d53d370f8 100644 --- a/src/chttpd/test/chttpd_open_revs_error_test.erl +++ b/src/chttpd/test/eunit/chttpd_open_revs_error_test.erl diff --git a/src/chttpd/test/chttpd_plugin_tests.erl b/src/chttpd/test/eunit/chttpd_plugin_tests.erl index 36572a419..36572a419 100644 --- a/src/chttpd/test/chttpd_plugin_tests.erl +++ b/src/chttpd/test/eunit/chttpd_plugin_tests.erl diff --git a/src/chttpd/test/chttpd_prefer_header_test.erl b/src/chttpd/test/eunit/chttpd_prefer_header_test.erl index 0f43ba437..0f43ba437 100644 --- a/src/chttpd/test/chttpd_prefer_header_test.erl +++ b/src/chttpd/test/eunit/chttpd_prefer_header_test.erl diff --git a/src/chttpd/test/chttpd_purge_tests.erl b/src/chttpd/test/eunit/chttpd_purge_tests.erl index dbd73de1f..dbd73de1f 100644 --- a/src/chttpd/test/chttpd_purge_tests.erl +++ b/src/chttpd/test/eunit/chttpd_purge_tests.erl diff --git a/src/chttpd/test/chttpd_security_tests.erl b/src/chttpd/test/eunit/chttpd_security_tests.erl index 955b4ff01..955b4ff01 100644 --- a/src/chttpd/test/chttpd_security_tests.erl +++ b/src/chttpd/test/eunit/chttpd_security_tests.erl diff --git a/src/chttpd/test/chttpd_socket_buffer_size_test.erl b/src/chttpd/test/eunit/chttpd_socket_buffer_size_test.erl index 937880621..937880621 100644 --- a/src/chttpd/test/chttpd_socket_buffer_size_test.erl +++ b/src/chttpd/test/eunit/chttpd_socket_buffer_size_test.erl diff --git a/src/chttpd/test/chttpd_view_test.erl b/src/chttpd/test/eunit/chttpd_view_test.erl index 3457c6f30..3457c6f30 100644 --- a/src/chttpd/test/chttpd_view_test.erl +++ b/src/chttpd/test/eunit/chttpd_view_test.erl diff --git a/src/chttpd/test/chttpd_welcome_test.erl b/src/chttpd/test/eunit/chttpd_welcome_test.erl index e427f4dff..e427f4dff 100644 --- a/src/chttpd/test/chttpd_welcome_test.erl +++ b/src/chttpd/test/eunit/chttpd_welcome_test.erl diff --git a/src/chttpd/test/chttpd_xframe_test.erl b/src/chttpd/test/eunit/chttpd_xframe_test.erl index 1272c198c..1272c198c 100644 --- a/src/chttpd/test/chttpd_xframe_test.erl +++ b/src/chttpd/test/eunit/chttpd_xframe_test.erl diff --git a/src/couch/include/couch_eunit.hrl b/src/couch/include/couch_eunit.hrl index f4617e1d3..d3611c88b 100644 --- a/src/couch/include/couch_eunit.hrl +++ b/src/couch/include/couch_eunit.hrl @@ -28,7 +28,7 @@ filename:join([?BUILDDIR(), "tmp", "etc", "local_eunit.ini"]), filename:join([?BUILDDIR(), "tmp", "etc", "eunit.ini"])]). -define(FIXTURESDIR, - filename:join([?BUILDDIR(), "src", "couch", "test", "fixtures"])). + filename:join([?BUILDDIR(), "src", "couch", "test", "eunit", "fixtures"])). -define(TEMPDIR, filename:join([?BUILDDIR(), "tmp", "tmp_data"])). diff --git a/src/couch/test/chttpd_endpoints_tests.erl b/src/couch/test/eunit/chttpd_endpoints_tests.erl index 9b7430823..9b7430823 100644 --- a/src/couch/test/chttpd_endpoints_tests.erl +++ b/src/couch/test/eunit/chttpd_endpoints_tests.erl diff --git a/src/couch/test/couch_auth_cache_tests.erl b/src/couch/test/eunit/couch_auth_cache_tests.erl index 706c0cee9..706c0cee9 100644 --- a/src/couch/test/couch_auth_cache_tests.erl +++ b/src/couch/test/eunit/couch_auth_cache_tests.erl diff --git a/src/couch/test/couch_base32_tests.erl b/src/couch/test/eunit/couch_base32_tests.erl index 7e4d59a09..7e4d59a09 100644 --- a/src/couch/test/couch_base32_tests.erl +++ b/src/couch/test/eunit/couch_base32_tests.erl diff --git a/src/couch/test/couch_bt_engine_compactor_tests.erl b/src/couch/test/eunit/couch_bt_engine_compactor_tests.erl index 6c99ceb73..6c99ceb73 100644 --- a/src/couch/test/couch_bt_engine_compactor_tests.erl +++ b/src/couch/test/eunit/couch_bt_engine_compactor_tests.erl diff --git a/src/couch/test/couch_bt_engine_tests.erl b/src/couch/test/eunit/couch_bt_engine_tests.erl index 3e3ecbf25..3e3ecbf25 100644 --- a/src/couch/test/couch_bt_engine_tests.erl +++ b/src/couch/test/eunit/couch_bt_engine_tests.erl diff --git a/src/couch/test/couch_bt_engine_upgrade_tests.erl b/src/couch/test/eunit/couch_bt_engine_upgrade_tests.erl index 3a516f8f7..3a516f8f7 100644 --- a/src/couch/test/couch_bt_engine_upgrade_tests.erl +++ b/src/couch/test/eunit/couch_bt_engine_upgrade_tests.erl diff --git a/src/couch/test/couch_btree_tests.erl b/src/couch/test/eunit/couch_btree_tests.erl index c9b791d2c..c9b791d2c 100644 --- a/src/couch/test/couch_btree_tests.erl +++ b/src/couch/test/eunit/couch_btree_tests.erl diff --git a/src/couch/test/couch_changes_tests.erl b/src/couch/test/eunit/couch_changes_tests.erl index 0c2f5f91f..0c2f5f91f 100644 --- a/src/couch/test/couch_changes_tests.erl +++ b/src/couch/test/eunit/couch_changes_tests.erl diff --git a/src/couch/test/couch_compress_tests.erl b/src/couch/test/eunit/couch_compress_tests.erl index addb9a0e2..addb9a0e2 100644 --- a/src/couch/test/couch_compress_tests.erl +++ b/src/couch/test/eunit/couch_compress_tests.erl diff --git a/src/couch/test/couch_db_doc_tests.erl b/src/couch/test/eunit/couch_db_doc_tests.erl index cdcf81d15..cdcf81d15 100644 --- a/src/couch/test/couch_db_doc_tests.erl +++ b/src/couch/test/eunit/couch_db_doc_tests.erl diff --git a/src/couch/test/couch_db_mpr_tests.erl b/src/couch/test/eunit/couch_db_mpr_tests.erl index bb97c66d7..bb97c66d7 100644 --- a/src/couch/test/couch_db_mpr_tests.erl +++ b/src/couch/test/eunit/couch_db_mpr_tests.erl diff --git a/src/couch/test/couch_db_plugin_tests.erl b/src/couch/test/eunit/couch_db_plugin_tests.erl index 93551adbc..93551adbc 100644 --- a/src/couch/test/couch_db_plugin_tests.erl +++ b/src/couch/test/eunit/couch_db_plugin_tests.erl diff --git a/src/couch/test/couch_db_props_upgrade_tests.erl b/src/couch/test/eunit/couch_db_props_upgrade_tests.erl index 40ad283cf..40ad283cf 100644 --- a/src/couch/test/couch_db_props_upgrade_tests.erl +++ b/src/couch/test/eunit/couch_db_props_upgrade_tests.erl diff --git a/src/couch/test/couch_db_split_tests.erl b/src/couch/test/eunit/couch_db_split_tests.erl index 7d2bb4006..7d2bb4006 100644 --- a/src/couch/test/couch_db_split_tests.erl +++ b/src/couch/test/eunit/couch_db_split_tests.erl diff --git a/src/couch/test/couch_db_tests.erl b/src/couch/test/eunit/couch_db_tests.erl index d64f7c640..d64f7c640 100644 --- a/src/couch/test/couch_db_tests.erl +++ b/src/couch/test/eunit/couch_db_tests.erl diff --git a/src/couch/test/couch_doc_json_tests.erl b/src/couch/test/eunit/couch_doc_json_tests.erl index 51f228900..51f228900 100644 --- a/src/couch/test/couch_doc_json_tests.erl +++ b/src/couch/test/eunit/couch_doc_json_tests.erl diff --git a/src/couch/test/couch_doc_tests.erl b/src/couch/test/eunit/couch_doc_tests.erl index cf41df61d..cf41df61d 100644 --- a/src/couch/test/couch_doc_tests.erl +++ b/src/couch/test/eunit/couch_doc_tests.erl diff --git a/src/couch/test/couch_ejson_size_tests.erl b/src/couch/test/eunit/couch_ejson_size_tests.erl index df9168ed1..df9168ed1 100644 --- a/src/couch/test/couch_ejson_size_tests.erl +++ b/src/couch/test/eunit/couch_ejson_size_tests.erl diff --git a/src/couch/test/couch_etag_tests.erl b/src/couch/test/eunit/couch_etag_tests.erl index 9d15e483f..9d15e483f 100644 --- a/src/couch/test/couch_etag_tests.erl +++ b/src/couch/test/eunit/couch_etag_tests.erl diff --git a/src/couch/test/couch_file_tests.erl b/src/couch/test/eunit/couch_file_tests.erl index e9806c09a..e9806c09a 100644 --- a/src/couch/test/couch_file_tests.erl +++ b/src/couch/test/eunit/couch_file_tests.erl diff --git a/src/couch/test/couch_flags_config_tests.erl b/src/couch/test/eunit/couch_flags_config_tests.erl index 1a66cdcff..1a66cdcff 100644 --- a/src/couch/test/couch_flags_config_tests.erl +++ b/src/couch/test/eunit/couch_flags_config_tests.erl diff --git a/src/couch/test/couch_flags_tests.erl b/src/couch/test/eunit/couch_flags_tests.erl index 32ec57b77..32ec57b77 100644 --- a/src/couch/test/couch_flags_tests.erl +++ b/src/couch/test/eunit/couch_flags_tests.erl diff --git a/src/couch/test/couch_hotp_tests.erl b/src/couch/test/eunit/couch_hotp_tests.erl index fee10ff5e..fee10ff5e 100644 --- a/src/couch/test/couch_hotp_tests.erl +++ b/src/couch/test/eunit/couch_hotp_tests.erl diff --git a/src/couch/test/couch_index_tests.erl b/src/couch/test/eunit/couch_index_tests.erl index fab3806d0..fab3806d0 100644 --- a/src/couch/test/couch_index_tests.erl +++ b/src/couch/test/eunit/couch_index_tests.erl diff --git a/src/couch/test/couch_key_tree_prop_tests.erl b/src/couch/test/eunit/couch_key_tree_prop_tests.erl index f8146926a..f8146926a 100644 --- a/src/couch/test/couch_key_tree_prop_tests.erl +++ b/src/couch/test/eunit/couch_key_tree_prop_tests.erl diff --git a/src/couch/test/couch_key_tree_tests.erl b/src/couch/test/eunit/couch_key_tree_tests.erl index 5d9cc8372..5d9cc8372 100644 --- a/src/couch/test/couch_key_tree_tests.erl +++ b/src/couch/test/eunit/couch_key_tree_tests.erl diff --git a/src/couch/test/couch_passwords_tests.erl b/src/couch/test/eunit/couch_passwords_tests.erl index 88de8530f..88de8530f 100644 --- a/src/couch/test/couch_passwords_tests.erl +++ b/src/couch/test/eunit/couch_passwords_tests.erl diff --git a/src/couch/test/couch_query_servers_tests.erl b/src/couch/test/eunit/couch_query_servers_tests.erl index f8df896c4..f8df896c4 100644 --- a/src/couch/test/couch_query_servers_tests.erl +++ b/src/couch/test/eunit/couch_query_servers_tests.erl diff --git a/src/couch/test/couch_server_tests.erl b/src/couch/test/eunit/couch_server_tests.erl index 530b7efd0..530b7efd0 100644 --- a/src/couch/test/couch_server_tests.erl +++ b/src/couch/test/eunit/couch_server_tests.erl diff --git a/src/couch/test/couch_stream_tests.erl b/src/couch/test/eunit/couch_stream_tests.erl index a7fedf0af..a7fedf0af 100644 --- a/src/couch/test/couch_stream_tests.erl +++ b/src/couch/test/eunit/couch_stream_tests.erl diff --git a/src/couch/test/couch_task_status_tests.erl b/src/couch/test/eunit/couch_task_status_tests.erl index 0ec03563b..0ec03563b 100644 --- a/src/couch/test/couch_task_status_tests.erl +++ b/src/couch/test/eunit/couch_task_status_tests.erl diff --git a/src/couch/test/couch_totp_tests.erl b/src/couch/test/eunit/couch_totp_tests.erl index 6817a092a..6817a092a 100644 --- a/src/couch/test/couch_totp_tests.erl +++ b/src/couch/test/eunit/couch_totp_tests.erl diff --git a/src/couch/test/couch_util_tests.erl b/src/couch/test/eunit/couch_util_tests.erl index 3e145c4f6..3e145c4f6 100644 --- a/src/couch/test/couch_util_tests.erl +++ b/src/couch/test/eunit/couch_util_tests.erl diff --git a/src/couch/test/couch_uuids_tests.erl b/src/couch/test/eunit/couch_uuids_tests.erl index a836eccc6..a836eccc6 100644 --- a/src/couch/test/couch_uuids_tests.erl +++ b/src/couch/test/eunit/couch_uuids_tests.erl diff --git a/src/couch/test/couch_work_queue_tests.erl b/src/couch/test/eunit/couch_work_queue_tests.erl index a192230ef..a192230ef 100644 --- a/src/couch/test/couch_work_queue_tests.erl +++ b/src/couch/test/eunit/couch_work_queue_tests.erl diff --git a/src/couch/test/couchdb_attachments_tests.erl b/src/couch/test/eunit/couchdb_attachments_tests.erl index 04859dbc9..04859dbc9 100644 --- a/src/couch/test/couchdb_attachments_tests.erl +++ b/src/couch/test/eunit/couchdb_attachments_tests.erl diff --git a/src/couch/test/couchdb_auth_tests.erl b/src/couch/test/eunit/couchdb_auth_tests.erl index ed2c064de..ed2c064de 100644 --- a/src/couch/test/couchdb_auth_tests.erl +++ b/src/couch/test/eunit/couchdb_auth_tests.erl diff --git a/src/couch/test/couchdb_cookie_domain_tests.erl b/src/couch/test/eunit/couchdb_cookie_domain_tests.erl index e66ab31e6..e66ab31e6 100755 --- a/src/couch/test/couchdb_cookie_domain_tests.erl +++ b/src/couch/test/eunit/couchdb_cookie_domain_tests.erl diff --git a/src/couch/test/couchdb_cors_tests.erl b/src/couch/test/eunit/couchdb_cors_tests.erl index 82630bba7..82630bba7 100644 --- a/src/couch/test/couchdb_cors_tests.erl +++ b/src/couch/test/eunit/couchdb_cors_tests.erl diff --git a/src/couch/test/couchdb_db_tests.erl b/src/couch/test/eunit/couchdb_db_tests.erl index 734bafb9f..734bafb9f 100644 --- a/src/couch/test/couchdb_db_tests.erl +++ b/src/couch/test/eunit/couchdb_db_tests.erl diff --git a/src/couch/test/couchdb_design_doc_tests.erl b/src/couch/test/eunit/couchdb_design_doc_tests.erl index eef12e039..eef12e039 100644 --- a/src/couch/test/couchdb_design_doc_tests.erl +++ b/src/couch/test/eunit/couchdb_design_doc_tests.erl diff --git a/src/couch/test/couchdb_file_compression_tests.erl b/src/couch/test/eunit/couchdb_file_compression_tests.erl index 8f0fe5bf1..8f0fe5bf1 100644 --- a/src/couch/test/couchdb_file_compression_tests.erl +++ b/src/couch/test/eunit/couchdb_file_compression_tests.erl diff --git a/src/couch/test/couchdb_location_header_tests.erl b/src/couch/test/eunit/couchdb_location_header_tests.erl index c6c039eb0..c6c039eb0 100644 --- a/src/couch/test/couchdb_location_header_tests.erl +++ b/src/couch/test/eunit/couchdb_location_header_tests.erl diff --git a/src/couch/test/couchdb_mrview_cors_tests.erl b/src/couch/test/eunit/couchdb_mrview_cors_tests.erl index 0f69048a0..0f69048a0 100644 --- a/src/couch/test/couchdb_mrview_cors_tests.erl +++ b/src/couch/test/eunit/couchdb_mrview_cors_tests.erl diff --git a/src/couch/test/couchdb_mrview_tests.erl b/src/couch/test/eunit/couchdb_mrview_tests.erl index 1c96a0ae0..1c96a0ae0 100644 --- a/src/couch/test/couchdb_mrview_tests.erl +++ b/src/couch/test/eunit/couchdb_mrview_tests.erl diff --git a/src/couch/test/couchdb_os_proc_pool.erl b/src/couch/test/eunit/couchdb_os_proc_pool.erl index 69f8051ad..69f8051ad 100644 --- a/src/couch/test/couchdb_os_proc_pool.erl +++ b/src/couch/test/eunit/couchdb_os_proc_pool.erl diff --git a/src/couch/test/couchdb_update_conflicts_tests.erl b/src/couch/test/eunit/couchdb_update_conflicts_tests.erl index e92c73856..e92c73856 100644 --- a/src/couch/test/couchdb_update_conflicts_tests.erl +++ b/src/couch/test/eunit/couchdb_update_conflicts_tests.erl diff --git a/src/couch/test/couchdb_vhosts_tests.erl b/src/couch/test/eunit/couchdb_vhosts_tests.erl index 1c4117215..1c4117215 100644 --- a/src/couch/test/couchdb_vhosts_tests.erl +++ b/src/couch/test/eunit/couchdb_vhosts_tests.erl diff --git a/src/couch/test/couchdb_views_tests.erl b/src/couch/test/eunit/couchdb_views_tests.erl index 60bb5c975..60bb5c975 100644 --- a/src/couch/test/couchdb_views_tests.erl +++ b/src/couch/test/eunit/couchdb_views_tests.erl diff --git a/src/couch/test/fixtures/3b835456c235b1827e012e25666152f3.view b/src/couch/test/eunit/fixtures/3b835456c235b1827e012e25666152f3.view Binary files differindex 9c67648be..9c67648be 100644 --- a/src/couch/test/fixtures/3b835456c235b1827e012e25666152f3.view +++ b/src/couch/test/eunit/fixtures/3b835456c235b1827e012e25666152f3.view diff --git a/src/couch/test/fixtures/couch_stats_aggregates.cfg b/src/couch/test/eunit/fixtures/couch_stats_aggregates.cfg index 30e475da8..30e475da8 100644 --- a/src/couch/test/fixtures/couch_stats_aggregates.cfg +++ b/src/couch/test/eunit/fixtures/couch_stats_aggregates.cfg diff --git a/src/couch/test/fixtures/couch_stats_aggregates.ini b/src/couch/test/eunit/fixtures/couch_stats_aggregates.ini index cc5cd2187..cc5cd2187 100644 --- a/src/couch/test/fixtures/couch_stats_aggregates.ini +++ b/src/couch/test/eunit/fixtures/couch_stats_aggregates.ini diff --git a/src/couch/test/fixtures/db_non_partitioned.couch b/src/couch/test/eunit/fixtures/db_non_partitioned.couch Binary files differindex 327d9bb5d..327d9bb5d 100644 --- a/src/couch/test/fixtures/db_non_partitioned.couch +++ b/src/couch/test/eunit/fixtures/db_non_partitioned.couch diff --git a/src/couch/test/fixtures/db_v6_with_1_purge_req.couch b/src/couch/test/eunit/fixtures/db_v6_with_1_purge_req.couch Binary files differindex b0d39c9ec..b0d39c9ec 100644 --- a/src/couch/test/fixtures/db_v6_with_1_purge_req.couch +++ b/src/couch/test/eunit/fixtures/db_v6_with_1_purge_req.couch diff --git a/src/couch/test/fixtures/db_v6_with_1_purge_req_for_2_docs.couch b/src/couch/test/eunit/fixtures/db_v6_with_1_purge_req_for_2_docs.couch Binary files differindex b584fce31..b584fce31 100644 --- a/src/couch/test/fixtures/db_v6_with_1_purge_req_for_2_docs.couch +++ b/src/couch/test/eunit/fixtures/db_v6_with_1_purge_req_for_2_docs.couch diff --git a/src/couch/test/fixtures/db_v6_with_2_purge_req.couch b/src/couch/test/eunit/fixtures/db_v6_with_2_purge_req.couch Binary files differindex ee4e11b7f..ee4e11b7f 100644 --- a/src/couch/test/fixtures/db_v6_with_2_purge_req.couch +++ b/src/couch/test/eunit/fixtures/db_v6_with_2_purge_req.couch diff --git a/src/couch/test/fixtures/db_v6_without_purge_req.couch b/src/couch/test/eunit/fixtures/db_v6_without_purge_req.couch Binary files differindex 814feb8e1..814feb8e1 100644 --- a/src/couch/test/fixtures/db_v6_without_purge_req.couch +++ b/src/couch/test/eunit/fixtures/db_v6_without_purge_req.couch diff --git a/src/couch/test/fixtures/db_v7_with_1_purge_req.couch b/src/couch/test/eunit/fixtures/db_v7_with_1_purge_req.couch Binary files differindex cab8331db..cab8331db 100644 --- a/src/couch/test/fixtures/db_v7_with_1_purge_req.couch +++ b/src/couch/test/eunit/fixtures/db_v7_with_1_purge_req.couch diff --git a/src/couch/test/fixtures/db_v7_with_1_purge_req_for_2_docs.couch b/src/couch/test/eunit/fixtures/db_v7_with_1_purge_req_for_2_docs.couch Binary files differindex b613646b1..b613646b1 100644 --- a/src/couch/test/fixtures/db_v7_with_1_purge_req_for_2_docs.couch +++ b/src/couch/test/eunit/fixtures/db_v7_with_1_purge_req_for_2_docs.couch diff --git a/src/couch/test/fixtures/db_v7_with_2_purge_req.couch b/src/couch/test/eunit/fixtures/db_v7_with_2_purge_req.couch Binary files differindex 126fc919e..126fc919e 100644 --- a/src/couch/test/fixtures/db_v7_with_2_purge_req.couch +++ b/src/couch/test/eunit/fixtures/db_v7_with_2_purge_req.couch diff --git a/src/couch/test/fixtures/db_v7_without_purge_req.couch b/src/couch/test/eunit/fixtures/db_v7_without_purge_req.couch Binary files differindex 762dc8dad..762dc8dad 100644 --- a/src/couch/test/fixtures/db_v7_without_purge_req.couch +++ b/src/couch/test/eunit/fixtures/db_v7_without_purge_req.couch diff --git a/src/couch/test/fixtures/logo.png b/src/couch/test/eunit/fixtures/logo.png Binary files differindex d21ac025b..d21ac025b 100644 --- a/src/couch/test/fixtures/logo.png +++ b/src/couch/test/eunit/fixtures/logo.png diff --git a/src/couch/test/fixtures/multipart.http b/src/couch/test/eunit/fixtures/multipart.http index fe9f271cc..fe9f271cc 100644 --- a/src/couch/test/fixtures/multipart.http +++ b/src/couch/test/eunit/fixtures/multipart.http diff --git a/src/couch/test/fixtures/os_daemon_bad_perm.sh b/src/couch/test/eunit/fixtures/os_daemon_bad_perm.sh index 345c8b40b..345c8b40b 100644 --- a/src/couch/test/fixtures/os_daemon_bad_perm.sh +++ b/src/couch/test/eunit/fixtures/os_daemon_bad_perm.sh diff --git a/src/couch/test/fixtures/os_daemon_can_reboot.sh b/src/couch/test/eunit/fixtures/os_daemon_can_reboot.sh index 5bc10e83f..5bc10e83f 100755 --- a/src/couch/test/fixtures/os_daemon_can_reboot.sh +++ b/src/couch/test/eunit/fixtures/os_daemon_can_reboot.sh diff --git a/src/couch/test/fixtures/os_daemon_configer.escript b/src/couch/test/eunit/fixtures/os_daemon_configer.escript index f146b8314..f146b8314 100755 --- a/src/couch/test/fixtures/os_daemon_configer.escript +++ b/src/couch/test/eunit/fixtures/os_daemon_configer.escript diff --git a/src/couch/test/fixtures/os_daemon_die_on_boot.sh b/src/couch/test/eunit/fixtures/os_daemon_die_on_boot.sh index 256ee7935..256ee7935 100755 --- a/src/couch/test/fixtures/os_daemon_die_on_boot.sh +++ b/src/couch/test/eunit/fixtures/os_daemon_die_on_boot.sh diff --git a/src/couch/test/fixtures/os_daemon_die_quickly.sh b/src/couch/test/eunit/fixtures/os_daemon_die_quickly.sh index f5a13684e..f5a13684e 100755 --- a/src/couch/test/fixtures/os_daemon_die_quickly.sh +++ b/src/couch/test/eunit/fixtures/os_daemon_die_quickly.sh diff --git a/src/couch/test/fixtures/os_daemon_looper.escript b/src/couch/test/eunit/fixtures/os_daemon_looper.escript index 73974e905..73974e905 100755 --- a/src/couch/test/fixtures/os_daemon_looper.escript +++ b/src/couch/test/eunit/fixtures/os_daemon_looper.escript diff --git a/src/couch/test/fixtures/test.couch b/src/couch/test/eunit/fixtures/test.couch Binary files differindex 32c79af32..32c79af32 100644 --- a/src/couch/test/fixtures/test.couch +++ b/src/couch/test/eunit/fixtures/test.couch diff --git a/src/couch/test/global_changes_tests.erl b/src/couch/test/eunit/global_changes_tests.erl index 4392aafac..4392aafac 100644 --- a/src/couch/test/global_changes_tests.erl +++ b/src/couch/test/eunit/global_changes_tests.erl diff --git a/src/couch/test/json_stream_parse_tests.erl b/src/couch/test/eunit/json_stream_parse_tests.erl index e690d7728..e690d7728 100644 --- a/src/couch/test/json_stream_parse_tests.erl +++ b/src/couch/test/eunit/json_stream_parse_tests.erl diff --git a/src/couch/test/test_web.erl b/src/couch/test/eunit/test_web.erl index b1b3e65c9..b1b3e65c9 100644 --- a/src/couch/test/test_web.erl +++ b/src/couch/test/eunit/test_web.erl diff --git a/src/couch/test/exunit/test_helper.exs b/src/couch/test/exunit/test_helper.exs new file mode 100644 index 000000000..314050085 --- /dev/null +++ b/src/couch/test/exunit/test_helper.exs @@ -0,0 +1,2 @@ +ExUnit.configure(formatters: [JUnitFormatter, ExUnit.CLIFormatter]) +ExUnit.start() diff --git a/src/couch_epi/test/couch_epi_basic_test.erl b/src/couch_epi/test/eunit/couch_epi_basic_test.erl index 587d1564e..587d1564e 100644 --- a/src/couch_epi/test/couch_epi_basic_test.erl +++ b/src/couch_epi/test/eunit/couch_epi_basic_test.erl diff --git a/src/couch_epi/test/couch_epi_tests.erl b/src/couch_epi/test/eunit/couch_epi_tests.erl index 042753215..12d8610c1 100644 --- a/src/couch_epi/test/couch_epi_tests.erl +++ b/src/couch_epi/test/eunit/couch_epi_tests.erl @@ -14,8 +14,8 @@ -include_lib("couch/include/couch_eunit.hrl"). --define(DATA_FILE1, ?ABS_PATH("test/fixtures/app_data1.cfg")). --define(DATA_FILE2, ?ABS_PATH("test/fixtures/app_data2.cfg")). +-define(DATA_FILE1, ?ABS_PATH("test/eunit/fixtures/app_data1.cfg")). +-define(DATA_FILE2, ?ABS_PATH("test/eunit/fixtures/app_data2.cfg")). -export([notify_cb/4, save/3, get/2]). diff --git a/src/couch_epi/test/fixtures/app_data1.cfg b/src/couch_epi/test/eunit/fixtures/app_data1.cfg index 4c9f3fe2d..4c9f3fe2d 100644 --- a/src/couch_epi/test/fixtures/app_data1.cfg +++ b/src/couch_epi/test/eunit/fixtures/app_data1.cfg diff --git a/src/couch_epi/test/fixtures/app_data2.cfg b/src/couch_epi/test/eunit/fixtures/app_data2.cfg index e5a5ffb8c..e5a5ffb8c 100644 --- a/src/couch_epi/test/fixtures/app_data2.cfg +++ b/src/couch_epi/test/eunit/fixtures/app_data2.cfg diff --git a/src/couch_index/test/couch_index_compaction_tests.erl b/src/couch_index/test/eunit/couch_index_compaction_tests.erl index 53316d944..53316d944 100644 --- a/src/couch_index/test/couch_index_compaction_tests.erl +++ b/src/couch_index/test/eunit/couch_index_compaction_tests.erl diff --git a/src/couch_index/test/couch_index_ddoc_updated_tests.erl b/src/couch_index/test/eunit/couch_index_ddoc_updated_tests.erl index 0e23adf91..0e23adf91 100644 --- a/src/couch_index/test/couch_index_ddoc_updated_tests.erl +++ b/src/couch_index/test/eunit/couch_index_ddoc_updated_tests.erl diff --git a/src/couch_log/test/couch_log_config_listener_test.erl b/src/couch_log/test/eunit/couch_log_config_listener_test.erl index 07abae1ff..07abae1ff 100644 --- a/src/couch_log/test/couch_log_config_listener_test.erl +++ b/src/couch_log/test/eunit/couch_log_config_listener_test.erl diff --git a/src/couch_log/test/couch_log_config_test.erl b/src/couch_log/test/eunit/couch_log_config_test.erl index c4677f37f..c4677f37f 100644 --- a/src/couch_log/test/couch_log_config_test.erl +++ b/src/couch_log/test/eunit/couch_log_config_test.erl diff --git a/src/couch_log/test/couch_log_error_logger_h_test.erl b/src/couch_log/test/eunit/couch_log_error_logger_h_test.erl index b78598fa4..b78598fa4 100644 --- a/src/couch_log/test/couch_log_error_logger_h_test.erl +++ b/src/couch_log/test/eunit/couch_log_error_logger_h_test.erl diff --git a/src/couch_log/test/couch_log_formatter_test.erl b/src/couch_log/test/eunit/couch_log_formatter_test.erl index 795efcf29..795efcf29 100644 --- a/src/couch_log/test/couch_log_formatter_test.erl +++ b/src/couch_log/test/eunit/couch_log_formatter_test.erl diff --git a/src/couch_log/test/couch_log_monitor_test.erl b/src/couch_log/test/eunit/couch_log_monitor_test.erl index eec008522..eec008522 100644 --- a/src/couch_log/test/couch_log_monitor_test.erl +++ b/src/couch_log/test/eunit/couch_log_monitor_test.erl diff --git a/src/couch_log/test/couch_log_server_test.erl b/src/couch_log/test/eunit/couch_log_server_test.erl index 7af570e90..7af570e90 100644 --- a/src/couch_log/test/couch_log_server_test.erl +++ b/src/couch_log/test/eunit/couch_log_server_test.erl diff --git a/src/couch_log/test/couch_log_test.erl b/src/couch_log/test/eunit/couch_log_test.erl index c7195f65f..c7195f65f 100644 --- a/src/couch_log/test/couch_log_test.erl +++ b/src/couch_log/test/eunit/couch_log_test.erl diff --git a/src/couch_log/test/couch_log_test_util.erl b/src/couch_log/test/eunit/couch_log_test_util.erl index 00f3981fc..00f3981fc 100644 --- a/src/couch_log/test/couch_log_test_util.erl +++ b/src/couch_log/test/eunit/couch_log_test_util.erl diff --git a/src/couch_log/test/couch_log_trunc_io_fmt_test.erl b/src/couch_log/test/eunit/couch_log_trunc_io_fmt_test.erl index 77d555440..77d555440 100644 --- a/src/couch_log/test/couch_log_trunc_io_fmt_test.erl +++ b/src/couch_log/test/eunit/couch_log_trunc_io_fmt_test.erl diff --git a/src/couch_log/test/couch_log_util_test.erl b/src/couch_log/test/eunit/couch_log_util_test.erl index e97911aa9..e97911aa9 100644 --- a/src/couch_log/test/couch_log_util_test.erl +++ b/src/couch_log/test/eunit/couch_log_util_test.erl diff --git a/src/couch_log/test/couch_log_writer_ets.erl b/src/couch_log/test/eunit/couch_log_writer_ets.erl index d5fd327ac..d5fd327ac 100644 --- a/src/couch_log/test/couch_log_writer_ets.erl +++ b/src/couch_log/test/eunit/couch_log_writer_ets.erl diff --git a/src/couch_log/test/couch_log_writer_file_test.erl b/src/couch_log/test/eunit/couch_log_writer_file_test.erl index ba042610a..ba042610a 100644 --- a/src/couch_log/test/couch_log_writer_file_test.erl +++ b/src/couch_log/test/eunit/couch_log_writer_file_test.erl diff --git a/src/couch_log/test/couch_log_writer_stderr_test.erl b/src/couch_log/test/eunit/couch_log_writer_stderr_test.erl index 1e99263dd..1e99263dd 100644 --- a/src/couch_log/test/couch_log_writer_stderr_test.erl +++ b/src/couch_log/test/eunit/couch_log_writer_stderr_test.erl diff --git a/src/couch_log/test/couch_log_writer_syslog_test.erl b/src/couch_log/test/eunit/couch_log_writer_syslog_test.erl index c32b5c6bf..c32b5c6bf 100644 --- a/src/couch_log/test/couch_log_writer_syslog_test.erl +++ b/src/couch_log/test/eunit/couch_log_writer_syslog_test.erl diff --git a/src/couch_log/test/couch_log_writer_test.erl b/src/couch_log/test/eunit/couch_log_writer_test.erl index d0bb347fe..d0bb347fe 100644 --- a/src/couch_log/test/couch_log_writer_test.erl +++ b/src/couch_log/test/eunit/couch_log_writer_test.erl diff --git a/src/couch_mrview/test/couch_mrview_all_docs_tests.erl b/src/couch_mrview/test/eunit/couch_mrview_all_docs_tests.erl index bf8eb7e5b..bf8eb7e5b 100644 --- a/src/couch_mrview/test/couch_mrview_all_docs_tests.erl +++ b/src/couch_mrview/test/eunit/couch_mrview_all_docs_tests.erl diff --git a/src/couch_mrview/test/couch_mrview_changes_since_tests.erl b/src/couch_mrview/test/eunit/couch_mrview_changes_since_tests.erl index d670e109b..d670e109b 100644 --- a/src/couch_mrview/test/couch_mrview_changes_since_tests.erl +++ b/src/couch_mrview/test/eunit/couch_mrview_changes_since_tests.erl diff --git a/src/couch_mrview/test/couch_mrview_collation_tests.erl b/src/couch_mrview/test/eunit/couch_mrview_collation_tests.erl index 5c8cb54b1..5c8cb54b1 100644 --- a/src/couch_mrview/test/couch_mrview_collation_tests.erl +++ b/src/couch_mrview/test/eunit/couch_mrview_collation_tests.erl diff --git a/src/couch_mrview/test/couch_mrview_compact_tests.erl b/src/couch_mrview/test/eunit/couch_mrview_compact_tests.erl index 7664becdc..7664becdc 100644 --- a/src/couch_mrview/test/couch_mrview_compact_tests.erl +++ b/src/couch_mrview/test/eunit/couch_mrview_compact_tests.erl diff --git a/src/couch_mrview/test/couch_mrview_ddoc_updated_tests.erl b/src/couch_mrview/test/eunit/couch_mrview_ddoc_updated_tests.erl index 4310157eb..4310157eb 100644 --- a/src/couch_mrview/test/couch_mrview_ddoc_updated_tests.erl +++ b/src/couch_mrview/test/eunit/couch_mrview_ddoc_updated_tests.erl diff --git a/src/couch_mrview/test/couch_mrview_ddoc_validation_tests.erl b/src/couch_mrview/test/eunit/couch_mrview_ddoc_validation_tests.erl index ce2be8904..ce2be8904 100644 --- a/src/couch_mrview/test/couch_mrview_ddoc_validation_tests.erl +++ b/src/couch_mrview/test/eunit/couch_mrview_ddoc_validation_tests.erl diff --git a/src/couch_mrview/test/couch_mrview_design_docs_tests.erl b/src/couch_mrview/test/eunit/couch_mrview_design_docs_tests.erl index aedd42865..aedd42865 100644 --- a/src/couch_mrview/test/couch_mrview_design_docs_tests.erl +++ b/src/couch_mrview/test/eunit/couch_mrview_design_docs_tests.erl diff --git a/src/couch_mrview/test/couch_mrview_http_tests.erl b/src/couch_mrview/test/eunit/couch_mrview_http_tests.erl index bd11c7ad8..bd11c7ad8 100644 --- a/src/couch_mrview/test/couch_mrview_http_tests.erl +++ b/src/couch_mrview/test/eunit/couch_mrview_http_tests.erl diff --git a/src/couch_mrview/test/couch_mrview_index_changes_tests.erl b/src/couch_mrview/test/eunit/couch_mrview_index_changes_tests.erl index f0be1b9b1..f0be1b9b1 100644 --- a/src/couch_mrview/test/couch_mrview_index_changes_tests.erl +++ b/src/couch_mrview/test/eunit/couch_mrview_index_changes_tests.erl diff --git a/src/couch_mrview/test/couch_mrview_index_info_tests.erl b/src/couch_mrview/test/eunit/couch_mrview_index_info_tests.erl index efa03e7c0..efa03e7c0 100644 --- a/src/couch_mrview/test/couch_mrview_index_info_tests.erl +++ b/src/couch_mrview/test/eunit/couch_mrview_index_info_tests.erl diff --git a/src/couch_mrview/test/couch_mrview_local_docs_tests.erl b/src/couch_mrview/test/eunit/couch_mrview_local_docs_tests.erl index b0d25469a..b0d25469a 100644 --- a/src/couch_mrview/test/couch_mrview_local_docs_tests.erl +++ b/src/couch_mrview/test/eunit/couch_mrview_local_docs_tests.erl diff --git a/src/couch_mrview/test/couch_mrview_map_views_tests.erl b/src/couch_mrview/test/eunit/couch_mrview_map_views_tests.erl index 805dc6c74..805dc6c74 100644 --- a/src/couch_mrview/test/couch_mrview_map_views_tests.erl +++ b/src/couch_mrview/test/eunit/couch_mrview_map_views_tests.erl diff --git a/src/couch_mrview/test/couch_mrview_purge_docs_fabric_tests.erl b/src/couch_mrview/test/eunit/couch_mrview_purge_docs_fabric_tests.erl index 213acac0b..213acac0b 100644 --- a/src/couch_mrview/test/couch_mrview_purge_docs_fabric_tests.erl +++ b/src/couch_mrview/test/eunit/couch_mrview_purge_docs_fabric_tests.erl diff --git a/src/couch_mrview/test/couch_mrview_purge_docs_tests.erl b/src/couch_mrview/test/eunit/couch_mrview_purge_docs_tests.erl index 1020607a4..1020607a4 100644 --- a/src/couch_mrview/test/couch_mrview_purge_docs_tests.erl +++ b/src/couch_mrview/test/eunit/couch_mrview_purge_docs_tests.erl diff --git a/src/couch_mrview/test/couch_mrview_red_views_tests.erl b/src/couch_mrview/test/eunit/couch_mrview_red_views_tests.erl index b83686113..b83686113 100644 --- a/src/couch_mrview/test/couch_mrview_red_views_tests.erl +++ b/src/couch_mrview/test/eunit/couch_mrview_red_views_tests.erl diff --git a/src/couch_mrview/test/couch_mrview_util_tests.erl b/src/couch_mrview/test/eunit/couch_mrview_util_tests.erl index 7046c9bb2..7046c9bb2 100644 --- a/src/couch_mrview/test/couch_mrview_util_tests.erl +++ b/src/couch_mrview/test/eunit/couch_mrview_util_tests.erl diff --git a/src/couch_peruser/test/couch_peruser_test.erl b/src/couch_peruser/test/eunit/couch_peruser_test.erl index 8501cc36f..8501cc36f 100644 --- a/src/couch_peruser/test/couch_peruser_test.erl +++ b/src/couch_peruser/test/eunit/couch_peruser_test.erl diff --git a/src/couch_replicator/test/couch_replicator_attachments_too_large.erl b/src/couch_replicator/test/eunit/couch_replicator_attachments_too_large.erl index 7fe84d2d9..7fe84d2d9 100644 --- a/src/couch_replicator/test/couch_replicator_attachments_too_large.erl +++ b/src/couch_replicator/test/eunit/couch_replicator_attachments_too_large.erl diff --git a/src/couch_replicator/test/couch_replicator_compact_tests.erl b/src/couch_replicator/test/eunit/couch_replicator_compact_tests.erl index 7cc530c19..7cc530c19 100644 --- a/src/couch_replicator/test/couch_replicator_compact_tests.erl +++ b/src/couch_replicator/test/eunit/couch_replicator_compact_tests.erl diff --git a/src/couch_replicator/test/couch_replicator_connection_tests.erl b/src/couch_replicator/test/eunit/couch_replicator_connection_tests.erl index e75cc5a63..e75cc5a63 100644 --- a/src/couch_replicator/test/couch_replicator_connection_tests.erl +++ b/src/couch_replicator/test/eunit/couch_replicator_connection_tests.erl diff --git a/src/couch_replicator/test/couch_replicator_create_target_with_options_tests.erl b/src/couch_replicator/test/eunit/couch_replicator_create_target_with_options_tests.erl index 63310d39e..63310d39e 100644 --- a/src/couch_replicator/test/couch_replicator_create_target_with_options_tests.erl +++ b/src/couch_replicator/test/eunit/couch_replicator_create_target_with_options_tests.erl diff --git a/src/couch_replicator/test/couch_replicator_filtered_tests.erl b/src/couch_replicator/test/eunit/couch_replicator_filtered_tests.erl index d34e9f020..d34e9f020 100644 --- a/src/couch_replicator/test/couch_replicator_filtered_tests.erl +++ b/src/couch_replicator/test/eunit/couch_replicator_filtered_tests.erl diff --git a/src/couch_replicator/test/couch_replicator_httpc_pool_tests.erl b/src/couch_replicator/test/eunit/couch_replicator_httpc_pool_tests.erl index c4ad4e9b6..c4ad4e9b6 100644 --- a/src/couch_replicator/test/couch_replicator_httpc_pool_tests.erl +++ b/src/couch_replicator/test/eunit/couch_replicator_httpc_pool_tests.erl diff --git a/src/couch_replicator/test/couch_replicator_id_too_long_tests.erl b/src/couch_replicator/test/eunit/couch_replicator_id_too_long_tests.erl index 70eda0566..70eda0566 100644 --- a/src/couch_replicator/test/couch_replicator_id_too_long_tests.erl +++ b/src/couch_replicator/test/eunit/couch_replicator_id_too_long_tests.erl diff --git a/src/couch_replicator/test/couch_replicator_large_atts_tests.erl b/src/couch_replicator/test/eunit/couch_replicator_large_atts_tests.erl index b9adf5c4b..b9adf5c4b 100644 --- a/src/couch_replicator/test/couch_replicator_large_atts_tests.erl +++ b/src/couch_replicator/test/eunit/couch_replicator_large_atts_tests.erl diff --git a/src/couch_replicator/test/couch_replicator_many_leaves_tests.erl b/src/couch_replicator/test/eunit/couch_replicator_many_leaves_tests.erl index eee5b1647..eee5b1647 100644 --- a/src/couch_replicator/test/couch_replicator_many_leaves_tests.erl +++ b/src/couch_replicator/test/eunit/couch_replicator_many_leaves_tests.erl diff --git a/src/couch_replicator/test/couch_replicator_missing_stubs_tests.erl b/src/couch_replicator/test/eunit/couch_replicator_missing_stubs_tests.erl index c1681781f..c1681781f 100644 --- a/src/couch_replicator/test/couch_replicator_missing_stubs_tests.erl +++ b/src/couch_replicator/test/eunit/couch_replicator_missing_stubs_tests.erl diff --git a/src/couch_replicator/test/couch_replicator_proxy_tests.erl b/src/couch_replicator/test/eunit/couch_replicator_proxy_tests.erl index 4f545bcb5..4f545bcb5 100644 --- a/src/couch_replicator/test/couch_replicator_proxy_tests.erl +++ b/src/couch_replicator/test/eunit/couch_replicator_proxy_tests.erl diff --git a/src/couch_replicator/test/couch_replicator_rate_limiter_tests.erl b/src/couch_replicator/test/eunit/couch_replicator_rate_limiter_tests.erl index 034550aec..034550aec 100644 --- a/src/couch_replicator/test/couch_replicator_rate_limiter_tests.erl +++ b/src/couch_replicator/test/eunit/couch_replicator_rate_limiter_tests.erl diff --git a/src/couch_replicator/test/couch_replicator_retain_stats_between_job_runs.erl b/src/couch_replicator/test/eunit/couch_replicator_retain_stats_between_job_runs.erl index 3b7377b78..3b7377b78 100644 --- a/src/couch_replicator/test/couch_replicator_retain_stats_between_job_runs.erl +++ b/src/couch_replicator/test/eunit/couch_replicator_retain_stats_between_job_runs.erl diff --git a/src/couch_replicator/test/couch_replicator_selector_tests.erl b/src/couch_replicator/test/eunit/couch_replicator_selector_tests.erl index a7f4c5df3..a7f4c5df3 100644 --- a/src/couch_replicator/test/couch_replicator_selector_tests.erl +++ b/src/couch_replicator/test/eunit/couch_replicator_selector_tests.erl diff --git a/src/couch_replicator/test/couch_replicator_small_max_request_size_target.erl b/src/couch_replicator/test/eunit/couch_replicator_small_max_request_size_target.erl index af3a285f5..af3a285f5 100644 --- a/src/couch_replicator/test/couch_replicator_small_max_request_size_target.erl +++ b/src/couch_replicator/test/eunit/couch_replicator_small_max_request_size_target.erl diff --git a/src/couch_replicator/test/couch_replicator_test_helper.erl b/src/couch_replicator/test/eunit/couch_replicator_test_helper.erl index fd0409164..fd0409164 100644 --- a/src/couch_replicator/test/couch_replicator_test_helper.erl +++ b/src/couch_replicator/test/eunit/couch_replicator_test_helper.erl diff --git a/src/couch_replicator/test/couch_replicator_use_checkpoints_tests.erl b/src/couch_replicator/test/eunit/couch_replicator_use_checkpoints_tests.erl index c2fcf8bf1..c2fcf8bf1 100644 --- a/src/couch_replicator/test/couch_replicator_use_checkpoints_tests.erl +++ b/src/couch_replicator/test/eunit/couch_replicator_use_checkpoints_tests.erl diff --git a/src/ddoc_cache/test/ddoc_cache_basic_test.erl b/src/ddoc_cache/test/eunit/ddoc_cache_basic_test.erl index b576d88bb..b576d88bb 100644 --- a/src/ddoc_cache/test/ddoc_cache_basic_test.erl +++ b/src/ddoc_cache/test/eunit/ddoc_cache_basic_test.erl diff --git a/src/ddoc_cache/test/ddoc_cache_coverage_test.erl b/src/ddoc_cache/test/eunit/ddoc_cache_coverage_test.erl index b1a185bdc..b1a185bdc 100644 --- a/src/ddoc_cache/test/ddoc_cache_coverage_test.erl +++ b/src/ddoc_cache/test/eunit/ddoc_cache_coverage_test.erl diff --git a/src/ddoc_cache/test/ddoc_cache_disabled_test.erl b/src/ddoc_cache/test/eunit/ddoc_cache_disabled_test.erl index d46bdde32..d46bdde32 100644 --- a/src/ddoc_cache/test/ddoc_cache_disabled_test.erl +++ b/src/ddoc_cache/test/eunit/ddoc_cache_disabled_test.erl diff --git a/src/ddoc_cache/test/ddoc_cache_entry_test.erl b/src/ddoc_cache/test/eunit/ddoc_cache_entry_test.erl index c992bea8d..c992bea8d 100644 --- a/src/ddoc_cache/test/ddoc_cache_entry_test.erl +++ b/src/ddoc_cache/test/eunit/ddoc_cache_entry_test.erl diff --git a/src/ddoc_cache/test/ddoc_cache_ev.erl b/src/ddoc_cache/test/eunit/ddoc_cache_ev.erl index a451342cf..a451342cf 100644 --- a/src/ddoc_cache/test/ddoc_cache_ev.erl +++ b/src/ddoc_cache/test/eunit/ddoc_cache_ev.erl diff --git a/src/ddoc_cache/test/ddoc_cache_eviction_test.erl b/src/ddoc_cache/test/eunit/ddoc_cache_eviction_test.erl index bd61afc37..bd61afc37 100644 --- a/src/ddoc_cache/test/ddoc_cache_eviction_test.erl +++ b/src/ddoc_cache/test/eunit/ddoc_cache_eviction_test.erl diff --git a/src/ddoc_cache/test/ddoc_cache_lru_test.erl b/src/ddoc_cache/test/eunit/ddoc_cache_lru_test.erl index e37f1c090..e37f1c090 100644 --- a/src/ddoc_cache/test/ddoc_cache_lru_test.erl +++ b/src/ddoc_cache/test/eunit/ddoc_cache_lru_test.erl diff --git a/src/ddoc_cache/test/ddoc_cache_no_cache_test.erl b/src/ddoc_cache/test/eunit/ddoc_cache_no_cache_test.erl index 637a6e872..637a6e872 100644 --- a/src/ddoc_cache/test/ddoc_cache_no_cache_test.erl +++ b/src/ddoc_cache/test/eunit/ddoc_cache_no_cache_test.erl diff --git a/src/ddoc_cache/test/ddoc_cache_open_error_test.erl b/src/ddoc_cache/test/eunit/ddoc_cache_open_error_test.erl index c7379d26a..c7379d26a 100644 --- a/src/ddoc_cache/test/ddoc_cache_open_error_test.erl +++ b/src/ddoc_cache/test/eunit/ddoc_cache_open_error_test.erl diff --git a/src/ddoc_cache/test/ddoc_cache_open_test.erl b/src/ddoc_cache/test/eunit/ddoc_cache_open_test.erl index 73d644f71..73d644f71 100644 --- a/src/ddoc_cache/test/ddoc_cache_open_test.erl +++ b/src/ddoc_cache/test/eunit/ddoc_cache_open_test.erl diff --git a/src/ddoc_cache/test/ddoc_cache_opener_test.erl b/src/ddoc_cache/test/eunit/ddoc_cache_opener_test.erl index c3846360c..c3846360c 100644 --- a/src/ddoc_cache/test/ddoc_cache_opener_test.erl +++ b/src/ddoc_cache/test/eunit/ddoc_cache_opener_test.erl diff --git a/src/ddoc_cache/test/ddoc_cache_refresh_test.erl b/src/ddoc_cache/test/eunit/ddoc_cache_refresh_test.erl index 24ae346d4..24ae346d4 100644 --- a/src/ddoc_cache/test/ddoc_cache_refresh_test.erl +++ b/src/ddoc_cache/test/eunit/ddoc_cache_refresh_test.erl diff --git a/src/ddoc_cache/test/ddoc_cache_remove_test.erl b/src/ddoc_cache/test/eunit/ddoc_cache_remove_test.erl index e40518529..e40518529 100644 --- a/src/ddoc_cache/test/ddoc_cache_remove_test.erl +++ b/src/ddoc_cache/test/eunit/ddoc_cache_remove_test.erl diff --git a/src/ddoc_cache/test/ddoc_cache_test.hrl b/src/ddoc_cache/test/eunit/ddoc_cache_test.hrl index 73f7bc217..73f7bc217 100644 --- a/src/ddoc_cache/test/ddoc_cache_test.hrl +++ b/src/ddoc_cache/test/eunit/ddoc_cache_test.hrl diff --git a/src/ddoc_cache/test/ddoc_cache_tutil.erl b/src/ddoc_cache/test/eunit/ddoc_cache_tutil.erl index b34d4b163..b34d4b163 100644 --- a/src/ddoc_cache/test/ddoc_cache_tutil.erl +++ b/src/ddoc_cache/test/eunit/ddoc_cache_tutil.erl diff --git a/src/dreyfus/test/elixir/test/partition_search_test.exs b/src/dreyfus/test/elixir/test/partition_search_test.exs index 052a41ad1..4400d7b7f 100644 --- a/src/dreyfus/test/elixir/test/partition_search_test.exs +++ b/src/dreyfus/test/elixir/test/partition_search_test.exs @@ -26,12 +26,12 @@ defmodule PartitionSearchTest do end def create_ddoc(db_name, opts \\ %{}) do - indexFn = "function(doc) {\n if (doc.some) {\n index('some', doc.some);\n }\n}" + index_fn = "function(doc) {\n if (doc.some) {\n index('some', doc.some);\n }\n}" default_ddoc = %{ indexes: %{ books: %{ analyzer: %{name: "standard"}, - index: indexFn + index: index_fn } } } diff --git a/src/fabric/test/fabric_rpc_purge_tests.erl b/src/fabric/test/eunit/fabric_rpc_purge_tests.erl index 4eafb2bc4..4eafb2bc4 100644 --- a/src/fabric/test/fabric_rpc_purge_tests.erl +++ b/src/fabric/test/eunit/fabric_rpc_purge_tests.erl diff --git a/src/global_changes/test/global_changes_hooks_tests.erl b/src/global_changes/test/eunit/global_changes_hooks_tests.erl index 23fa2c87f..23fa2c87f 100644 --- a/src/global_changes/test/global_changes_hooks_tests.erl +++ b/src/global_changes/test/eunit/global_changes_hooks_tests.erl diff --git a/src/mem3/test/mem3_cluster_test.erl b/src/mem3/test/eunit/mem3_cluster_test.erl index 4610d64bd..4610d64bd 100644 --- a/src/mem3/test/mem3_cluster_test.erl +++ b/src/mem3/test/eunit/mem3_cluster_test.erl diff --git a/src/mem3/test/mem3_hash_test.erl b/src/mem3/test/eunit/mem3_hash_test.erl index 7a40c5366..7a40c5366 100644 --- a/src/mem3/test/mem3_hash_test.erl +++ b/src/mem3/test/eunit/mem3_hash_test.erl diff --git a/src/mem3/test/mem3_rep_test.erl b/src/mem3/test/eunit/mem3_rep_test.erl index 4a46e7b93..4a46e7b93 100644 --- a/src/mem3/test/mem3_rep_test.erl +++ b/src/mem3/test/eunit/mem3_rep_test.erl diff --git a/src/mem3/test/mem3_reshard_api_test.erl b/src/mem3/test/eunit/mem3_reshard_api_test.erl index c4df24ad3..c4df24ad3 100644 --- a/src/mem3/test/mem3_reshard_api_test.erl +++ b/src/mem3/test/eunit/mem3_reshard_api_test.erl diff --git a/src/mem3/test/mem3_reshard_changes_feed_test.erl b/src/mem3/test/eunit/mem3_reshard_changes_feed_test.erl index 4b9e2a34a..4b9e2a34a 100644 --- a/src/mem3/test/mem3_reshard_changes_feed_test.erl +++ b/src/mem3/test/eunit/mem3_reshard_changes_feed_test.erl diff --git a/src/mem3/test/mem3_reshard_test.erl b/src/mem3/test/eunit/mem3_reshard_test.erl index ab6202115..ab6202115 100644 --- a/src/mem3/test/mem3_reshard_test.erl +++ b/src/mem3/test/eunit/mem3_reshard_test.erl diff --git a/src/mem3/test/mem3_ring_prop_tests.erl b/src/mem3/test/eunit/mem3_ring_prop_tests.erl index 9f4f86f5f..9f4f86f5f 100644 --- a/src/mem3/test/mem3_ring_prop_tests.erl +++ b/src/mem3/test/eunit/mem3_ring_prop_tests.erl diff --git a/src/mem3/test/mem3_seeds_test.erl b/src/mem3/test/eunit/mem3_seeds_test.erl index ba83b66be..ba83b66be 100644 --- a/src/mem3/test/mem3_seeds_test.erl +++ b/src/mem3/test/eunit/mem3_seeds_test.erl diff --git a/src/mem3/test/mem3_sync_security_test.erl b/src/mem3/test/eunit/mem3_sync_security_test.erl index e67a72017..e67a72017 100644 --- a/src/mem3/test/mem3_sync_security_test.erl +++ b/src/mem3/test/eunit/mem3_sync_security_test.erl diff --git a/src/mem3/test/mem3_util_test.erl b/src/mem3/test/eunit/mem3_util_test.erl index 8b74c4b2b..8b74c4b2b 100644 --- a/src/mem3/test/mem3_util_test.erl +++ b/src/mem3/test/eunit/mem3_util_test.erl diff --git a/test/elixir/Makefile b/test/elixir/Makefile index bfcf017d5..67ce2b427 100644 --- a/test/elixir/Makefile +++ b/test/elixir/Makefile @@ -1,2 +1,4 @@ +SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST))) + all: - mix test --trace + make -C ${SELF_DIR}../.. elixir diff --git a/test/elixir/README.md b/test/elixir/README.md index a59b4df90..f7691ad3c 100644 --- a/test/elixir/README.md +++ b/test/elixir/README.md @@ -111,3 +111,146 @@ X means done, - means partially - [ ] Port view_pagination.js - [ ] Port view_sandboxing.js - [ ] Port view_update_seq.js + +# Using ExUnit to write unit tests + +Elixir has a number of benefits which makes writing unit tests easier. +For example it is trivial to do codegeneration of tests. +Bellow we present a few use cases where code-generation is really helpful. + +## How to write ExUnit tests + +1. Create new file in test/exunit/ directory (the file name should match *_test.exs) +2. In case it is a first file in the directory create test_helper.exs (look at src/couch/test/exunit/test_helper.exs to get an idea) +3. define test module which does `use Couch.Test.ExUnit.Case` +4. Define test cases in the module + +You can run tests either: +- using make: `make exunit` +- using mix: BUILDDIR=`pwd` ERL_LIBS=`pwd`/src MIX_ENV=test mix test --trace + +## Generating tests from spec + +Sometimes we have some data in structured format and want +to generate test cases using that data. This is easy in Elixir. +For example suppose we have following spec: +``` +{ + "{db_name}/_view_cleanup": { + "roles": ["_admin"] + } +} +``` +We can use this spec to generate test cases +``` +defmodule GenerateTestsFromSpec do + use ExUnit.Case + require Record + Record.defrecordp :user_ctx, Record.extract(:user_ctx, from_lib: "couch/include/couch_db.hrl") + Record.defrecordp :httpd, Record.extract(:httpd, from_lib: "couch/include/couch_db.hrl") + + {:ok, spec_bin} = File.read("roles.json") + spec = :jiffy.decode(spec_bin, [:return_maps]) + Enum.each spec, fn {path, path_spec} -> + roles = path_spec["roles"] + @roles roles + @path_parts String.split(path, "/") + test "Access with `#{inspect(roles)}` roles" do + req = httpd(path_parts: @path_parts, user_ctx: user_ctx(roles: @roles)) + :chttpd_auth_request.authorize_request(req) + end + end +end +``` +As a result we would get +``` +GenerateTestsFromSpec + * test Access with `["_admin"]` roles (0.00ms) +``` + +## Test all possible combinations + +Sometimes we want to test all possible permutations for parameters. +This can be accomplished using something like the following: + +``` +defmodule Permutations do + use ExUnit.Case + pairs = :couch_tests_combinatorics.product([ + [:remote, :local], [:remote, :local] + ]) + for [source, dest] <- pairs do + @source source + @dest dest + test "Replication #{source} -> #{dest}" do + assert :ok == :ok + end + end +end +``` + +This would produce following tests +``` +Permutations + * test Replication remote -> remote (0.00ms) + * test Replication local -> remote (0.00ms) + * test Replication remote -> local (0.00ms) + * test Replication local -> local (0.00ms) +``` + +## Reuseing of common setups + +The setup functions are quite similar in lots of tests therefore it makes +sense to reuse them. The idea is to add shared setup functions into either +- test/elixir/lib/setup/common.ex +- test/elixir/lib/setup/<something>.ex + +The setup functions looks like the following: +``` +defmodule Foo do + alias Couch.Test.Setup.Step + + def httpd_with_admin(setup) do + setup + |> Step.Start.new(:start, extra_apps: [:chttpd]) + |> Step.User.new(:admin, roles: [:server_admin]) + end +end +``` + +These parts of a setup chain can be invoked as follows: +``` +defmodule Couch.Test.CRUD do + use Couch.Test.ExUnit.Case + alias Couch.Test.Utils + + alias Couch.Test.Setup + + alias Couch.Test.Setup.Step + + def with_db(context, setup) do + setup = + setup + |> Setup.Common.httpd_with_db() + |> Setup.run() + + context = + Map.merge(context, %{ + db_name: setup |> Setup.get(:db) |> Step.Create.DB.name(), + base_url: setup |> Setup.get(:start) |> Step.Start.clustered_url(), + user: setup |> Setup.get(:admin) |> Step.User.name() + }) + + {context, setup} + end + + describe "Database CRUD using Fabric API" do + @describetag setup: &__MODULE__.with_db/2 + test "Create DB", ctx do + IO.puts("base_url: #{ctx.base_url}") + IO.puts("admin: #{ctx.user}") + IO.puts("db_name: #{ctx.db_name}") + end + end +end +```
\ No newline at end of file diff --git a/test/elixir/lib/ex_unit.ex b/test/elixir/lib/ex_unit.ex new file mode 100644 index 000000000..7abba07ef --- /dev/null +++ b/test/elixir/lib/ex_unit.ex @@ -0,0 +1,44 @@ +defmodule Couch.Test.ExUnit.Case do + @moduledoc """ + Template for ExUnit test case. It can be used as follows: + ``` + defmodule Couch.Test.CRUD do + use Couch.Test.ExUnit.Case + ... + def with_db(context, setup) do + setup = setup + |> Step.Start.new(:start, extra_apps: [:chttpd]) + |> Setup.run + context = Map.merge(context, %{ + base_url: setup |> Setup.get(:start) |> Step.Start.clustered_url + }) + {context, setup} + end + describe "Group of tests" do + @describetag setup: &__MODULE__.with_db/2 + test "Single test in a group", ctx do + ctx.base_url + end + ... + end + ``` + """ + + use ExUnit.CaseTemplate + alias Couch.Test.Setup + + using do + quote do + require Logger + use ExUnit.Case + end + end + + setup context do + case context do + %{:setup => setup_fun} -> + {:ok, Setup.setup(context, setup_fun)} + _ -> {:ok, context} + end + end +end
\ No newline at end of file diff --git a/test/elixir/lib/setup.ex b/test/elixir/lib/setup.ex new file mode 100644 index 000000000..037988521 --- /dev/null +++ b/test/elixir/lib/setup.ex @@ -0,0 +1,97 @@ +defmodule Couch.Test.Setup do + @moduledoc """ + Allows to chain setup functions. + Example of using: + + ``` + alias Couch,Test.Utils + def with_db_name(context, setup) do + setup = + setup + |> Step.Start.new(:start, extra_apps: [:chttpd]) + |> Step.User.new(:admin, roles: [:server_admin]) + |> Setup.run() + + context = + Map.merge(context, %{ + db_name: Utils.random_name("db") + base_url: setup |> Setup.get(:start) |> Step.Start.clustered_url(), + user: setup |> Setup.get(:admin) |> Step.User.name() + }) + {context, setup} + end + + @tag setup: &__MODULE__.with_db_name/2 + test "Create", %{db_name: db_name, user: user} do + ... + end + ``` + """ + import ExUnit.Callbacks, only: [on_exit: 1] + import ExUnit.Assertions, only: [assert: 2] + require Logger + + alias Couch.Test.Setup + alias Couch.Test.Setup.Step + defstruct stages: [], by_type: %{}, state: %{} + + def step(%Setup{stages: stages} = setup, id, step) do + %{setup | stages: [{id, step} | stages]} + end + + defp setup_step({id, step}, %Setup{state: state, by_type: by_type} = setup) do + %module{} = step + # credo:disable-for-next-line Credo.Check.Warning.LazyLogging + Logger.debug("Calling 'setup/2' for '#{module}'") + step = module.setup(setup, step) + state = Map.put(state, id, step) + by_type = Map.update(by_type, module, [id], fn ids -> [id | ids] end) + on_exit(fn -> + # credo:disable-for-next-line Credo.Check.Warning.LazyLogging + Logger.debug("Calling 'teardown/3' for '#{module}'") + try do + module.teardown(setup, step) + :ok + catch + _ -> :ok + _, _ -> :ok + end + end) + {{id, step}, %{setup | state: state, by_type: by_type}} + end + + def run(%Setup{stages: stages} = setup) do + {stages, setup} = stages + |> Enum.reverse + |> Enum.map_reduce(setup, &setup_step/2) + %{setup | stages: stages} + end + + def setup(ctx) do + Map.get(ctx, :__setup) + end + + def setup(ctx, setup_fun) do + setup = %Setup{} |> Step.Config.new(:test_config, config_file: nil) + {ctx, setup} = setup_fun.(ctx, setup) + assert not Map.has_key?(ctx, :__setup), "Key `__setup` is reserved for internal purposes" + Map.put(ctx, :__setup, setup) + end + + def completed?(%Setup{by_type: by_type}, step) do + Map.has_key?(by_type, step) + end + + def all_for(%Setup{by_type: by_type, state: state}, step_module) do + Map.take(state, by_type[step_module] || []) + end + + def reduce_for(setup, step_module, acc, fun) do + Enum.reduce(all_for(setup, step_module), acc, fun) + end + + def get(%Setup{state: state}, id) do + state[id] + end + +end
\ No newline at end of file diff --git a/test/elixir/lib/setup/common.ex b/test/elixir/lib/setup/common.ex new file mode 100644 index 000000000..3b59e9476 --- /dev/null +++ b/test/elixir/lib/setup/common.ex @@ -0,0 +1,22 @@ +defmodule Couch.Test.Setup.Common do + @moduledoc """ + A set of common setup pipelines for reuse + + - httpd_with_admin - chttpd is started and new admin is created + - httpd_with_db - httpd_with_admin and new database is created + """ + alias Couch.Test.Setup.Step + + def httpd_with_admin(setup) do + setup + |> Step.Start.new(:start, extra_apps: [:chttpd]) + |> Step.User.new(:admin, roles: [:server_admin]) + end + + def httpd_with_db(setup) do + setup + |> httpd_with_admin() + |> Step.Create.DB.new(:db) + end + +end
\ No newline at end of file diff --git a/test/elixir/lib/step.ex b/test/elixir/lib/step.ex new file mode 100644 index 000000000..316d765aa --- /dev/null +++ b/test/elixir/lib/step.ex @@ -0,0 +1,44 @@ +defmodule Couch.Test.Setup.Step do + @moduledoc """ + A behaviour module for implementing custom setup steps for future reuse. + + Every module implementing this behaviour must implement following three functions: + - new + - setup + - teardown + + Here is an example of a custom step + ``` + defmodule Couch.Test.Setup.Step.Foo do + + alias Couch.Test.Setup + + defstruct [:foo_data, :foo_arg] + + def new(setup, id, arg: arg) do + setup |> Setup.step(id, %__MODULE__{foo_arg: arg}) + end + + def setup(_setup, %__MODULE__{foo_arg: arg} = step) do + ... + foo_data = ... + %{step | foo_data: foo_data} + end + + def teardown(_setup, _step) do + end + + def get_data(%__MODULE__{foo_data: data}) do + data + end + end + ``` + """ + @type t :: struct() + @callback new(setup :: %Couch.Test.Setup{}, id :: atom(), args: Keyword.t()) :: + %Couch.Test.Setup{} + @callback setup(setup :: %Couch.Test.Setup{}, step :: t()) :: + t() + @callback teardown(setup :: %Couch.Test.Setup{}, step :: t()) :: + any() +end
\ No newline at end of file diff --git a/test/elixir/lib/step/config.ex b/test/elixir/lib/step/config.ex new file mode 100644 index 000000000..9d9ac8eab --- /dev/null +++ b/test/elixir/lib/step/config.ex @@ -0,0 +1,33 @@ +defmodule Couch.Test.Setup.Step.Config do + @moduledoc """ + This setup reads configuration for a test run. + It is not supposed to be called manually. + """ + + alias Couch.Test.Setup + + defstruct [:config, :config_file] + + def new(setup, id, config_file: config_file) do + setup |> Setup.step(id, %__MODULE__{config_file: config_file}) + end + + def setup(_setup, %__MODULE__{config_file: config_file} = step) do + # TODO we would need to access config file here + %{step | config: %{ + backdoor: %{ + protocol: "http" + }, + clustered: %{ + protocol: "http" + } + }} + end + + def teardown(_setup, _step) do + end + + def get(%__MODULE__{config: config}) do + config + end +end
\ No newline at end of file diff --git a/test/elixir/lib/step/create_db.ex b/test/elixir/lib/step/create_db.ex new file mode 100644 index 000000000..3cca3c55a --- /dev/null +++ b/test/elixir/lib/step/create_db.ex @@ -0,0 +1,53 @@ +defmodule Couch.Test.Setup.Step.Create.DB do + @moduledoc """ + This setup step creates a database with given name. + If name is not provided random name would be used. + + Example + setup + ... + |> Setup.Step.Create.DB.new(:db) + ... + |> Setup.run + ... + + db_name = setup |> Setup.get(:db) |> Setup.Step.Create.DB.name + """ + alias Couch.Test.Setup + alias Couch.Test.Setup.Step + alias Couch.Test.Utils + + defstruct [:name] + + import ExUnit.Assertions, only: [assert: 1, assert: 2] + + import Utils + + @admin {:user_ctx, user_ctx(roles: ["_admin"])} + + def new(setup, id) do + new(setup, id, name: Utils.random_name("db")) + end + + def new(setup, id, name: name) do + setup |> Setup.step(id, %__MODULE__{name: name}) + end + + def setup(setup, %__MODULE__{name: name} = step) do + assert Setup.completed?(setup, Step.Start), "Require `Start` step" + assert :fabric in Step.Start.apps(), "Fabric is not started" + res = :fabric.create_db(name, [@admin]) + assert res in [:ok, :accepted], "Cannot create `#{name}` database" + step + end + + def teardown(setup, %__MODULE__{name: name} = step) do + :fabric.delete_db(name, [@admin]) + :ok + end + + def name(%__MODULE__{name: name}) do + name + end + +end
\ No newline at end of file diff --git a/test/elixir/lib/step/start.ex b/test/elixir/lib/step/start.ex new file mode 100644 index 000000000..ea7c70f5a --- /dev/null +++ b/test/elixir/lib/step/start.ex @@ -0,0 +1,85 @@ +defmodule Couch.Test.Setup.Step.Start do + @moduledoc """ + Step to start a set of couchdb applications. By default it starts + list of applications from DEFAULT_APPS macro defined in `test_util.erl`. + At the time of writing this list included: + - inets + - ibrowse + - ssl + - config + - couch_epi + - couch_event + - couch + + It is possible to specify additional list of applications to start. + + This setup is also maintains `clustered_url` and `backdoor_url` for future use. + The value for `clustered_url` could be nil if :chttpd app is not included in extra_apps. + + Example + setup + |> Setup.Step.Start.new(:start, extra_apps: [:fabric, :chttpd]) + ... + |> Setup.run + ... + + started_apps = Setup.Step.Start.apps + clustered_url = setup |> Setup.get(:start) |> Setup.Step.Start.clustered_url + backdoor_url = setup |> Setup.get(:start) |> Setup.Step.Start.backdoor_url + """ + alias Couch.Test.Setup + alias Couch.Test.Setup.Step + + defstruct [:test_ctx, :extra_apps, :clustered_url, :backdoor_url] + + def new(setup, id, extra_apps: extra_apps) do + setup |> Setup.step(id, %__MODULE__{extra_apps: extra_apps || []}) + end + + def setup(setup, %__MODULE__{extra_apps: extra_apps} = step) do + test_config = setup |> Setup.get(:test_config) |> Step.Config.get() + protocol = test_config[:backdoor][:protocol] || "http" + test_ctx = :test_util.start_couch(extra_apps) + addr = :config.get('couch_httpd', 'bind_address', '127.0.0.1') + port = :mochiweb_socket_server.get(:couch_httpd, :port) + backdoor_url = "#{protocol}://#{addr}:#{port}" + clustered_url = + if :chttpd in extra_apps do + protocol = test_config[:clustered][:protocol] || "http" + addr = :config.get('chttpd', 'bind_address', '127.0.0.1') + port = :mochiweb_socket_server.get(:chttpd, :port) + "#{protocol}://#{addr}:#{port}" + else + nil + end + %{step | + test_ctx: test_ctx, + clustered_url: clustered_url, + backdoor_url: backdoor_url + } + end + + def teardown(_setup, %___MODULE__{test_ctx: test_ctx}) do + :test_util.stop_couch(test_ctx) + end + + def backdoor_url(%__MODULE__{backdoor_url: url}) do + url + end + + def clustered_url(%__MODULE__{clustered_url: url}) do + url + end + + def extra_apps(%__MODULE__{extra_apps: apps}) do + apps + end + + @doc """ + Returns list of currently running applications + """ + def apps() do + for {x, _, _} <- Application.started_applications, do: x + end + +end
\ No newline at end of file diff --git a/test/elixir/lib/step/user.ex b/test/elixir/lib/step/user.ex new file mode 100644 index 000000000..5a1cab33c --- /dev/null +++ b/test/elixir/lib/step/user.ex @@ -0,0 +1,104 @@ +defmodule Couch.Test.Setup.Step.User do + @moduledoc """ + Step to create user with given list of roles. + The :server_admin is a special role which is used to put user + into `admins` section of a config instead of a database. + + Example + setup + |> Setup.Step.User.new(:admin, roles: [:server_admin]) + ... + |> Setup.run + ... + + user = setup |> Setup.get(:admin) |> Step.User.name() + """ + + alias Couch.Test.Setup + alias Couch.Test.Setup.Step + alias Couch.Test.Utils + + import ExUnit.Callbacks, only: [on_exit: 1] + + defstruct [:roles, :name, :password, :users_db] + + import ExUnit.Assertions, only: [assert: 1, assert: 2] + + import Utils + + @admin {:user_ctx, user_ctx(roles: ["_admin"])} + + def new(setup, id, roles: roles) do + setup |> Setup.step(id, %__MODULE__{roles: roles || []}) + end + + def setup(setup, %__MODULE__{roles: roles} = step) do + users_db = IO.chardata_to_string( + :config.get('chttpd_auth', 'authentication_db', '_users')) + if not Utils.db_exists?(users_db) do + on_exit fn -> + :fabric.delete_db(users_db, [@admin]) + end + res = :fabric.create_db(users_db, [@admin]) + assert res in [:ok, :accepted], "Cannot create `users` database #{users_db}" + end + + if :server_admin in roles do + name = Utils.random_name("admin") + pass = Utils.random_password() + :config.set( + 'admins', String.to_charlist(name), String.to_charlist(pass), false) + %{step | + name: name, + password: pass, + users_db: users_db + } + else + name = Utils.random_name("admin") + pass = Utils.random_password() + doc_id = "org.couchdb.user:#{name}" + user_doc = :couch_doc.from_json_obj(%{ + _id: doc_id, + name: name, + type: "user", + roles: roles, + password: pass + }) + res = :fabric.update_doc(users_db, user_doc, [@admin]) + assert res in [:ok, :accepted], "Cannot create user document" + %{step | + name: name, + password: pass, + users_db: users_db, + roles: roles + } + end + end + + def teardown(setup, %__MODULE__{name: name, users_db: users_db, roles: roles} = step) do + if :server_admin in roles do + :config.delete("admins", String.to_charlist(name), false) + else + doc_id = "org.couchdb.user:#{name}" + assert {:ok, doc_info(revs: [rev | _])} = :fabric.get_doc_info(users_db) + doc = :couch_doc.from_json_obj(%{ + _id: doc_id, + _rev: rev, + _deleted: true + }) + assert {:ok, _resp} = :fabric.update_doc(users_db, doc, [@admin]) + end + :ok + end + + def name(%__MODULE__{name: name}) do + name + end + def password(%__MODULE__{password: pass}) do + pass + end + def credentials(%__MODULE__{name: name, password: pass}) do + {name, pass} + end + +end
\ No newline at end of file diff --git a/test/elixir/lib/utils.ex b/test/elixir/lib/utils.ex new file mode 100644 index 000000000..3ecf878e7 --- /dev/null +++ b/test/elixir/lib/utils.ex @@ -0,0 +1,61 @@ +defmodule Couch.Test.Utils do + require Record + @moduledoc "Helper functions for testing" + @project_root "#{__DIR__}/../../../" + Record.defrecord :user_ctx, Record.extract( + :user_ctx, from: "#{@project_root}/src/couch/include/couch_db.hrl") + + Record.defrecord :doc_info, Record.extract( + :doc_info, from: "#{@project_root}/src/couch/include/couch_db.hrl") + + def random_name(prefix) do + time = :erlang.monotonic_time() + umi = :erlang.unique_integer([:monotonic]) + "#{prefix}-#{time}-#{umi}" + end + + def random_password() do + rand_bytes = :crypto.strong_rand_bytes(16) + rand_bytes + |> :base64.encode() + |> String.slice(0..16) + end + + def db_exists?(db_name) do + try do + :fabric.get_db_info(db_name) + catch + :error, :database_does_not_exist -> false + end + end + + @doc """ + In some cases we need to access record definition at compile time. + We cannot use Record.defrecord in such cases. This helper function + can be used instead. Use it as follows: + ``` + defmodule Foo do + admin_ctx = {:user_ctx, Utils.erlang_record( + :user_ctx, "couch/include/couch_db.hrl", roles: ["_admin"])} + end + ``` + + Longer term we should wrap erlang records as it is done for user_ctx + see beginning of the Utils.ex. In this case we would be able to use + them at compile time in other modules. + ``` + Record.defrecord :user_ctx, Record.extract( + :user_ctx, from_lib: "couch/include/couch_db.hrl") + ``` + """ + def erlang_record(name, from_lib, opts \\ []) do + record_info = Record.extract(name, from_lib: from_lib) + index = [name | Keyword.keys(record_info)] |> Enum.with_index + draft = [name | Keyword.values(record_info)] |> List.to_tuple + opts + |> Enum.reduce(draft, fn + {k, v}, acc -> put_elem(acc, index[k], v) + end) + end + +end
\ No newline at end of file diff --git a/test/elixir/mix.exs b/test/elixir/mix.exs deleted file mode 100644 index f04038ef3..000000000 --- a/test/elixir/mix.exs +++ /dev/null @@ -1,37 +0,0 @@ -defmodule Foo.Mixfile do - use Mix.Project - - def project do - [ - app: :foo, - version: "0.1.0", - elixir: "~> 1.6", - elixirc_paths: elixirc_paths(Mix.env()), - start_permanent: Mix.env() == :prod, - deps: deps() - ] - end - - # Run "mix help compile.app" to learn about applications. - def application do - [ - extra_applications: [:logger] - ] - end - - # Specifies which paths to compile per environment. - defp elixirc_paths(:test), do: ["lib", "test/support"] - defp elixirc_paths(_), do: ["lib"] - - # Run "mix help deps" to learn about dependencies. - defp deps do - [ - # {:dep_from_hexpm, "~> 0.3.0"}, - {:httpotion, "~> 3.0"}, - {:jiffy, "~> 0.15.2"}, - {:credo, "~> 1.0.0", only: [:dev, :test], runtime: false}, - {:junit_formatter, "~> 3.0", only: [:test]} - # {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}, - ] - end -end diff --git a/test/elixir/run b/test/elixir/run deleted file mode 100755 index a9c2efa4d..000000000 --- a/test/elixir/run +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -e -cd "$(dirname "$0")" -mix local.hex --force -mix local.rebar --force -mix deps.get -mix test --trace "$@" diff --git a/test/elixir/test/replication_test.exs b/test/elixir/test/replication_test.exs index e98775fbd..a6e1303e6 100644 --- a/test/elixir/test/replication_test.exs +++ b/test/elixir/test/replication_test.exs @@ -1757,11 +1757,11 @@ defmodule ReplicationTest do end def get_att1_data do - File.read!("test/data/lorem.txt") + File.read!(Path.expand("data/lorem.txt", __DIR__)) end def get_att2_data do - File.read!("test/data/lorem_b64.txt") + File.read!(Path.expand("data/lorem_b64.txt", __DIR__)) end def cmp_json(lhs, rhs) when is_map(lhs) and is_map(rhs) do diff --git a/test/elixir/test/test_helper.exs b/test/elixir/test/test_helper.exs index ef71bbb1b..4bf65bcf6 100644 --- a/test/elixir/test/test_helper.exs +++ b/test/elixir/test/test_helper.exs @@ -2,12 +2,14 @@ # and skip certain tests that fail on jenkins. exclude = case System.get_env("BUILD_NUMBER") !== nil do - true -> [pending: true, skip_on_jenkins: true] - false -> [pending: true] + true -> [:pending, :skip_on_jenkins] + false -> [:pending] end +current_exclude = Keyword.get(ExUnit.configuration(), :exclude, []) + ExUnit.configure( - exclude: exclude, + exclude: Enum.uniq(exclude ++ current_exclude), formatters: [JUnitFormatter, ExUnit.CLIFormatter] ) |