On Thu, Apr 26, 2012 at 17:03, Paul Davis <[email protected]> wrote: > Now we figure out what its trying to write to.
Blind guess: not using X-Couch-Persist: false for something? > > On Thu, Apr 26, 2012 at 4:30 PM, Jan Lehnardt <[email protected]> wrote: >> The problem is that the vpath directory has -w perms. Running >> chmod -R +w apache-couchdb-1.3.0a-eb3d5d8-git and then >> ./test/javascript/run again, it all works. >> >> What now? :) >> >> Cheers >> Jan >> -- >> >> >> On Apr 26, 2012, at 22:55 , Jan Lehnardt wrote: >> >>> >>> 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 >>>>>>>> >>>>>>> >>>>>> >>>> >>> >>
