Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1inI3p-0005wX-Gg for pgadmin-hackers@arkaria.postgresql.org; Fri, 03 Jan 2020 08:11:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1inI3o-0001db-BQ for pgadmin-hackers@arkaria.postgresql.org; Fri, 03 Jan 2020 08:11:56 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1inHsm-00074m-C4 for pgadmin-hackers@lists.postgresql.org; Fri, 03 Jan 2020 08:00:32 +0000 Received: from mail-ot1-x32e.google.com ([2607:f8b0:4864:20::32e]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1inHsk-0002er-0x for pgadmin-hackers@postgresql.org; Fri, 03 Jan 2020 08:00:31 +0000 Received: by mail-ot1-x32e.google.com with SMTP id b18so38351582otp.0 for ; Fri, 03 Jan 2020 00:00:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=Vvn7wq2GbvrIeZQIZ+/TKiGPJwKaZ3jlLsNhwglcrkQ=; b=ciFhZxyt/FuWsuLmH+Pf+E42icpM1YkKl/a9fU6wGBllLZYhCFudovRWuH++Jiz96y 1Xm2cYlzpZdUD1hY1qea7G2g9imLMD7cXHdeaYzK2qCizEkV1Y0D9xnpyJgEsAVpO/TK aYS94JMD0FxFEQ3JkuNhA4YnqL0cEvvAeqLZqQt9AqP6+rktiiFOEuBxu9iVlC+47FOC D1zku8JB7t2KRuHC1EQth5XT5f7w/6rJKyZNIlsT7oZaQurPcHbvrgpHAzQJbotQ/5HA GxYt9jMhlny5KB9ZVKAyj2vpw/qalWMcVyUeDuHx/Yevbf7C55ER/RjwRkol/sjgzAGf 03bA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=Vvn7wq2GbvrIeZQIZ+/TKiGPJwKaZ3jlLsNhwglcrkQ=; b=bvaiMjT/sVXV45EpA2n8p5jHMbSl5JAISqx4jhFf3rHd7yv6KA5PExy8gp7WezduaW X3BZu6Qs8LTiC3TRqU4s/bD427B/NO7SkW6ObStivyAdPh58z4PNu9y/UJsGNCuu2sWy Jfmp0qKJTN9LvQJg1SffsJb8mGhuhCZZaL3F8yelnf9Om5+YOQm6NwO5faPvuFMjpIXn tqpBA+1H1OoBwyt6VlN0yUY08V45/h+7YiweAHVNmdY3G1tKGcPL4up5tp+4usKOW9iM HROZiu0UoSjeqGXC5GqCywmB2d31iAB+0oTxXrq/JpyOYF2YHqFpyQIu9ELcQb0DxOgC W1QA== X-Gm-Message-State: APjAAAULfa32HZOJ8ibyycKr/9es6ThcCy2828MLYJ6K6KX9LCTeWmeO 9sVnU9keYaogsCeyZxAbs+WCAJa9yqqbXCuA8TyCmVDJm/c= X-Google-Smtp-Source: APXvYqyRLpT5A7k4N99KOxnaY+GUih83febglx1GMbuh1j9A8F2BYwJ1ssObEXxSqE46HhCUUivjkA5SeaRg6uElA6s= X-Received: by 2002:a9d:3d0a:: with SMTP id a10mr95183959otc.327.1578038428078; Fri, 03 Jan 2020 00:00:28 -0800 (PST) MIME-Version: 1.0 From: navnath gadakh Date: Fri, 3 Jan 2020 13:30:16 +0530 Message-ID: Subject: [pgAdmin][RM5048] : code coverage tool To: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000f2b060059b37b364" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000f2b060059b37b364 Content-Type: multipart/alternative; boundary="000000000000f2b05d059b37b362" --000000000000f2b05d059b37b362 Content-Type: text/plain; charset="UTF-8" Hi Team, Please find the attached patch to calculate code coverage if pgadmin code(python tests). I have extended the existing testsuite to enable coverage. I have used python's coverage module. *Some useful commands: * before running the commands make sure you create .coveragerc file under /regression directory(details mentioned in README) Run coverage With all modules run 'python runtests.py --coverage --exclude feature_tests' With specific module run 'python runtests.py --pkg browser.server_groups.servers.tests --coverage' Thanks! -- *Regards,* *Navnath Gadakh* --000000000000f2b05d059b37b362 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Team,
=C2=A0 =C2=A0 =C2=A0 Please= find the attached patch to calculate code coverage if pgadmin code(python = tests).
I have extended the existing test= suite to enable coverage. I have used python's coverage module.

Some u= seful commands:=C2=A0

before running the commands make sure you create .c= overagerc file under /regression directory(details mentioned in README)
Run coverage
    With all modules
run 'python runtests.py --coverage --e= xclude feature_tests'
With specific module
run 'p= ython runtests.py --pkg browser.server_groups.servers.tests --coverage'=
Th= anks!
--=C2=A0
Regards,
Navnath Gadakh
=
--000000000000f2b05d059b37b362-- --000000000000f2b060059b37b364 Content-Type: application/octet-stream; name="pgadmin_code_coverage_v1.patch" Content-Disposition: attachment; filename="pgadmin_code_coverage_v1.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k4xvboi70 ZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uLy5jb3ZlcmFnZXJjLmluIGIvd2ViL3JlZ3Jlc3Np b24vLmNvdmVyYWdlcmMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi40 MGNlZDVkZWQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi8uY292ZXJhZ2VyYy5p bgpAQCAtMCwwICsxLDI1IEBACisjIC5jb3ZlcmFnZXJjIHRvIGNvbnRyb2wgY292ZXJhZ2UucHkK KyMgVGhpcyBpcyBkZWZhdWx0IGNvdmVyYWdlIGNvbmZpZ3VyYXRpb24gZmlsZSByZXF1aXJlIHRv IHJ1biBjb3ZlcmFnZS5weQorIyBBbnkgcGF0aHMgbWVudGlvbmVkIGZvciBjb3ZlcmFnZSBjb21t YW5kIGFyZSBpbmRlbnRlZChkZWZhdWx0OjQgc3BhY2VzKQorCitbcnVuXQorIyBNZW50aW9uIHBh dGhzIGluICdzb3VyY2UnIHRvIG1lYXN1cmUgY29kZSBjb3ZlcmFnZShGdWxsIHByb2plY3QgcGF0 aCkKK3NvdXJjZSA9CisgICAgJFBHQURNSU40X1NSQy93ZWIvcGdhZG1pbi8KKworIyBNZW50aW9u IHBhdHRlcm5zIGluICdvbWl0JyB0byBvbWl0IGNvZGUgZnJvbSB0aGUgY292ZXJhZ2UgbWVhc3Vy ZW1lbnQKKyMgSGVyZSwgb21pdCBjb2RlIHdoaWNoIGNvbnRhaW5zIHBhdHRlcm4gJy90ZXN0cy8n LCAnZmVhdHVyZV90ZXN0cycgZXRjLgorb21pdCA9CisgICAgKi90ZXN0cy8qCisgICAgKi9mZWF0 dXJlX3Rlc3RzLyoKKworIyBNZW50aW9uIHBhdHRlcm5zIGluICdpbmNsdWRlJyB0byBpbmNsdWRl IGNvZGUgZm9yIHRoZSBjb3ZlcmFnZSBtZWFzdXJlbWVudAorIyBIZXJlLCBjb2RlIGNvdmVyYWdl IHdpbGwgc2hvdyByZXBvcnQgb25seSBmb3IgbW9kdWxlcyBtZW50aW9uZWQgaW4gdGhlCisjICdp bmNsdWRlJworaW5jbHVkZSA9CisgICAgIyBGb3IgYWxsIG1vZHVsZXMKKyAgICAqL3dlYi9wZ2Fk bWluLyoKKyAgICAjIEZvciAnZGF0YWJhc2VzJworICAgICMgKi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvKgorICAgICMgRm9yICd0YWJsZXMnCisg ICAgIyAqL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy8qCmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9SRUFETUUgYi93 ZWIvcmVncmVzc2lvbi9SRUFETUUKaW5kZXggYmNiODAwMmYyLi4xNTEzZjZiYmQgMTAwNjQ0Ci0t LSBhL3dlYi9yZWdyZXNzaW9uL1JFQURNRQorKysgYi93ZWIvcmVncmVzc2lvbi9SRUFETUUKQEAg LTE5MCw2ICsxOTAsNDIgQEAgUHl0aG9uIFRlc3RzOgogICAgICBFeGFtcGxlIDIpICBFeGVjdXRl IG9ubHkgcmV2ZXJzZSBlbmdpbmVlcmVkIFNRTCB0ZXN0IGZyYW1ld29yayBmb3Igc29tZSBtb2R1 bGVzCiAgICAgICAgICBydW4gJ3B5dGhvbiBydW50ZXN0cy5weSAtLXBrZyByZXNxbCAtLW1vZHVs ZXMgc2VxdWVuY2VzLGZ1bmN0aW9ucycKIAorQ29kZSBDb3ZlcmFnZToKKy0tLS0tLS0tLS0tLS0t LQorCistIFRlc3QgZnJhbWV3b3JrIGlzIGFibGUgdG8gY2FsY3VsYXRlIHRoZSBjb2RlIGNvdmVy YWdlLgorLSBDb3ZlcmFnZSBwYWNrYWdlKGNvdmVyYWdlKSBpcyBhZGRlZCBpbiAkUEdBRE1JTjRf U1JDL3dlYi9yZWdyZXNzaW9uL3JlcXVpcmVtZW50cy50eHQgZmlsZQorCitIb3cgdG8gZ2VuZXJh dGUgY29kZSBjb3ZlcmFnZSByZXBvcnQgZm9yIEFQSSB0ZXN0LXN1aXRlPworLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIENoYW5nZSB0byB0aGUgcmVncmVzc2lvbiB0 ZXN0IGRpcmVjdG9yeToKKyAgICAgcnVuICdjZCAkUEdBRE1JTjRfU1JDL3dlYi9yZWdyZXNzaW9u JworCistIEJlZm9yZSBydW5uaW5nIGNvZGUgY292ZXJhZ2Ugd2UgbmVlZCBjb25maWd1cmUgJ3Jl Z3Jlc3Npb24vLmNvdmVyYWdlcmMnIGZpbGUuCisgICBpKS4gQ3JlYXRlICdyZWdyZXNzaW9uLy5j b3ZlcmFnZXJjJyBmaWxlLgorICAgaWkpLiBDb3B5IGNvbnRlbnQgb2YgJ3JlZ3Jlc3Npb24vLmNv dmVyYWdlcmMuaW4nIHRvICdyZWdyZXNzaW9uLy5jb3ZlcmFnZXJjJworICAgaWlpKS4gTW9kaWZ5 ICdyZWdyZXNzaW9uLy5jb3ZlcmFnZXJjJyBmaWxlIGFzIHBlciBvdXIgbmVlZCBhcyAncmVncmVz c2lvbi8KKyAgIC5jb3ZlcmFnZXJjLmluJyBoYXMgZGVmYXVsdCBjb25maWd1cmF0aW9ucworCisg ICAgICAgIEluICdyZWdyZXNzaW9uLy5jb3ZlcmFnZXJjJyBmaWxlIHdlIG5lZWQgdG8gbWVudGlv biBzb21lIHBhcmFtZXRlcnMKKyAgICAgICAgbGlrZSAnc291cmNlJyhwcm9qZWN0IHBhdGgpLCdp bmNsdWRlJyhmaWxlcy9tb2R1bGVzIHRvIGJlIGluY2x1ZGVkIGZvcgorICAgICAgICBjb3ZlcmFn ZSksJ29taXQnKGZpbGVzL21vZHVsZXMgdG8gYmUgb21pdHRlZCBmcm9tIGNvdmVyYWdlKQorCisg ICAgICAgIFdlIGNhbiBhbHNvIGFkZCBtb3JlIHBhcmFtZXRlcnMgYWNjb3JkaW5nIHRvIG91ciBu ZWVkLgorICAgICAgICBGb3IgbW9yZSBpbmZvIHBsZWFzZSByZWFkIGNvdmVyYWdlLnB5J3Mgb2Zm aWNpYWwgZG9jdW1lbnQgaGVyZQorICAgICAgICAnaHR0cDovL2NvdmVyYWdlLnJlYWR0aGVkb2Nz LmlvL2VuL2NvdmVyYWdlLTQuMi9pbnN0YWxsLmh0bWwnCisKKy0gUnVuIGNvdmVyYWdlCisgICAg V2l0aCBhbGwgbW9kdWxlcworICAgICAgICBydW4gJ3B5dGhvbiBydW50ZXN0cy5weSAtLWNvdmVy YWdlIC0tZXhjbHVkZSBmZWF0dXJlX3Rlc3RzJworICAgIFdpdGggc3BlY2lmaWMgbW9kdWxlCisg ICAgICAgIHJ1biAncHl0aG9uIHJ1bnRlc3RzLnB5IC0tcGtnIGJyb3dzZXIuc2VydmVyX2dyb3Vw cy5zZXJ2ZXJzLnRlc3RzIC0tY292ZXJhZ2UnCisKKy0gQWZ0ZXIgZXhlY3V0aW9uIG9mIGNvdmVy YWdlLCB3ZSB3aWxsIHNlZSBjb2RlIGNvdmVyYWdlIHJlcG9ydCBvbiBjb25zb2xlLgorICBGb3Ig YSBuaWNlciBwcmVzZW50YXRpb24sICcvcmVncmVzc2lvbi9jb3ZodG1sJyBkaXJlY3RvcnkgZ2V0 cyBjcmVhdGVkLgorICBPcGVuICdpbmRleC5odG1sJyBmaWxlIGluIGJyb3dzZXIgYW5kIHlvdSB3 aWxsIHNlZSBkZXRhaWwgY292ZXJhZ2UgcmVwb3J0LgorCiBKYXZhc2NyaXB0IFRlc3RzOgogCiAt IEluc3RhbGwgbm9kZS5qcyBhbmQgeWFybiwgaW4gdGhlIGFwcHJvcHJpYXRlIHdheSBmb3IgeW91 ciBwbGF0Zm9ybS4gT24gbWFjT1Mgd2l0aCBIb21lYnJldyB5b3UgbWlnaHQgdXNlOgpkaWZmIC0t Z2l0IGEvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMvdGVzdF91dGlscy5weSBiL3dl Yi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL3Rlc3RfdXRpbHMucHkKaW5kZXggNWQxODJl Y2UyLi4zMzJlMTdmZGMgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0 aWxzL3Rlc3RfdXRpbHMucHkKKysrIGIvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMv dGVzdF91dGlscy5weQpAQCAtMTQsNiArMTQsNyBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdXVpZAog aW1wb3J0IHBzeWNvcGcyCiBpbXBvcnQgc3FsaXRlMworaW1wb3J0IHNodXRpbAogZnJvbSBmdW5j dG9vbHMgaW1wb3J0IHBhcnRpYWwKIGZyb20gdGVzdHRvb2xzLnRlc3RjYXNlIGltcG9ydCBjbG9u ZV90ZXN0X3dpdGhfbmV3X2lkCiAKQEAgLTIzLDcgKzI0LDExIEBAIGZyb20gcmVncmVzc2lvbiBp bXBvcnQgdGVzdF9zZXR1cAogCiBmcm9tIHBnYWRtaW4udXRpbHMucHJlZmVyZW5jZXMgaW1wb3J0 IFByZWZlcmVuY2VzCiAKK0NVUlJFTlRfUEFUSCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpv aW4ob3MucGF0aC5kaXJuYW1lKAorICAgIG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKSwgIi4u LyIpKQorCiBTRVJWRVJfR1JPVVAgPSB0ZXN0X3NldHVwLmNvbmZpZ19kYXRhWydzZXJ2ZXJfZ3Jv dXAnXQorQ09WRVJBR0VfQ09ORklHX0ZJTEUgPSBvcy5wYXRoLmpvaW4oQ1VSUkVOVF9QQVRILCAi LmNvdmVyYWdlcmMiKQogZmlsZV9uYW1lID0gb3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykKIAog CkBAIC0xMTQ2LDMgKzExNTEsMjcgQEAgZGVmIGdldF93YXRjaGVyX2RpYWxvZ3VlX3N0YXR1cyhz ZWxmKToKIGRlZiBnZXRfZHJpdmVyX3ZlcnNpb24oKToKICAgICB2ZXJzaW9uID0gZ2V0YXR0cihw c3ljb3BnMiwgJ19fdmVyc2lvbl9fJywgTm9uZSkKICAgICByZXR1cm4gdmVyc2lvbgorCisKK2Rl ZiBpc19jb3ZlcmFnZV9lbmFibGVkKGFyZ3MpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24g Y2hlY2tzIGZvciBjb3ZlcmFnZSBhcmdzIGV4aXN0cyBpbiBjb21tYW5kIGxpbmUgYXJncworICAg IDpyZXR1cm46IGJvb2xlYW4KKyAgICAiIiIKKyAgICBpZiAiY292ZXJhZ2UiIGluIGFyZ3MgYW5k IGFyZ3NbImNvdmVyYWdlIl06CisgICAgICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIEZhbHNl CisKKworZGVmIHByaW50X2FuZF9zdG9yZV9jb3ZlcmFnZV9yZXBvcnQoY292KToKKyAgICAiIiIK KyAgICBUaGlzIGZ1bmN0aW9uIHByaW50IHRoZSBjb3ZlcmFnZSByZXBvcnQgb24gY29uc29sZSBh bmQgc3RvcmUgaXQgaW4gaHRtbAorICAgIGZpbGVzCisgICAgOnJldHVybjogTm9uZQorICAgICIi IgorICAgIHByaW50KCJcbkNvdmVyYWdlIFN1bW1hcnk6XG4iLCBmaWxlPXN5cy5zdGRlcnIpCisg ICAgY292LnJlcG9ydCgpCisgICAgY292X2RpciA9IG9zLnBhdGguam9pbihDVVJSRU5UX1BBVEgs ICJjb3ZodG1sIikKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhjb3ZfZGlyKToKKyAgICAgICAgc2h1 dGlsLnJtdHJlZShjb3ZfZGlyKQorICAgIGNvdi5odG1sX3JlcG9ydChkaXJlY3Rvcnk9Y292X2Rp cikKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL3JlcXVpcmVtZW50cy50eHQgYi93ZWIvcmVn cmVzc2lvbi9yZXF1aXJlbWVudHMudHh0CmluZGV4IGVkNTE2YTFkZS4uMWViOTIyYjE5IDEwMDY0 NAotLS0gYS93ZWIvcmVncmVzc2lvbi9yZXF1aXJlbWVudHMudHh0CisrKyBiL3dlYi9yZWdyZXNz aW9uL3JlcXVpcmVtZW50cy50eHQKQEAgLTI3LDcgKzI3LDcgQEAgdGVzdHNjZW5hcmlvcz09MC41 LjAKIHRlc3R0b29scz09Mi4zLjAKIHRyYWNlYmFjazI9PTEuNC4wCiBzZWxlbml1bT09My4xNC4w Ci0KK2NvdmVyYWdlPT01LjAuMQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIE1vZHVsZXMgc3BlY2lmaWNhbGx5IHJlcXVp cmVkIGZvciBQeXRob24zLjMgb3IgbGVzc2VyIHZlcnNpb24KICMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEv d2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMucHkgYi93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weQpp bmRleCBmODBlYjVjN2EuLmYxNjI2OGMyNyAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vcnVu dGVzdHMucHkKKysrIGIvd2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMucHkKQEAgLTIwLDYgKzIwLDcg QEAgaW1wb3J0IHN5cwogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IGpzb24KIGltcG9ydCByYW5k b20KK2ltcG9ydCBjb3ZlcmFnZQogCiBpbXBvcnQgdW5pdHRlc3QKIApAQCAtNDgsNiArNDksOCBA QCBpZiBzeXMucGF0aFswXSAhPSByb290OgogZnJvbSBwZ2FkbWluIGltcG9ydCBjcmVhdGVfYXBw CiBpbXBvcnQgY29uZmlnCiAKK0NPVkVSQUdFX0NPTkZJR19GSUxFID0gb3MucGF0aC5qb2luKENV UlJFTlRfUEFUSCwgIi5jb3ZlcmFnZXJjIikKKwogaWYgY29uZmlnLlNFUlZFUl9NT0RFIGlzIFRy dWU6CiAgICAgY29uZmlnLlNFQ1VSSVRZX1JFQ09WRVJBQkxFID0gVHJ1ZQogICAgIGNvbmZpZy5T RUNVUklUWV9DSEFOR0VBQkxFID0gVHJ1ZQpAQCAtMjk3LDYgKzMwMCw4IEBAIGRlZiBhZGRfYXJn dW1lbnRzKCk6CiAgICAgICAgIGhlbHA9J1NraXBzIGV4ZWN1dGlvbiBvZiB0aGUgdGVzdCBjYXNl cyBvZiBwYXJ0aWN1bGFyIHBhY2thZ2UgYW5kICcKICAgICAgICAgICAgICAnc3ViLXBhY2thZ2Vz JwogICAgICkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNvdmVyYWdlJywgbmFyZ3M9Jz8n LCBjb25zdD1UcnVlLCB0eXBlPWJvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0 PUZhbHNlLCBoZWxwPSdFbmFibGUgY29kZSBjb3ZlcmFnZSBmZWF0dXJlJykKICAgICBwYXJzZXIu YWRkX2FyZ3VtZW50KAogICAgICAgICAnLS1kZWZhdWx0X2Jyb3dzZXInLAogICAgICAgICBoZWxw PSdFeGVjdXRlcyB0aGUgZmVhdHVyZSB0ZXN0IGluIHNwZWNpZmljIGJyb3dzZXInCkBAIC0zOTQs NiArMzk5LDcgQEAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICAjIEZhaWx1cmUgZGV0 ZWN0ZWQ/CiAgICAgZmFpbHVyZSA9IEZhbHNlCiAgICAgdGVzdF9yZXN1bHQgPSBkaWN0KCkKKyAg ICBjb3YgPSBOb25lCiAKICAgICAjIFNldCBzaWduYWwgaGFuZGxlciBmb3IgY2xlYW51cAogICAg IHNpZ25hbF9saXN0ID0gZGlyKHNpZ25hbCkKQEAgLTQzMCw2ICs0MzYsMTIgQEAgaWYgX19uYW1l X18gPT0gJ19fbWFpbl9fJzoKICAgICBub2RlX25hbWUgPSAiYWxsIgogICAgIGlmIGFyZ3NbJ3Br ZyddIGlzIG5vdCBOb25lOgogICAgICAgICBub2RlX25hbWUgPSBhcmdzWydwa2cnXS5zcGxpdCgn LicpWy0xXQorCisgICAgIyBTdGFydCBjb3ZlcmFnZQorICAgIGlmIHRlc3RfdXRpbHMuaXNfY292 ZXJhZ2VfZW5hYmxlZChhcmdzKToKKyAgICAgICAgY292ID0gY292ZXJhZ2UuQ292ZXJhZ2UoY29u ZmlnX2ZpbGU9Q09WRVJBR0VfQ09ORklHX0ZJTEUpCisgICAgICAgIGNvdi5zdGFydCgpCisKICAg ICB0cnk6CiAgICAgICAgIGZvciBzZXJ2ZXIgaW4gc2VydmVyc19pbmZvOgogICAgICAgICAgICAg cHJpbnQoIlxuPT09PT09PT09PT09PVJ1bm5pbmcgdGhlIHRlc3QgY2FzZXMgZm9yICclcyc9PT09 PT09PT09PT09IgpAQCAtNTU3LDYgKzU2OSwxNSBAQCBpZiBfX25hbWVfXyA9PSAnX19tYWluX18n OgogICAgICAgICBmaWxlPXN5cy5zdGRlcnIKICAgICApCiAKKyAgICAjIFN0b3AgY29kZSBjb3Zl cmFnZQorICAgIGlmIHRlc3RfdXRpbHMuaXNfY292ZXJhZ2VfZW5hYmxlZChhcmdzKToKKyAgICAg ICAgY292LnN0b3AoKQorICAgICAgICBjb3Yuc2F2ZSgpCisKKyAgICAjICMgUHJpbnQgY292ZXJh Z2Ugb25seSBpZiBjb3ZlcmFnZSBhcmdzIGdpdmVuIGluIGNvbW1hbmQgbGluZQorICAgIGlmIHRl c3RfdXRpbHMuaXNfY292ZXJhZ2VfZW5hYmxlZChhcmdzKToKKyAgICAgICAgdGVzdF91dGlscy5w cmludF9hbmRfc3RvcmVfY292ZXJhZ2VfcmVwb3J0KGNvdikKKwogICAgIHByaW50KCJQbGVhc2Ug Y2hlY2sgb3V0cHV0IGluIGZpbGU6ICVzL3JlZ3Jlc3Npb24ubG9nXG4iICUgQ1VSUkVOVF9QQVRI KQogCiAgICAgIyBVbnNldCBlbnZpcm9ubWVudCB2YXJpYWJsZQo= --000000000000f2b060059b37b364--