Port 081-config-override.t etap test suite to eunit Merged into couch_config_tests suite. Setup fixtures.
Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch/repo Commit: http://git-wip-us.apache.org/repos/asf/couchdb-couch/commit/80765e0a Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch/tree/80765e0a Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch/diff/80765e0a Branch: refs/heads/1963-eunit-bigcouch Commit: 80765e0aa453a472fc71e93acf5f17bf3d4c7956 Parents: 2ac7373 Author: Alexander Shorin <[email protected]> Authored: Sun May 25 22:02:19 2014 +0400 Committer: Russell Branca <[email protected]> Committed: Mon Aug 11 13:09:20 2014 -0700 ---------------------------------------------------------------------- test/couchdb/couch_config_tests.erl | 130 +++++++++++++++++++- test/couchdb/fixtures/couch_config_tests_1.ini | 22 ++++ test/couchdb/fixtures/couch_config_tests_2.ini | 22 ++++ 3 files changed, 168 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/80765e0a/test/couchdb/couch_config_tests.erl ---------------------------------------------------------------------- diff --git a/test/couchdb/couch_config_tests.erl b/test/couchdb/couch_config_tests.erl index ecff590..4bdc333 100644 --- a/test/couchdb/couch_config_tests.erl +++ b/test/couchdb/couch_config_tests.erl @@ -17,9 +17,30 @@ -define(TIMEOUT, 1000). +-define(CONFIG_DEFAULT, + filename:join([?BUILDDIR, "etc", "couchdb", "default_dev.ini"])). +-define(CONFIG_FIXTURE_1, + filename:join([?FIXTURESDIR, "couch_config_tests_1.ini"])). +-define(CONFIG_FIXTURE_2, + filename:join([?FIXTURESDIR, "couch_config_tests_2.ini"])). +-define(CONFIG_FIXTURE_TEMP, + begin + FileName = filename:join([?TEMPDIR, "couch_config_temp.ini"]), + {ok, Fd} = file:open(FileName, write), + ok = file:truncate(Fd), + ok = file:close(Fd), + FileName + end). + setup() -> - {ok, Pid} = couch_config:start_link(?CONFIG_CHAIN), + setup(?CONFIG_CHAIN). +setup({temporary, Chain}) -> + setup(Chain); +setup({persistent, Chain}) -> + setup(lists:append(Chain, [?CONFIG_FIXTURE_TEMP])); +setup(Chain) -> + {ok, Pid} = couch_config:start_link(Chain), Pid. teardown(Pid) -> @@ -31,6 +52,8 @@ teardown(Pid) -> after ?TIMEOUT -> throw({timeout_error, config_stop}) end. +teardown(_, Pid) -> + teardown(Pid). couch_config_test_() -> @@ -39,7 +62,9 @@ couch_config_test_() -> [ couch_config_get_tests(), couch_config_set_tests(), - couch_config_del_tests() + couch_config_del_tests(), + config_override_tests(), + config_persistent_changes_tests() ] }. @@ -90,6 +115,43 @@ couch_config_del_tests() -> } }. +config_override_tests() -> + { + "Configs overide tests", + { + foreachx, + fun setup/1, fun teardown/2, + [ + {{temporary, [?CONFIG_DEFAULT]}, + fun should_ensure_in_defaults/2}, + {{temporary, [?CONFIG_DEFAULT, ?CONFIG_FIXTURE_1]}, + fun should_override_options/2}, + {{temporary, [?CONFIG_DEFAULT, ?CONFIG_FIXTURE_2]}, + fun should_create_new_sections_on_override/2}, + {{temporary, [?CONFIG_DEFAULT, ?CONFIG_FIXTURE_1, + ?CONFIG_FIXTURE_2]}, + fun should_win_last_in_chain/2} + ] + } + }. + +config_persistent_changes_tests() -> + { + "Config persistent changes", + { + foreachx, + fun setup/1, fun teardown/2, + [ + {{persistent, [?CONFIG_DEFAULT]}, + fun should_write_changes/2}, + {{temporary, [?CONFIG_DEFAULT]}, + fun should_ensure_that_default_wasnt_modified/2}, + {{temporary, [?CONFIG_FIXTURE_TEMP]}, + fun should_ensure_that_written_to_last_config_in_chain/2} + ] + } + }. + should_load_all_configs() -> ?_assert(length(couch_config:all()) > 0). @@ -151,10 +213,7 @@ should_return_undefined_atom_after_option_deletion() -> end). should_be_ok_on_deleting_unknown_options() -> - ?_assertEqual(ok, - begin - couch_config:delete("zoo", "boo", false) - end). + ?_assertEqual(ok, couch_config:delete("zoo", "boo", false)). should_delete_binary_option() -> ?_assertEqual(undefined, @@ -163,3 +222,62 @@ should_delete_binary_option() -> ok = couch_config:delete(<<"foo">>, <<"bar">>, false), couch_config:get(<<"foo">>, <<"bar">>) end). + +should_ensure_in_defaults(_, _) -> + ?_test(begin + ?assertEqual("100", + couch_config:get("couchdb", "max_dbs_open")), + ?assertEqual("5984", + couch_config:get("httpd", "port")), + ?assertEqual(undefined, + couch_config:get("fizbang", "unicode")) + end). + +should_override_options(_, _) -> + ?_test(begin + ?assertEqual("10", + couch_config:get("couchdb", "max_dbs_open")), + ?assertEqual("4895", + couch_config:get("httpd", "port")) + end). + +should_create_new_sections_on_override(_, _) -> + ?_test(begin + ?assertEqual("80", + couch_config:get("httpd", "port")), + ?assertEqual("normalized", + couch_config:get("fizbang", "unicode")) + end). + +should_win_last_in_chain(_, _) -> + ?_assertEqual("80", couch_config:get("httpd", "port")). + +should_write_changes(_, _) -> + ?_test(begin + ?assertEqual("5984", + couch_config:get("httpd", "port")), + ?assertEqual(ok, + couch_config:set("httpd", "port", "8080")), + ?assertEqual("8080", + couch_config:get("httpd", "port")), + ?assertEqual(ok, + couch_config:delete("httpd", "bind_address", "8080")), + ?assertEqual(undefined, + couch_config:get("httpd", "bind_address")) + end). + +should_ensure_that_default_wasnt_modified(_, _) -> + ?_test(begin + ?assertEqual("5984", + couch_config:get("httpd", "port")), + ?assertEqual("127.0.0.1", + couch_config:get("httpd", "bind_address")) + end). + +should_ensure_that_written_to_last_config_in_chain(_, _) -> + ?_test(begin + ?assertEqual("8080", + couch_config:get("httpd", "port")), + ?assertEqual(undefined, + couch_config:get("httpd", "bind_address")) + end). http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/80765e0a/test/couchdb/fixtures/couch_config_tests_1.ini ---------------------------------------------------------------------- diff --git a/test/couchdb/fixtures/couch_config_tests_1.ini b/test/couchdb/fixtures/couch_config_tests_1.ini new file mode 100644 index 0000000..55451da --- /dev/null +++ b/test/couchdb/fixtures/couch_config_tests_1.ini @@ -0,0 +1,22 @@ +; Licensed to the Apache Software Foundation (ASF) under one +; or more contributor license agreements. See the NOTICE file +; distributed with this work for additional information +; regarding copyright ownership. The ASF licenses this file +; to you under the Apache License, Version 2.0 (the +; "License"); you may not use this file except in compliance +; with the License. You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, +; software distributed under the License is distributed on an +; "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +; KIND, either express or implied. See the License for the +; specific language governing permissions and limitations +; under the License. + +[couchdb] +max_dbs_open=10 + +[httpd] +port=4895 http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/80765e0a/test/couchdb/fixtures/couch_config_tests_2.ini ---------------------------------------------------------------------- diff --git a/test/couchdb/fixtures/couch_config_tests_2.ini b/test/couchdb/fixtures/couch_config_tests_2.ini new file mode 100644 index 0000000..5f46357 --- /dev/null +++ b/test/couchdb/fixtures/couch_config_tests_2.ini @@ -0,0 +1,22 @@ +; Licensed to the Apache Software Foundation (ASF) under one +; or more contributor license agreements. See the NOTICE file +; distributed with this work for additional information +; regarding copyright ownership. The ASF licenses this file +; to you under the Apache License, Version 2.0 (the +; "License"); you may not use this file except in compliance +; with the License. You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, +; software distributed under the License is distributed on an +; "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +; KIND, either express or implied. See the License for the +; specific language governing permissions and limitations +; under the License. + +[httpd] +port = 80 + +[fizbang] +unicode = normalized
