Return-Path: X-Original-To: apmail-couchdb-dev-archive@www.apache.org Delivered-To: apmail-couchdb-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0D9A5CA94 for ; Fri, 27 Apr 2012 00:32:04 +0000 (UTC) Received: (qmail 94089 invoked by uid 500); 27 Apr 2012 00:32:03 -0000 Delivered-To: apmail-couchdb-dev-archive@couchdb.apache.org Received: (qmail 94051 invoked by uid 500); 27 Apr 2012 00:32:03 -0000 Mailing-List: contact dev-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list dev@couchdb.apache.org Received: (qmail 94042 invoked by uid 99); 27 Apr 2012 00:32:03 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 27 Apr 2012 00:32:03 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of paul.joseph.davis@gmail.com designates 209.85.212.52 as permitted sender) Received: from [209.85.212.52] (HELO mail-vb0-f52.google.com) (209.85.212.52) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 27 Apr 2012 00:31:56 +0000 Received: by vbzb23 with SMTP id b23so216555vbz.11 for ; Thu, 26 Apr 2012 17:31:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type:content-transfer-encoding; bh=FXuGzjLMrf3/ncENbUbZURb2IFPJIw4QIMClc6JyLE0=; b=dVULjNZL2NDAfC8hb6TEtLR5uCzIcUXThVzPySGFHora1Z+P/IwFGEA2B6FGXIQYJS /p7xkgP+Elh4deIFEO1GpVZk7ifI8oF1aaExZVXcshh3gSrq1IJg8jzDj/sAE7ZFAASN U+u1+tO/etnKRNB0hqWRBs4g3MON64PMEKXjZ2v/HYItUo8XRjIcJOV5E3OT7uZRJPgq WKfvYtBvtX8I9IYUgL1B+1NGkuYlboblIQe7f1OPw8YIUz1R2hBnUJBQFMHXEJQtXNUV Zxe7CDjv3ACQy1w8tvfgXvHuLvmDNTm/Rd8zgQG7LWdJvAVLdifYwn0WurtctP1jNvBv Ns6w== Received: by 10.52.73.132 with SMTP id l4mr8010168vdv.4.1335486695384; Thu, 26 Apr 2012 17:31:35 -0700 (PDT) MIME-Version: 1.0 Received: by 10.220.144.67 with HTTP; Thu, 26 Apr 2012 17:30:55 -0700 (PDT) In-Reply-To: References: <20120127013712.8829B319D8A@tyr.zones.apache.org> <8844F652-309F-4A4B-8AC2-2D3D0E7B28E0@apache.org> <6C5FAFB3-7567-4CEA-A542-0DA087878040@apache.org> <32D219FD-788E-4AE7-89B2-8E2AE11858FE@apache.org> From: Paul Davis Date: Thu, 26 Apr 2012 19:30:55 -0500 Message-ID: Subject: Re: [2/7] git commit: COUCHDB-1338 - run js tests with port=0 To: dev@couchdb.apache.org Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Found it: {set,"couch_httpd_auth","secret","81732db8242bbeacb35ce76fe44b554d",true} I'm just gonna make local_dev.ini writable and forget about it. This is just a VPATH build artifact because it forces the local.ini to be read-only. On Thu, Apr 26, 2012 at 7:20 PM, Randall Leeds wr= ote: > On Thu, Apr 26, 2012 at 17:03, Paul Davis w= rote: >> 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 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 i= t. >>>>> >>>>> one more interesting point, if you cd into the distcheck build dir, >>>>> currently apache-couchdb-1.3.0a-eb3d5d8-git/_build after the test fai= ls >>>>> 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 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 t= he "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/_buil= d/../test/javascript/cli_runner.js >>>>>>> =A0 =A0T(false) >>>>>>> 133: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_bui= ld/../share/www/script/test/cookie_auth.js >>>>>>> =A0 =A0() >>>>>>> "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJc= hrisDoc);T(false && "Can't create duplicate user names. Should have thrown = an error.");} catch (e) {T(e.error =3D=3D "conflict");T(usersDb.last_req.st= atus =3D=3D 409);}var underscoreUserDoc =3D 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 =3D=3D "forbidden");T(usersDb.last_req.status =3D=3D 403);}var = badIdDoc =3D CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id =3D = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't cre= ate malformed docids. Should have thrown an error.");} catch (e) {T(e.error= =3D=3D "forbidden");T(usersDb.last_req.status =3D=3D 403);}T(CouchDB.login= ("Jason Davies", password).ok);T(CouchDB.session().userCtx.name =3D=3D "Jas= on Davies");var xhr =3D CouchDB.request("POST", "/_session", {headers: {'Co= ntent-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies= ", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.sess= ion().userCtx.name =3D=3D "Jason Davies");jasonUserDoc.foo =3D 2;T(usersDb.= save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") = =3D=3D -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete o= ther users docs. Should have thrown an error.");} catch (e) {T(e.error =3D= =3D "forbidden");T(usersDb.last_req.status =3D=3D 403);}T(!CouchDB.login("J= ason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d0= 0d").ok);T(CouchDB.session().userCtx.name !=3D "Jason Davies");xhr =3D Couc= hDB.request("POST", "/_session?next=3D/", {headers: {'Content-Type': "appli= cation/x-www-form-urlencoded"}, body: "name=3DJason%20Davies&password=3D" += encodeURIComponent(password)});if (xhr.status =3D=3D 200) {T(/Welcome/.tes= t(xhr.responseText));}xhr =3D CouchDB.request("POST", "/_session?fail=3D/",= {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "na= me=3DJason%20Davies&password=3Dfoobar"});if (xhr.status =3D=3D 200) {T(/Wel= come/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnyb= one").ok);T(CouchDB.session().userCtx.name =3D=3D "jchris@apache.org");T(Co= uchDB.session().userCtx.roles.length =3D=3D 0);jasonUserDoc.foo =3D 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 =3D=3D "forbidden")= ;T(usersDb.last_req.status =3D=3D 403);}jchrisUserDoc.roles =3D ["foo"];try= {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are ad= min. Should have thrown an error.");} catch (e) {T(e.error =3D=3D "forbidde= n");T(usersDb.last_req.status =3D=3D 403);}T(CouchDB.logout().ok);jchrisUse= rDoc.foo =3D ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDo= c.roles =3D ["_bar"];var res =3D save_as(usersDb, jchrisUserDoc, "jan");T(r= es.error =3D=3D "forbidden");T(usersDb.last_req.status =3D=3D 403);T(CouchD= B.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.n= ame =3D=3D "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("= _admin") =3D=3D -1);T(CouchDB.session().userCtx.roles.indexOf("foo") !=3D -= 1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);r= un_on_modified_server([{section: "admins", key: "jchris@apache.org", value:= "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybon= e").ok);T(CouchDB.session().userCtx.name =3D=3D "jchris@apache.org");T(Couc= hDB.session().userCtx.roles.indexOf("_admin") !=3D -1);T(CouchDB.session().= userCtx.roles.indexOf("foo") !=3D -1);jchrisUserDoc =3D usersDb.open(jchris= UserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(= usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jch= ris@apache.org", "funnybone").ok);var s =3D CouchDB.session();T(s.userCtx.n= ame =3D=3D "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") !=3D -1= );T(s.info.authenticated =3D=3D "cookie");T(s.info.authentication_db =3D=3D= "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") !=3D = -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan"= , "apple").ok);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-gi= t/_build/../share/www/script/couch_test_runner.js:380: apache.org"}, "funny= bone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc =3D CouchDB= .prepareUserDoc({name >>>>>>> =A0 =A0run_on_modified_server([object Array],(function () {try {var= ddoc =3D op >>>>>>> 286: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_bui= ld/../share/www/script/test/cookie_auth.js >>>>>>> =A0 =A0() >>>>>>> "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJc= hrisDoc);T(false && "Can't create duplicate user names. Should have thrown = an error.");} catch (e) {T(e.error =3D=3D "conflict");T(usersDb.last_req.st= atus =3D=3D 409);}var underscoreUserDoc =3D 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 =3D=3D "forbidden");T(usersDb.last_req.status =3D=3D 403);}var = badIdDoc =3D CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id =3D = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't cre= ate malformed docids. Should have thrown an error.");} catch (e) {T(e.error= =3D=3D "forbidden");T(usersDb.last_req.status =3D=3D 403);}T(CouchDB.login= ("Jason Davies", password).ok);T(CouchDB.session().userCtx.name =3D=3D "Jas= on Davies");var xhr =3D CouchDB.request("POST", "/_session", {headers: {'Co= ntent-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies= ", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.sess= ion().userCtx.name =3D=3D "Jason Davies");jasonUserDoc.foo =3D 2;T(usersDb.= save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") = =3D=3D -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete o= ther users docs. Should have thrown an error.");} catch (e) {T(e.error =3D= =3D "forbidden");T(usersDb.last_req.status =3D=3D 403);}T(!CouchDB.login("J= ason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d0= 0d").ok);T(CouchDB.session().userCtx.name !=3D "Jason Davies");xhr =3D Couc= hDB.request("POST", "/_session?next=3D/", {headers: {'Content-Type': "appli= cation/x-www-form-urlencoded"}, body: "name=3DJason%20Davies&password=3D" += encodeURIComponent(password)});if (xhr.status =3D=3D 200) {T(/Welcome/.tes= t(xhr.responseText));}xhr =3D CouchDB.request("POST", "/_session?fail=3D/",= {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "na= me=3DJason%20Davies&password=3Dfoobar"});if (xhr.status =3D=3D 200) {T(/Wel= come/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnyb= one").ok);T(CouchDB.session().userCtx.name =3D=3D "jchris@apache.org");T(Co= uchDB.session().userCtx.roles.length =3D=3D 0);jasonUserDoc.foo =3D 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 =3D=3D "forbidden")= ;T(usersDb.last_req.status =3D=3D 403);}jchrisUserDoc.roles =3D ["foo"];try= {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are ad= min. Should have thrown an error.");} catch (e) {T(e.error =3D=3D "forbidde= n");T(usersDb.last_req.status =3D=3D 403);}T(CouchDB.logout().ok);jchrisUse= rDoc.foo =3D ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDo= c.roles =3D ["_bar"];var res =3D save_as(usersDb, jchrisUserDoc, "jan");T(r= es.error =3D=3D "forbidden");T(usersDb.last_req.status =3D=3D 403);T(CouchD= B.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.n= ame =3D=3D "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("= _admin") =3D=3D -1);T(CouchDB.session().userCtx.roles.indexOf("foo") !=3D -= 1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);r= un_on_modified_server([{section: "admins", key: "jchris@apache.org", value:= "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybon= e").ok);T(CouchDB.session().userCtx.name =3D=3D "jchris@apache.org");T(Couc= hDB.session().userCtx.roles.indexOf("_admin") !=3D -1);T(CouchDB.session().= userCtx.roles.indexOf("foo") !=3D -1);jchrisUserDoc =3D usersDb.open(jchris= UserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(= usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jch= ris@apache.org", "funnybone").ok);var s =3D CouchDB.session();T(s.userCtx.n= ame =3D=3D "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") !=3D -1= );T(s.info.authenticated =3D=3D "cookie");T(s.info.authentication_db =3D=3D= "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") !=3D = -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan"= , "apple").ok);};var usersDb =3D new CouchDB("test_suite_users", {'X-Couch-= Full-Commit': "false"});usersDb.deleteDb();usersDb.createDb();run_on_modifi= ed_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);}))@/User= s/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascr= ipt/cli_runner.js:53: apache.org"}, "funnybone");T(usersDb.save(jchrisUserD= oc).ok);var duplicateJchrisDoc =3D CouchDB.prepareUserDoc({name >>>>>>> =A0 =A0var testFun =3D function () {try {var ddoc =3D open_as(users= Db, "_design/_ >>>>>>> 72: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_buil= d/../test/javascript/cli_runner.js >>>>>>> =A0 =A0runAllTestsConsole() >>>>>>> 85: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_buil= d/../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=3D%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) her= e >>>>>>>>>> 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 so= lution >>>>>>>>>> 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 wrote: >>>>>>>>>>> On Tue, Apr 24, 2012 at 08:08, Jan Lehnardt wr= ote: >>>>>>>>>>>> >>>>>>>>>>>> On Apr 24, 2012, at 17:05 , Jan Lehnardt wrote: >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Jan 27, 2012, at 02:37 , randall@apache.org wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> COUCHDB-1338 - run js tests with port=3D0 >>>>>>>>>>>>>> >>>>>>>>>>>>>> When the JS tests POST to /_restart, the server comes back u= p on a >>>>>>>>>>>>>> different port. To work around this, add a getter property f= or 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/commi= t/d20e7926 >>>>>>>>>>>>>> Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/d2= 0e7926 >>>>>>>>>>>>>> Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/d2= 0e7926 >>>>>>>>>>>>>> >>>>>>>>>>>>>> Branch: refs/heads/master >>>>>>>>>>>>>> Commit: d20e792617db738dd5ad0e046ae847cd740f586f >>>>>>>>>>>>>> Parents: 257eb52 >>>>>>>>>>>>>> Author: Randall Leeds >>>>>>>>>>>>>> Authored: Sat Jan 7 14:21:29 2012 -0800 >>>>>>>>>>>>>> Committer: Randall Leeds >>>>>>>>>>>>>> Committed: Thu Jan 26 17:03:10 2012 -0800 >>>>>>>>>>>>>> >>>>>>>>>>>>>> ------------------------------------------------------------= ---------- >>>>>>>>>>>>>> src/couchdb/priv/couch_js/help.h =A0| =A0 =A02 + >>>>>>>>>>>>>> src/couchdb/priv/couch_js/http.c =A0| =A0 60 +++++++++++++++= ++++++++++++++++- >>>>>>>>>>>>>> src/couchdb/priv/couch_js/http.h =A0| =A0 =A03 ++ >>>>>>>>>>>>>> src/couchdb/priv/couch_js/sm170.c | =A0 =A08 ++++ >>>>>>>>>>>>>> src/couchdb/priv/couch_js/sm180.c | =A0 =A08 ++++ >>>>>>>>>>>>>> src/couchdb/priv/couch_js/sm185.c | =A0 =A08 ++++ >>>>>>>>>>>>>> src/couchdb/priv/couch_js/util.c =A0| =A0 =A03 +- >>>>>>>>>>>>>> src/couchdb/priv/couch_js/util.h =A0| =A0 =A02 + >>>>>>>>>>>>>> test/Makefile.am =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0| =A0 = =A01 + >>>>>>>>>>>>>> test/etap/Makefile.am =A0 =A0 =A0 =A0 =A0 =A0 | =A0 =A01 - >>>>>>>>>>>>>> test/etap/random_port.ini =A0 =A0 =A0 =A0 | =A0 19 ---------= - >>>>>>>>>>>>>> test/etap/test_util.erl.in =A0 =A0 =A0 =A0| =A0 =A02 +- >>>>>>>>>>>>>> test/javascript/Makefile.am =A0 =A0 =A0 | =A0 =A01 + >>>>>>>>>>>>>> test/javascript/couch_http.js =A0 =A0 | =A0 =A09 ++--- >>>>>>>>>>>>>> test/javascript/run.tpl =A0 =A0 =A0 =A0 =A0 | =A0 =A09 ++++- >>>>>>>>>>>>>> test/random_port.ini =A0 =A0 =A0 =A0 =A0 =A0 =A0| =A0 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.t= pl >>>>>>>>>>>>>> index 47d2f6e..ac78b50 100644 >>>>>>>>>>>>>> --- a/test/javascript/run.tpl >>>>>>>>>>>>>> +++ b/test/javascript/run.tpl >>>>>>>>>>>>>> @@ -17,6 +17,7 @@ SCRIPT_DIR=3D$SRC_DIR/share/www/script >>>>>>>>>>>>>> JS_TEST_DIR=3D$SRC_DIR/test/javascript >>>>>>>>>>>>>> >>>>>>>>>>>>>> COUCHJS=3D%abs_top_builddir%/src/couchdb/priv/couchjs >>>>>>>>>>>>>> +COUCH_URI_FILE=3D%localstaterundir%/couch.uri >>>>>>>>>>>>>> >>>>>>>>>>>>>> if [ "$#" -eq 0 ]; >>>>>>>>>>>>>> then >>>>>>>>>>>>>> @@ -48,11 +49,15 @@ abort() { >>>>>>>>>>>>>> if [ -z $COUCHDB_NO_START ]; then >>>>>>>>>>>>>> =A0 =A0make dev >>>>>>>>>>>>>> =A0trap 'abort' 0 1 2 3 4 6 8 15 >>>>>>>>>>>>>> - =A0 =A0./utils/run -b -r 1 >>>>>>>>>>>>>> + =A0 =A0./utils/run -b -r 1 -n \ >>>>>>>>>>>>>> + =A0 =A0 =A0 =A0 =A0 =A0-a $SRC_DIR/etc/couchdb/default_dev= .ini \ >>>>>>>>>>>>>> + =A0 =A0 =A0 =A0 =A0 =A0-a $SRC_DIR/test/random_port.ini \ >>>>>>>>>>>>>> + =A0 =A0 =A0 =A0 =A0 =A0-a $SRC_DIR/etc/couchdb/local_dev.i= ni >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Randall, this breaks vpath builds. removing the -n option and= the -n lines makes it work for me. >>>>>>>>>>>> >>>>>>>>>>>> =85 and the -a lines =85 >>>>>>>>>>> >>>>>>>>>>> Hmm. Maybe it should be "$(abs_top_builddir)" instead of SRC_DI= R? >>>>>>>>>>> The -a ...random_port.ini is the crucial one, because that's th= e point >>>>>>>>>>> of the patch. I can't remember at this moment why I needed to s= pecify >>>>>>>>>>> exactly all the configs and use the -n to reset the config chai= n, but >>>>>>>>>>> I'm sure there was a reason (like random_port.ini not getting >>>>>>>>>>> preference over default_dev.ini or something). >>>>>>>>>>> >>>>>>>>>>> -R >>>>>>>>> >>>>>>>> >>>>>>> >>>>> >>>> >>>