From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by arlo.cworth.org (Postfix) with ESMTP id 1E9526DE0EC5 for ; Mon, 27 May 2019 11:35:15 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at cworth.org X-Spam-Flag: NO X-Spam-Score: -0.285 X-Spam-Level: X-Spam-Status: No, score=-0.285 tagged_above=-999 required=5 tests=[AWL=-0.285, DKIMWL_WL_MED=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001] autolearn=disabled Received: from arlo.cworth.org ([127.0.0.1]) by localhost (arlo.cworth.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8PvWKk3gHM2o for ; Mon, 27 May 2019 11:35:13 -0700 (PDT) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-eopbgr800058.outbound.protection.outlook.com [40.107.80.58]) by arlo.cworth.org (Postfix) with ESMTPS id 01AAE6DE0EB5 for ; Mon, 27 May 2019 11:35:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=caltech.onmicrosoft.com; s=selector1-caltech-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=POEgxsDC1d2vqoMDyyu6hafMVSgGR+xrZNT6otzg1K4=; b=iFCPehQ8VzH4uCoaUBzp76mCa0UzgUK1LM+d1J48M4zF6ElmzP6nkqBFP8fcTDXH8WBkKWabf3P2tL2nXyoTx9Jaaj2qP+N2mJ9T+tuDmlXNr7zfTb7F4lPLQOVU0YsTKAKeCdPJeVwCJBhKwrPmts1nBojE0BMAwlW0cgzfmSw= Received: from DM6PR03MB4393.namprd03.prod.outlook.com (20.178.25.26) by DM6PR03MB3961.namprd03.prod.outlook.com (20.176.117.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1922.22; Mon, 27 May 2019 18:35:10 +0000 Received: from DM6PR03MB4393.namprd03.prod.outlook.com ([fe80::eca5:840e:5214:6282]) by DM6PR03MB4393.namprd03.prod.outlook.com ([fe80::eca5:840e:5214:6282%6]) with mapi id 15.20.1922.021; Mon, 27 May 2019 18:35:10 +0000 From: "Rollins, Jameson" To: Notmuch Mail Subject: [PATCH v3] test: new test framework to compare json parts Thread-Topic: [PATCH v3] test: new test framework to compare json parts Thread-Index: AQHVFLrqCDEdt+F580qglAe2Ipi/tw== Date: Mon, 27 May 2019 18:35:10 +0000 Message-ID: <20190527183508.9843-1-jrollins@caltech.edu> References: <20190526221610.2833-4-dkg@fifthhorseman.net> In-Reply-To: <20190526221610.2833-4-dkg@fifthhorseman.net> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BYAPR04CA0029.namprd04.prod.outlook.com (2603:10b6:a03:40::42) To DM6PR03MB4393.namprd03.prod.outlook.com (2603:10b6:5:104::26) authentication-results: spf=none (sender IP is ) smtp.mailfrom=jrollins@caltech.edu; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [76.91.54.61] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 559f025e-4406-4027-3c4f-08d6e2d20c9d x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:DM6PR03MB3961; x-ms-traffictypediagnostic: DM6PR03MB3961: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 0050CEFE70 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(346002)(136003)(39860400002)(396003)(199004)(189003)(68736007)(1076003)(6116002)(3846002)(305945005)(478600001)(14454004)(6486002)(7736002)(11346002)(2616005)(2906002)(486006)(53936002)(446003)(86362001)(5660300002)(476003)(316002)(786003)(88552002)(66066001)(26005)(186003)(75432002)(8676002)(66446008)(64756008)(66556008)(66476007)(76176011)(25786009)(6506007)(6512007)(81166006)(102836004)(81156014)(386003)(99286004)(6436002)(8936002)(71190400001)(71200400001)(256004)(50226002)(36756003)(14444005)(6916009)(70586007)(66946007); DIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR03MB3961; H:DM6PR03MB4393.namprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: caltech.edu does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: H0fMSIWpICTrE8ysXjiMUxJRMX6R8imcLRKJIFp0jtqDvwNaH83izn+ZiNbGqoEID4INlYHpL05Ue1dJvAAmpkXbcHEry8+fsegrd4LufSFCzjB4qrMB8MvZIlj6zO2LoMfksNxvBTBsyKFGhRh+W3KK1Qy/5+YNlVlTG+gGGnvOf/Zw7MrXxxC2/KyX7xrDXx9LVgE0ywNmK99p4a2A0Z28LAzFnOwGMAO/QdV7MVqHPHYc+ItlHUf9K+Afu162vyDfLhz51Vs6OlFgiA6300z0i/Xcx3euzX+8UBJZkgyeXRNpElbvA0h5G/7wegB11d98mvrjN0OeOr3d8CqP60z/GK8Pss2eLLzrZ2/vJiyFn/f0ylyT44rpDoYGUcISw15uqrlwDTcPRjNGlfT5K6Uva+20Qm0HsYyiwOhgCVA= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: caltech.edu X-MS-Exchange-CrossTenant-Network-Message-Id: 559f025e-4406-4027-3c4f-08d6e2d20c9d X-MS-Exchange-CrossTenant-originalarrivaltime: 27 May 2019 18:35:10.6202 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: fd5be9d9-7b72-4df9-830e-b1f9cc5b44bd X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: jrollins@caltech.edu X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB3961 X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 May 2019 18:35:15 -0000 RnJvbTogSmFtZXNvbiBHcmFlZiBSb2xsaW5zIDxqcm9sbGluc0BmaW5lc3RydWN0dXJlLm5ldD4N Cg0KVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gd3JpdGUgZmFpcmx5IGNvbXBhY3QsIHJlYWRhYmxl IHRlc3RzIG9mIGpzb24NCm91dHB1dCwgd2l0aG91dCBuZWVkaW5nIHRvIHNhbml0aXplIGF3YXkg cGFydHMgdGhhdCB3ZSBkb24ndCBjYXJlDQphYm91dC4NCg0KU2lnbmVkLW9mZi1ieTogRGFuaWVs IEthaG4gR2lsbG1vciA8ZGtnQGZpZnRoaG9yc2VtYW4ubmV0Pg0KLS0tDQogdGVzdC9qc29uX2No ZWNrX25vZGVzLnB5IHwgMTE0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Kw0KIHRlc3QvdGVzdC1saWIuc2ggICAgICAgICB8ICAyNCArKysrKysrKysNCiAyIGZpbGVzIGNo YW5nZWQsIDEzOCBpbnNlcnRpb25zKCspDQogY3JlYXRlIG1vZGUgMTAwNzU1IHRlc3QvanNvbl9j aGVja19ub2Rlcy5weQ0KDQpkaWZmIC0tZ2l0IGEvdGVzdC9qc29uX2NoZWNrX25vZGVzLnB5IGIv dGVzdC9qc29uX2NoZWNrX25vZGVzLnB5DQpuZXcgZmlsZSBtb2RlIDEwMDc1NQ0KaW5kZXggMDAw MDAwMDAuLjE3NDAzYzU3DQotLS0gL2Rldi9udWxsDQorKysgYi90ZXN0L2pzb25fY2hlY2tfbm9k ZXMucHkNCkBAIC0wLDAgKzEsMTE0IEBADQorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uDQoraW1wb3J0 IHJlDQoraW1wb3J0IHN5cw0KK2ltcG9ydCBqc29uDQorDQorDQorRVhQUl9SRSA9IHJlLmNvbXBp bGUoJyg/UDxsYWJlbD5bYS16QS1aMC05Xy1dKyk6KD9QPGFkZHJlc3M+W149IV0rKSg/Oig/UDx0 eXBlPls9IV0pKD9QPHZhbD4uKikpPycsIHJlLkRPVEFMTHxyZS5NVUxUSUxJTkUpDQorDQorDQor aWYgbGVuKHN5cy5hcmd2KSA8IDI6DQorICAgIHN5cy5leGl0KCd1c2FnZTogJysgc3lzLmFyZ3Zb MF0gKyAiIiIgRVhQUiBbRVhQUl0NCisNCitUYWtlcyBqc29uIGRhdGEgb24gc3RkaW4gYW5kIGV2 YWx1YXRlcyB0ZXN0IGV4cHJlc3Npb25zIHNwZWNpZmllZCBpbg0KK2FyZ3VtZW50cy4gIEVhY2gg dGVzdCBpcyBldmFsdWF0ZWQsIGFuZCBvdXRwdXQgaXMgcHJpbnRlZCBvbmx5IGlmIHRoZQ0KK3Rl c3QgZmFpbHMuICBJZiBhbnkgdGVzdCBmYWlscyB0aGUgcmV0dXJuIHZhbHVlIG9mIGV4ZWN1dGlv biB3aWxsIGJlDQorbm9uLXplcm8uDQorDQorRVhQUiBjYW4gYmUgb25lIG9mIGZvbGxvd2luZyB0 eXBlczoNCisNCitWYWx1ZSB0ZXN0OiB0ZXN0IHRoYXQgb2JqZWN0IGluIGpzb24gZGF0YSBmb3Vu ZCBhdCBhZGRyZXNzIGlzIGVxdWFsIHRvDQorc3BlY2lmaWVkIHZhbHVlOg0KKw0KKyAgbGFiZWw6 YWRkcmVzcz12YWx1ZQ0KKw0KK0V4aXN0ZW5jZSB0ZXN0OiB0ZXN0IHRoYXQgZGljdCBvciBsaXN0 IGluIGpzb24gZGF0YSBmb3VuZCBhdCBhZGRyZXNzDQorZG9lcyAqbm90KiBjb250YWluIHRoZSBz cGVjaWZpZWQga2V5Og0KKw0KKyAgbGFiZWw6YWRkcmVzcyFrZXkNCisNCitFeHRyYWN0OiBleHRy YWN0IG9iamVjdCBmcm9tIGpzb24gZGF0YSBmb3VuZCBhdCBhZGRyZXNzIGFuZCBwcmludA0KKw0K KyAgbGFiZWw6YWRkcmVzcw0KKw0KK1Jlc3VsdHMgYXJlIHByaW50ZWQgdG8gc3Rkb3V0IHByZWZp eGVkIGJ5IGV4cHJlc3Npb24gbGFiZWwuICBJbiBhbGwNCitjYXNlcyB0aGUgdGVzdCB3aWxsIGZh aWwgaWYgb2JqZWN0IGRvZXMgbm90IGV4aXN0IGluIGRhdGEuDQorDQorRXhhbXBsZToNCisNCisw ICQgZWNobyAnWyJhIiwgImIiLCB7ImMiOiAxfV0nIHwgcHl0aG9uMyBqc29uX2NoZWNrX25vZGVz LnB5ICdzZWNvbmRfZDpbMV09ImQiJyAnbm9fYzpbMl0hImMiJw0KK3NlY29uZF9kOiB2YWx1ZSBu b3QgZXF1YWw6IGRhdGFbMV0gPSAnYicgIT0gJ2QnDQorbm9fYzogZGljdCBjb250YWlucyBrZXk6 IGRhdGFbMl1bImMiXSA9IDENCisxICQNCisNCisiIiIpDQorDQorDQorIyBwYXJzZSBleHByZXNz aW9ucyBmcm9tIGFyZ3VtZW50cw0KK2V4cHJzID0gW10NCitmb3IgZXhwciBpbiBzeXMuYXJndlsx Ol06DQorICAgIG0gPSByZS5tYXRjaChFWFBSX1JFLCBleHByKQ0KKyAgICBpZiBub3QgbToNCisg ICAgICAgIHN5cy5leGl0KCJJbnZhbGlkIGV4cHJlc3Npb246IHt9Ii5mb3JtYXQoZXhwcikpDQor ICAgIGV4cHJzLmFwcGVuZChtKQ0KKw0KK2RhdGEgPSBqc29uLmxvYWQoc3lzLnN0ZGluKQ0KKw0K K2ZhaWwgPSBGYWxzZQ0KKw0KK2ZvciBleHByIGluIGV4cHJzOg0KKyAgICAjIHByaW50KGV4cHIu Z3JvdXBzKCksZmFpbCkNCisNCisgICAgZSA9ICdkYXRhe30nLmZvcm1hdChleHByLmdyb3VwKCdh ZGRyZXNzJykpDQorICAgIHRyeToNCisgICAgICAgIHZhbCA9IGV2YWwoZSkNCisgICAgZXhjZXB0 IFN5bnRheEVycm9yOg0KKyAgICAgICAgZmFpbCA9IFRydWUNCisgICAgICAgIHByaW50KCJ7fTog c3ludGF4IGVycm9yIG9uIGV2YWx1YXRpb24gb2Ygb2JqZWN0OiB7fSIuZm9ybWF0KA0KKyAgICAg ICAgICAgIGV4cHIuZ3JvdXAoJ2xhYmVsJyksIGUpKQ0KKyAgICAgICAgY29udGludWUNCisgICAg ZXhjZXB0Og0KKyAgICAgICAgZmFpbCA9IFRydWUNCisgICAgICAgIHByaW50KCJ7fTogb2JqZWN0 IG5vdCBmb3VuZDogZGF0YXt9Ii5mb3JtYXQoDQorICAgICAgICAgICAgZXhwci5ncm91cCgnbGFi ZWwnKSwgZXhwci5ncm91cCgnYWRkcmVzcycpKSkNCisgICAgICAgIGNvbnRpbnVlDQorDQorICAg IGlmIGV4cHIuZ3JvdXAoJ3R5cGUnKSA9PSAnPSc6DQorICAgICAgICB0cnk6DQorICAgICAgICAg ICAgb2JqX3ZhbCA9IGpzb24ubG9hZHMoZXhwci5ncm91cCgndmFsJykpDQorICAgICAgICBleGNl cHQ6DQorICAgICAgICAgICAgZmFpbCA9IFRydWUNCisgICAgICAgICAgICBwcmludCgie306IGVy cm9yIGV2YWx1YXRpbmcgdmFsdWU6IHt9Ii5mb3JtYXQoDQorICAgICAgICAgICAgICAgIGV4cHIu Z3JvdXAoJ2xhYmVsJyksIGV4cHIuZ3JvdXAoJ2FkZHJlc3MnKSkpDQorICAgICAgICAgICAgY29u dGludWUNCisgICAgICAgIGlmIHZhbCAhPSBvYmpfdmFsOg0KKyAgICAgICAgICAgIGZhaWwgPSBU cnVlDQorICAgICAgICAgICAgcHJpbnQoInt9OiB2YWx1ZSBub3QgZXF1YWw6IGRhdGF7fSA9IHt9 ICE9IHt9Ii5mb3JtYXQoDQorICAgICAgICAgICAgICAgIGV4cHIuZ3JvdXAoJ2xhYmVsJyksIGV4 cHIuZ3JvdXAoJ2FkZHJlc3MnKSwgcmVwcih2YWwpLCByZXByKG9ial92YWwpKSkNCisNCisgICAg ZWxpZiBleHByLmdyb3VwKCd0eXBlJykgPT0gJyEnOg0KKyAgICAgICAgaWYgbm90IGlzaW5zdGFu Y2UodmFsLCAoZGljdCwgbGlzdCkpOg0KKyAgICAgICAgICAgIGZhaWwgPSBUcnVlDQorICAgICAg ICAgICAgcHJpbnQoInt9OiBub3QgYSBkaWN0IG9yIGEgbGlzdDogZGF0YXt9Ii5mb3JtYXQoDQor ICAgICAgICAgICAgICAgIGV4cHIuZ3JvdXAoJ2xhYmVsJyksIGV4cHIuZ3JvdXAoJ2FkZHJlc3Mn KSkpDQorICAgICAgICAgICAgY29udGludWUNCisgICAgICAgIHRyeToNCisgICAgICAgICAgICBp ZHggPSBqc29uLmxvYWRzKGV4cHIuZ3JvdXAoJ3ZhbCcpKQ0KKyAgICAgICAgICAgIGlmIGlkeCBp biB2YWw6DQorICAgICAgICAgICAgICAgIGZhaWwgPSBUcnVlDQorICAgICAgICAgICAgICAgIHBy aW50KCJ7fToge30gY29udGFpbnMga2V5OiB7fVt7fV0gPSB7fSIuZm9ybWF0KA0KKyAgICAgICAg ICAgICAgICAgICAgZXhwci5ncm91cCgnbGFiZWwnKSwgdHlwZSh2YWwpLl9fbmFtZV9fLCBlLCBl eHByLmdyb3VwKCd2YWwnKSwgdmFsW2lkeF0pKQ0KKyAgICAgICAgZXhjZXB0IFN5bnRheEVycm9y Og0KKyAgICAgICAgICAgIGZhaWwgPSBUcnVlDQorICAgICAgICAgICAgcHJpbnQoInt9OiBzeW50 YXggZXJyb3Igb24gZXZhbHVhdGlvbiBvZiB2YWx1ZToge30iLmZvcm1hdCgNCisgICAgICAgICAg ICAgICAgZXhwci5ncm91cCgnbGFiZWwnKSwgZXhwci5ncm91cCgndmFsJykpKQ0KKyAgICAgICAg ICAgIGNvbnRpbnVlDQorDQorDQorICAgIGVsaWYgZXhwci5ncm91cCgndHlwZScpIGlzIE5vbmU6 DQorICAgICAgICBwcmludCgie306IHt9Ii5mb3JtYXQoZXhwci5ncm91cCgnbGFiZWwnKSwgdmFs KSkNCisNCisNCitpZiBmYWlsOg0KKyAgICBzeXMuZXhpdCgxKQ0KK3N5cy5leGl0KDApDQpkaWZm IC0tZ2l0IGEvdGVzdC90ZXN0LWxpYi5zaCBiL3Rlc3QvdGVzdC1saWIuc2gNCmluZGV4IGZmMThm YWU2Li42MTZjYjY3NCAxMDA2NDQNCi0tLSBhL3Rlc3QvdGVzdC1saWIuc2gNCisrKyBiL3Rlc3Qv dGVzdC1saWIuc2gNCkBAIC01MDcsNiArNTA3LDMwIEBAIHRlc3Rfc29ydF9qc29uICgpIHsNCiAg ICAgICAgICJpbXBvcnQgc3lzLCBqc29uOyBqc29uLmR1bXAoc29ydGVkKGpzb24ubG9hZChzeXMu c3RkaW4pKSxzeXMuc3Rkb3V0KSINCiB9DQogDQorIyB0ZXN0IGZvciBqc29uIG9iamVjdHM6DQor IyByZWFkIHRoZSBzb3VyY2Ugb2YgdGVzdC9qc29uX2NoZWNrX25vZGVzLnB5IChvciB0aGUgb3V0 cHV0IHdoZW4NCisjIGludm9raW5nIGl0IHdpdGhvdXQgYXJndW1lbnRzKSBmb3IgYW4gZXhwbGFu YXRpb24gb2YgdGhlIHN5bnRheC4NCit0ZXN0X2pzb25fbm9kZXMgKCkgew0KKyAgICAgICAgZXhl YyAxPiY2IDI+JjcJCSMgUmVzdG9yZSBzdGRvdXQgYW5kIHN0ZGVycg0KKwlpZiBbIC16ICIkaW5z aWRlX3N1YnRlc3QiIF07IHRoZW4NCisJCWVycm9yICJidWcgaW4gdGhlIHRlc3Qgc2NyaXB0OiB0 ZXN0X2pzb25fZXZhbCB3aXRob3V0IHRlc3RfYmVnaW5fc3VidGVzdCINCisJZmkNCisJaW5zaWRl X3N1YnRlc3Q9DQorCXRlc3QgIiQjIiA+IDAgfHwNCisJICAgIGVycm9yICJidWcgaW4gdGhlIHRl c3Qgc2NyaXB0OiB0ZXN0X2pzb25fbm9kZXMgbmVlZHMgYXQgbGVhc3QgMSBwYXJhbWV0ZXIiDQor DQorCWlmICEgdGVzdF9za2lwICIkdGVzdF9zdWJ0ZXN0X25hbWUiDQorCXRoZW4NCisJICAgIG91 dHB1dD0kKFBZVEhPTklPRU5DT0RJTkc9dXRmLTggJE5PVE1VQ0hfUFlUSE9OICIkVEVTVF9ESVJF Q1RPUlkiL2pzb25fY2hlY2tfbm9kZXMucHkgIiRAIikNCisJCWlmIFsgIiQ/IiA9IDAgXQ0KKwkJ dGhlbg0KKwkJCXRlc3Rfb2tfDQorCQllbHNlDQorCQkJdGVzdF9mYWlsdXJlXyAiJG91dHB1dCIN CisJCWZpDQorCWZpDQorfQ0KKw0KIHRlc3RfZW1hY3NfZXhwZWN0X3QgKCkgew0KIAl0ZXN0ICIk IyIgPSAxIHx8DQogCWVycm9yICJidWcgaW4gdGhlIHRlc3Qgc2NyaXB0OiBub3QgMSBwYXJhbWV0 ZXIgdG8gdGVzdF9lbWFjc19leHBlY3RfdCINCi0tIA0KMi4yMC4xDQoNCg==