On Apr 26, 2012, at 22:26 , Jan Lehnardt wrote: > > On Apr 26, 2012, at 19:38 , Paul Davis wrote: > >> Reproduces for me. Also looks related to the vpath build because it >> only reproduces in distcheck and runs fine otherwise. Looking into it. > > one more interesting point, if you cd into the distcheck build dir, > currently apache-couchdb-1.3.0a-eb3d5d8-git/_build after the test fails > and then run ./test/javascript/run it all succeeds as well. > > Maybe we are digging in the wrong place?
This however reproduces the failure: > ./apache-couchdb-1.3.0a-eb3d5d8-git/_build/test/javascript/run cookie_auth *keeps digging* > > >> On Thu, Apr 26, 2012 at 6:56 AM, Jan Lehnardt <[email protected]> wrote: >>> 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 >>>>> >>>> >>> >
