Actually, no.
I can now repeatedly get make distcheck to fail at
not ok 18 cookie_auth
on two different machines. I don't know if this was introduced in the "fixing"
commit or one of Paul's others.
Full log:
not ok 18 cookie_auth
Reason: false
Trace back (most recent call first):
46:
/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
T(false)
133:
/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
()
"[email protected]"}, "eh, Boo-Boo?");try
{usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user
names. Should have thrown an error.");} catch (e) {T(e.error ==
"conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc =
CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try
{usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user
names. Should have thrown an error.");} catch (e) {T(e.error ==
"forbidden");T(usersDb.last_req.status == 403);}var badIdDoc =
CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id =
"org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create
malformed docids. Should have thrown an error.");} catch (e) {T(e.error ==
"forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies",
password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr =
CouchDB.request("POST", "/_session", {headers: {'Content-Type':
"application/json"}, body: JSON.stringify({name: "Jason Davies", password:
password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name
== "Jason Davies");jasonUserDoc.foo =
2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin")
== -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other
users docs. Should have thrown an error.");} catch (e) {T(e.error ==
"forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason
Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman",
"d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr =
CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type':
"application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" +
encodeURIComponent(password)});if (xhr.status == 200)
{T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST",
"/_session?fail=/", {headers: {'Content-Type':
"application/x-www-form-urlencoded"}, body:
"name=Jason%20Davies&password=foobar"});if (xhr.status == 200)
{T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("[email protected]",
"funnybone").ok);T(CouchDB.session().userCtx.name ==
"[email protected]");T(CouchDB.session().userCtx.roles.length ==
0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't
update someone else's user doc. Should have thrown an error.");} catch (e)
{T(e.error == "forbidden");T(usersDb.last_req.status ==
403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false &&
"Can't set roles unless you are admin. Should have thrown an error.");} catch
(e) {T(e.error == "forbidden");T(usersDb.last_req.status ==
403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb,
jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res =
save_as(usersDb, jchrisUserDoc, "jan");T(res.error ==
"forbidden");T(usersDb.last_req.status ==
403);T(CouchDB.login("[email protected]",
"funnybone").ok);T(CouchDB.session().userCtx.name ==
"[email protected]");T(CouchDB.session().userCtx.roles.indexOf("_admin") ==
-1);T(CouchDB.session().userCtx.roles.indexOf("foo") !=
-1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan",
"apple").ok);run_on_modified_server([{section: "admins", key:
"[email protected]", value: "funnybone"}], function ()
{T(CouchDB.login("[email protected]",
"funnybone").ok);T(CouchDB.session().userCtx.name ==
"[email protected]");T(CouchDB.session().userCtx.roles.indexOf("_admin") !=
-1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc =
usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete
jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("[email protected]",
"funnybone").ok);var s = CouchDB.session();T(s.userCtx.name ==
"[email protected]");T(s.userCtx.roles.indexOf("_admin") !=
-1);T(s.info.authenticated == "cookie");T(s.info.authentication_db ==
"test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") !=
-1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan",
"apple").ok);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/couch_test_runner.js:380:
apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var
duplicateJchrisDoc = CouchDB.prepareUserDoc({name
run_on_modified_server([object Array],(function () {try {var ddoc = op
286:
/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
()
"[email protected]"}, "eh, Boo-Boo?");try
{usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user
names. Should have thrown an error.");} catch (e) {T(e.error ==
"conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc =
CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try
{usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user
names. Should have thrown an error.");} catch (e) {T(e.error ==
"forbidden");T(usersDb.last_req.status == 403);}var badIdDoc =
CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id =
"org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create
malformed docids. Should have thrown an error.");} catch (e) {T(e.error ==
"forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies",
password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr =
CouchDB.request("POST", "/_session", {headers: {'Content-Type':
"application/json"}, body: JSON.stringify({name: "Jason Davies", password:
password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name
== "Jason Davies");jasonUserDoc.foo =
2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin")
== -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other
users docs. Should have thrown an error.");} catch (e) {T(e.error ==
"forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason
Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman",
"d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr =
CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type':
"application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" +
encodeURIComponent(password)});if (xhr.status == 200)
{T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST",
"/_session?fail=/", {headers: {'Content-Type':
"application/x-www-form-urlencoded"}, body:
"name=Jason%20Davies&password=foobar"});if (xhr.status == 200)
{T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("[email protected]",
"funnybone").ok);T(CouchDB.session().userCtx.name ==
"[email protected]");T(CouchDB.session().userCtx.roles.length ==
0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't
update someone else's user doc. Should have thrown an error.");} catch (e)
{T(e.error == "forbidden");T(usersDb.last_req.status ==
403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false &&
"Can't set roles unless you are admin. Should have thrown an error.");} catch
(e) {T(e.error == "forbidden");T(usersDb.last_req.status ==
403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb,
jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res =
save_as(usersDb, jchrisUserDoc, "jan");T(res.error ==
"forbidden");T(usersDb.last_req.status ==
403);T(CouchDB.login("[email protected]",
"funnybone").ok);T(CouchDB.session().userCtx.name ==
"[email protected]");T(CouchDB.session().userCtx.roles.indexOf("_admin") ==
-1);T(CouchDB.session().userCtx.roles.indexOf("foo") !=
-1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan",
"apple").ok);run_on_modified_server([{section: "admins", key:
"[email protected]", value: "funnybone"}], function ()
{T(CouchDB.login("[email protected]",
"funnybone").ok);T(CouchDB.session().userCtx.name ==
"[email protected]");T(CouchDB.session().userCtx.roles.indexOf("_admin") !=
-1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc =
usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete
jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("[email protected]",
"funnybone").ok);var s = CouchDB.session();T(s.userCtx.name ==
"[email protected]");T(s.userCtx.roles.indexOf("_admin") !=
-1);T(s.info.authenticated == "cookie");T(s.info.authentication_db ==
"test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") !=
-1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan",
"apple").ok);};var usersDb = new CouchDB("test_suite_users",
{'X-Couch-Full-Commit':
"false"});usersDb.deleteDb();usersDb.createDb();run_on_modified_server([{section:
"couch_httpd_auth", key: "authentication_db", value: "test_suite_users"},
{section: "couch_httpd_auth", key: "iterations", value: "1"}, {section:
"admins", key: "jan", value: "apple"}],
testFun);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js:53:
apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var
duplicateJchrisDoc = CouchDB.prepareUserDoc({name
var testFun = function () {try {var ddoc = open_as(usersDb, "_design/_
72:
/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
runAllTestsConsole()
85:
/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
On Apr 26, 2012, at 13:27 , Jan Lehnardt wrote:
> Paul fixed this in
> http://git-wip-us.apache.org/repos/asf/couchdb/commit/02503102
>
> Cheers!
>
> On Apr 24, 2012, at 20:39 , Jan Lehnardt wrote:
>
>> Thanks for the replies!
>>
>> ./test/javascript/run.tpl, line 15:
>>
>> SRC_DIR=%abs_top_srcdir%
>>
>> What now? :)
>>
>> Jan
>> --
>>
>>
>> On Apr 24, 2012, at 20:25 , Paul Davis wrote:
>>
>>> Yeah. We'll need an $(abs_top_srcdir) or $(abs_top_builddir) here
>>> depending on how they're used. It can be a bit of a PITA if one of
>>> those needs to support write backs by one of the tests. Basic solution
>>> is to name them foo.ini.tpl and then "build" foo.ini and use
>>> $(abs_top_builddir) in that case. Where by "build" I mean `cp $< $@`
>>> or so.
>>>
>>> On Tue, Apr 24, 2012 at 12:04 PM, Randall Leeds <[email protected]> wrote:
>>>> On Tue, Apr 24, 2012 at 08:08, Jan Lehnardt <[email protected]> wrote:
>>>>>
>>>>> On Apr 24, 2012, at 17:05 , Jan Lehnardt wrote:
>>>>>
>>>>>>
>>>>>> On Jan 27, 2012, at 02:37 , [email protected] wrote:
>>>>>>
>>>>>>> COUCHDB-1338 - run js tests with port=0
>>>>>>>
>>>>>>> When the JS tests POST to /_restart, the server comes back up on a
>>>>>>> different port. To work around this, add a getter property for the
>>>>>>> CouchHTTP.prototype.base_url property, using a reserved slot on the
>>>>>>> object to store the value.
>>>>>>>
>>>>>>>
>>>>>>> Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
>>>>>>> Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/d20e7926
>>>>>>> Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/d20e7926
>>>>>>> Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/d20e7926
>>>>>>>
>>>>>>> Branch: refs/heads/master
>>>>>>> Commit: d20e792617db738dd5ad0e046ae847cd740f586f
>>>>>>> Parents: 257eb52
>>>>>>> Author: Randall Leeds <[email protected]>
>>>>>>> Authored: Sat Jan 7 14:21:29 2012 -0800
>>>>>>> Committer: Randall Leeds <[email protected]>
>>>>>>> Committed: Thu Jan 26 17:03:10 2012 -0800
>>>>>>>
>>>>>>> ----------------------------------------------------------------------
>>>>>>> src/couchdb/priv/couch_js/help.h | 2 +
>>>>>>> src/couchdb/priv/couch_js/http.c | 60
>>>>>>> +++++++++++++++++++++++++++++++-
>>>>>>> src/couchdb/priv/couch_js/http.h | 3 ++
>>>>>>> src/couchdb/priv/couch_js/sm170.c | 8 ++++
>>>>>>> src/couchdb/priv/couch_js/sm180.c | 8 ++++
>>>>>>> src/couchdb/priv/couch_js/sm185.c | 8 ++++
>>>>>>> src/couchdb/priv/couch_js/util.c | 3 +-
>>>>>>> src/couchdb/priv/couch_js/util.h | 2 +
>>>>>>> test/Makefile.am | 1 +
>>>>>>> test/etap/Makefile.am | 1 -
>>>>>>> test/etap/random_port.ini | 19 ----------
>>>>>>> test/etap/test_util.erl.in | 2 +-
>>>>>>> test/javascript/Makefile.am | 1 +
>>>>>>> test/javascript/couch_http.js | 9 ++---
>>>>>>> test/javascript/run.tpl | 9 ++++-
>>>>>>> test/random_port.ini | 19 ++++++++++
>>>>>>> 16 files changed, 125 insertions(+), 30 deletions(-)
>>>>>>> ----------------------------------------------------------------------
>>>>>>>
>>>>>>>
>>>>>>> [...]
>>>>>>> http://git-wip-us.apache.org/repos/asf/couchdb/blob/d20e7926/test/javascript/run.tpl
>>>>>>> ----------------------------------------------------------------------
>>>>>>> diff --git a/test/javascript/run.tpl b/test/javascript/run.tpl
>>>>>>> index 47d2f6e..ac78b50 100644
>>>>>>> --- a/test/javascript/run.tpl
>>>>>>> +++ b/test/javascript/run.tpl
>>>>>>> @@ -17,6 +17,7 @@ SCRIPT_DIR=$SRC_DIR/share/www/script
>>>>>>> JS_TEST_DIR=$SRC_DIR/test/javascript
>>>>>>>
>>>>>>> COUCHJS=%abs_top_builddir%/src/couchdb/priv/couchjs
>>>>>>> +COUCH_URI_FILE=%localstaterundir%/couch.uri
>>>>>>>
>>>>>>> if [ "$#" -eq 0 ];
>>>>>>> then
>>>>>>> @@ -48,11 +49,15 @@ abort() {
>>>>>>> if [ -z $COUCHDB_NO_START ]; then
>>>>>>> make dev
>>>>>>> trap 'abort' 0 1 2 3 4 6 8 15
>>>>>>> - ./utils/run -b -r 1
>>>>>>> + ./utils/run -b -r 1 -n \
>>>>>>> + -a $SRC_DIR/etc/couchdb/default_dev.ini \
>>>>>>> + -a $SRC_DIR/test/random_port.ini \
>>>>>>> + -a $SRC_DIR/etc/couchdb/local_dev.ini
>>>>>>
>>>>>>
>>>>>> Randall, this breaks vpath builds. removing the -n option and the -n
>>>>>> lines makes it work for me.
>>>>>
>>>>> … and the -a lines …
>>>>
>>>> Hmm. Maybe it should be "$(abs_top_builddir)" instead of SRC_DIR?
>>>> The -a ...random_port.ini is the crucial one, because that's the point
>>>> of the patch. I can't remember at this moment why I needed to specify
>>>> exactly all the configs and use the -n to reset the config chain, but
>>>> I'm sure there was a reason (like random_port.ini not getting
>>>> preference over default_dev.ini or something).
>>>>
>>>> -R
>>
>