diff options
author | Jan Lehnardt <jan@apache.org> | 2018-07-14 18:20:39 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-14 18:20:39 +0200 |
commit | c4f215f56a34bb70bdbd48654882286e1291888a (patch) | |
tree | 96dc39cd2c85c2090dc2a8faf5dfa7ee0870df7f | |
parent | 2bc35403ecf4310c9331ae5bdc108bed53eb1a6d (diff) | |
parent | dacb6583bc5b08c0c2ae2099a787c60eb0a33da8 (diff) | |
download | couchdb-feat/port-setup-prs.tar.gz |
Merge branch 'master' into feat/port-setup-prsfeat/port-setup-prs
-rw-r--r-- | Makefile | 10 | ||||
-rw-r--r-- | rebar.config.script | 4 | ||||
-rw-r--r-- | src/chttpd/src/chttpd_misc.erl | 10 | ||||
-rw-r--r-- | src/couch/src/couch_httpd_misc_handlers.erl | 2 | ||||
-rw-r--r-- | src/couch/src/couch_util.erl | 40 | ||||
-rw-r--r-- | src/couch/test/couchdb_attachments_tests.erl | 6 | ||||
-rw-r--r-- | src/mango/src/mango_error.erl | 4 | ||||
-rw-r--r-- | test/javascript/tests/users_db.js | 7 |
8 files changed, 64 insertions, 19 deletions
@@ -17,7 +17,11 @@ IN_RELEASE = $(shell if [ ! -d .git ]; then echo true; fi) ifeq ($(IN_RELEASE), true) COUCHDB_VERSION = $(vsn_major).$(vsn_minor).$(vsn_patch) else -RELTAG = $(shell git describe | grep -E '^[0-9]+\.[0-9]\.[0-9]+(-RC[0-9]+)?$$') +# IN_RC generates a tarball that has the -RCx suffix in the name if needed +IN_RC = $(shell git describe --tags --always --first-parent \ + | grep -Eo -- '-RC[0-9]+' 2>/dev/null) +RELTAG = $(shell git describe --dirty --abbrev=0 --tags --always --first-parent \ + | grep -Eo '^[0-9]+\.[0-9]\.[0-9]+') ifeq ($(RELTAG),) COUCHDB_VERSION_SUFFIX = $(shell git rev-parse --short --verify HEAD) COUCHDB_VERSION = $(vsn_major).$(vsn_minor).$(vsn_patch)-$(COUCHDB_VERSION_SUFFIX) @@ -292,8 +296,8 @@ dist: all @mkdir -p apache-couchdb-$(COUCHDB_VERSION)/share/docs/man @cp src/docs/build/man/apachecouchdb.1 apache-couchdb-$(COUCHDB_VERSION)/share/docs/man/ - @tar czf apache-couchdb-$(COUCHDB_VERSION).tar.gz apache-couchdb-$(COUCHDB_VERSION) - @echo "Done: apache-couchdb-$(COUCHDB_VERSION).tar.gz" + @tar czf apache-couchdb-$(COUCHDB_VERSION)$(IN_RC).tar.gz apache-couchdb-$(COUCHDB_VERSION) + @echo "Done: apache-couchdb-$(COUCHDB_VERSION)$(IN_RC).tar.gz" .PHONY: release diff --git a/rebar.config.script b/rebar.config.script index 36c4f0a2f..14117527c 100644 --- a/rebar.config.script +++ b/rebar.config.script @@ -47,7 +47,7 @@ SubDirs = [ DepDescs = [ %% Independent Apps -{config, "config", {tag, "1.0.3"}}, +{config, "config", {tag, "1.0.4"}}, {b64url, "b64url", {tag, "1.0.1"}}, {ets_lru, "ets-lru", {tag, "1.0.0"}}, {khash, "khash", {tag, "1.0.1"}}, @@ -56,7 +56,7 @@ DepDescs = [ %% Non-Erlang deps {docs, {url, "https://github.com/apache/couchdb-documentation"}, - {tag, "2.1.0"}, [raw]}, + {tag, "2.1.2"}, [raw]}, {fauxton, {url, "https://github.com/apache/couchdb-fauxton"}, {tag, "v1.1.15"}, [raw]}, %% Third party deps diff --git a/src/chttpd/src/chttpd_misc.erl b/src/chttpd/src/chttpd_misc.erl index 253da233e..95345d42b 100644 --- a/src/chttpd/src/chttpd_misc.erl +++ b/src/chttpd/src/chttpd_misc.erl @@ -293,11 +293,15 @@ handle_node_req(#httpd{path_parts=[_, _Node, <<"_config">>, _Section]}=Req) -> % "value" handle_node_req(#httpd{method='PUT', path_parts=[_, Node, <<"_config">>, Section, Key]}=Req) -> couch_util:check_config_blacklist(Section), - Value = chttpd:json_body(Req), + Value = couch_util:trim(chttpd:json_body(Req)), Persist = chttpd:header_value(Req, "X-Couch-Persist") /= "false", OldValue = call_node(Node, config, get, [Section, Key, ""]), - ok = call_node(Node, config, set, [Section, Key, ?b2l(Value), Persist]), - send_json(Req, 200, list_to_binary(OldValue)); + case call_node(Node, config, set, [Section, Key, ?b2l(Value), Persist]) of + ok -> + send_json(Req, 200, list_to_binary(OldValue)); + {error, Reason} -> + chttpd:send_error(Req, {bad_request, Reason}) + end; % GET /_node/$node/_config/Section/Key handle_node_req(#httpd{method='GET', path_parts=[_, Node, <<"_config">>, Section, Key]}=Req) -> case call_node(Node, config, get, [Section, Key, undefined]) of diff --git a/src/couch/src/couch_httpd_misc_handlers.erl b/src/couch/src/couch_httpd_misc_handlers.erl index e2fc9f2fc..0c70bcb8a 100644 --- a/src/couch/src/couch_httpd_misc_handlers.erl +++ b/src/couch/src/couch_httpd_misc_handlers.erl @@ -262,7 +262,7 @@ handle_approved_config_req(#httpd{method='PUT', path_parts=[_, Section, Key]}=Re <<"admins">> -> couch_passwords:hash_admin_password(RawValue); _ -> - RawValue + couch_util:trim(RawValue) end end, OldValue = config:get(Section, Key, ""), diff --git a/src/couch/src/couch_util.erl b/src/couch/src/couch_util.erl index af1c0ef87..936b562e1 100644 --- a/src/couch/src/couch_util.erl +++ b/src/couch/src/couch_util.erl @@ -302,15 +302,45 @@ separate_cmd_args(" " ++ Rest, CmdAcc) -> separate_cmd_args([Char|Rest], CmdAcc) -> separate_cmd_args(Rest, [Char | CmdAcc]). -% Is a character whitespace? -is_whitespace($\s) -> true; -is_whitespace($\t) -> true; -is_whitespace($\n) -> true; -is_whitespace($\r) -> true; +% Is a character whitespace (from https://en.wikipedia.org/wiki/Whitespace_character#Unicode)? +is_whitespace(9) -> true; +is_whitespace(10) -> true; +is_whitespace(11) -> true; +is_whitespace(12) -> true; +is_whitespace(13) -> true; +is_whitespace(32) -> true; +is_whitespace(133) -> true; +is_whitespace(160) -> true; +is_whitespace(5760) -> true; +is_whitespace(8192) -> true; +is_whitespace(8193) -> true; +is_whitespace(8194) -> true; +is_whitespace(8195) -> true; +is_whitespace(8196) -> true; +is_whitespace(8197) -> true; +is_whitespace(8198) -> true; +is_whitespace(8199) -> true; +is_whitespace(8200) -> true; +is_whitespace(8201) -> true; +is_whitespace(8202) -> true; +is_whitespace(8232) -> true; +is_whitespace(8233) -> true; +is_whitespace(8239) -> true; +is_whitespace(8287) -> true; +is_whitespace(12288) -> true; +is_whitespace(6158) -> true; +is_whitespace(8203) -> true; +is_whitespace(8204) -> true; +is_whitespace(8205) -> true; +is_whitespace(8288) -> true; +is_whitespace(65279) -> true; is_whitespace(_Else) -> false. % removes leading and trailing whitespace from a string +trim(String) when is_binary(String) -> + % mirror string:trim() behaviour of returning a binary when a binary is passed in + ?l2b(trim(?b2l(String))); trim(String) -> String2 = lists:dropwhile(fun is_whitespace/1, String), lists:reverse(lists:dropwhile(fun is_whitespace/1, lists:reverse(String2))). diff --git a/src/couch/test/couchdb_attachments_tests.erl b/src/couch/test/couchdb_attachments_tests.erl index d9efac551..a85a01f48 100644 --- a/src/couch/test/couchdb_attachments_tests.erl +++ b/src/couch/test/couchdb_attachments_tests.erl @@ -21,9 +21,9 @@ -define(ATT_TXT_NAME, <<"file.erl">>). -define(FIXTURE_PNG, filename:join([?FIXTURESDIR, "logo.png"])). -define(FIXTURE_TXT, ?ABS_PATH(?FILE)). --define(TIMEOUT, 1000). --define(TIMEOUT_EUNIT, 10). --define(TIMEWAIT, 100). +-define(TIMEOUT, 5000). +-define(TIMEOUT_EUNIT, 100). +-define(TIMEWAIT, 1000). -define(i2l(I), integer_to_list(I)). diff --git a/src/mango/src/mango_error.erl b/src/mango/src/mango_error.erl index ad665e2f3..b2bbb392a 100644 --- a/src/mango/src/mango_error.erl +++ b/src/mango/src/mango_error.erl @@ -308,7 +308,7 @@ info(mango_sort, {invalid_sort_json, BadSort}) -> { 400, <<"invalid_sort_json">>, - fmt("Sort must be an array of sort specs, not: ~w", [BadSort]) + fmt("Sort must be an array of sort specs, not: ~p", [BadSort]) }; info(mango_sort, {invalid_sort_dir, BadSpec}) -> { @@ -320,7 +320,7 @@ info(mango_sort, {invalid_sort_field, BadField}) -> { 400, <<"invalid_sort_field">>, - fmt("Invalid sort field: ~w", [BadField]) + fmt("Invalid sort field: ~p", [BadField]) }; info(mango_sort, {unsupported, mixed_sort}) -> { diff --git a/test/javascript/tests/users_db.js b/test/javascript/tests/users_db.js index 34a7bad68..20be325ca 100644 --- a/test/javascript/tests/users_db.js +++ b/test/javascript/tests/users_db.js @@ -205,6 +205,13 @@ couchTests.users_db = function(debug) { } finally { CouchDB.login("jan", "apple"); usersDb.deleteDb(); // cleanup + waitForSuccess(function() { + var req = CouchDB.request("GET", usersDb.name); + if (req.status == 404) { + return true + } + throw({}); + }, "usersdb.deleteDb") usersDb.createDb(); usersDbAlt.deleteDb(); // cleanup } |