From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Ankit Gadiya via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#70939: [PATCH] Add commands to run unit tests in go-ts-mode Date: Wed, 19 Jun 2024 23:47:29 +0530 Message-ID: References: <868r0ajh5j.fsf@gnu.org> <86bk55iw54.fsf@gnu.org> Reply-To: Ankit Gadiya Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000c370c8061b4236f4" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="10328"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Eli Zaretskii , 70939@debbugs.gnu.org To: Randy Taylor Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Jun 19 20:19:24 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sJzu0-0002VL-Ki for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 19 Jun 2024 20:19:24 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sJztd-0005EJ-GG; Wed, 19 Jun 2024 14:19:01 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sJztb-0005Dt-Ul for bug-gnu-emacs@gnu.org; Wed, 19 Jun 2024 14:18:59 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sJztb-0004Sm-Ll for bug-gnu-emacs@gnu.org; Wed, 19 Jun 2024 14:18:59 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1sJzte-0002MK-54 for bug-gnu-emacs@gnu.org; Wed, 19 Jun 2024 14:19:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Ankit Gadiya Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 19 Jun 2024 18:19:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 70939 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 70939-submit@debbugs.gnu.org id=B70939.17188211339046 (code B ref 70939); Wed, 19 Jun 2024 18:19:02 +0000 Original-Received: (at 70939) by debbugs.gnu.org; 19 Jun 2024 18:18:53 +0000 Original-Received: from localhost ([127.0.0.1]:54073 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sJztU-0002Lq-QD for submit@debbugs.gnu.org; Wed, 19 Jun 2024 14:18:53 -0400 Original-Received: from mail-vs1-f43.google.com ([209.85.217.43]:57651) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sJztR-0002LZ-SZ for 70939@debbugs.gnu.org; Wed, 19 Jun 2024 14:18:50 -0400 Original-Received: by mail-vs1-f43.google.com with SMTP id ada2fe7eead31-48db825a82eso26328137.3 for <70939@debbugs.gnu.org>; Wed, 19 Jun 2024 11:18:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=argp.in; s=google; t=1718821061; x=1719425861; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=YA85nC5Xar3xd8K2lwMv69NzWkDgmJ5uDaDrNd+J/2A=; b=Okj1+QlrL6lQTOXLHuPdwHSrreuqACxCQOqEiiQXxTyJDjk4lqj99L/gLHzslTZLS7 exTP2J3W8HtqkcciUBGYgBKwXahXhd3cVf8OJBDg1ItHy25idPuNXIumRX2o6CTdEnZd mxOusZOSHBVrQi4wWhi44EGfNRHQQnaLNUDd0vEMiKIw0D1/txHDd50nVDkDqXPpFG00 YTIdFS02pM8VlEHzxcV+tiCUXjeFHPnnK7BOXB2YR28Qhl6xoG4Grq5JXYPtlN2saas0 vgIoO7L25pShz3/fyuDvMzNz6UexddoB0152VCf6TPFVcDVCNB1wT5dTxyHIqDIVNdli IQZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718821061; x=1719425861; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=YA85nC5Xar3xd8K2lwMv69NzWkDgmJ5uDaDrNd+J/2A=; b=nqomyN65srWynksXHIupEff4mJ35VOVIFgeXDnVicCW3P98f5LOHBd+P4B9jmIJ2O6 Ty2PZfMfgsXtVQXkgz5vzn0+LEf7soP0owVoyAoExIRX0O4i2Lp1+Vq+1BbiosSGulU3 Q1JIXl+tkCe6vEDi6boBI+6dpQl6MhCq2cQm3zS+wW3Dh5ZBaHyqJOzO60pS3/7X2KKy 1LqjUvVedOeFsEgK0kd2W0vklz+07OWYxEd37mTZLrpemMnp00nmAN4MyFe+qqH0J/1J RaVcoj41Bw+d9O6lP0m0DXUlP40cJrApeisD1KkYrMv7M630riwl2pTfp8ZZl+R+gOhE vLJQ== X-Forwarded-Encrypted: i=1; AJvYcCUi8pevEr6DroobGOfGNQVJ8MPZF6xM5ReLDMT+9wJEaFBxZx/omQGbqkFEznL48ppTy/0PMlvNHKQGaDT+vUW4TWUXV5A= X-Gm-Message-State: AOJu0Yzx9uTKCqKx+KjEh4VlM2pKRIqpMqBjsVwuH5JC1/3JWaCfr7tv tdDXAXNJa2TxPPuc5c9vCmpLzn6kPquqB2yD6rJKsA+TElxVlpgX6LADPy5py9Bja8C0WeXzgxk XWc9pIQrwqjVtDH7K9QGsQtyU0a8Hc3+pm9G4Xg== X-Google-Smtp-Source: AGHT+IGwJPFNoBrlxXigjr3GjpdL1tC764GK013qCPBLvIGzqtnJzBt9LLbGCSlPsmVi55YMRdoYEC0PrB4omt8gbRg= X-Received: by 2002:a05:6122:1da8:b0:4eb:5d30:3fad with SMTP id 71dfb90a1353d-4ef277e04ddmr3819177e0c.10.1718821060817; Wed, 19 Jun 2024 11:17:40 -0700 (PDT) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:287496 Archived-At: --000000000000c370c8061b4236f4 Content-Type: text/plain; charset="UTF-8" Apologies for the delay in response. > > > A few quick things I noticed on a glance: > > > > > > + (let* ((node (go-ts-mode--find-defun-at start)) > > > + (name (treesit-defun-name node)) > > > > > > Indentation is off on the name line - looks like a TAB was used? Should only be spaces everywhere. Double check the rest is OK. > > > > > > +region. It is bound to 'C-c C-t' in 'go-ts-mode'. > > > ^ C-c C-t t > > > > > > +package of the current buffer. It is bound to 'C-c C-p' in 'go-ts-mode'. > > > ^ C-c C-t p > > > > > > + "List of go build tags for the test commands." > > > ^ Go > > > > > > + "Return a list with names of all defuns in the range." > > > We should probably say what the range actually is (START to END) - not sure if we have a convention for that wording already. > > > > A few more nits: > > + "Return compile flag for build tags. > > ^ the > > > > +This function respects `go-ts-mode-build-tags' variable for specifying > > ^ the > > > > + "Return a list with names of all defuns in the range." > > ^ the > > > > Indentation is also off in go-ts-mode-test-function-at-point. > > Thanks. I learned about whitespace-mode and checkdoc. I'll be running my changes > through it before sending the path now. Please let me know if there are any > other checks I can do in the future. I've incorporated these suggestions in my updated patch. > > When we run C-c C-t t outside of a function, we get: > > go test -v -run '^nil$' > > Should we maybe not bother running anything at all? What do you think? > > Do we know how other packages behave under similar circumstances? > > I'll check the packages and find out how it is handled elsewhere. One point of > reference can be Doom Emacs configuration. It uses the > re-search-(backward|forward) functions that throw an error if no match is found. I've updated the functions to now raise an error if no function is found at point or under the region. > I'm also planning to add a third function to run all the tests in the current > file using the buffer-beginning and buffer-end as the range. I'll submit it in > the next patch along with the suggested fixes. I've added the go-ts-mode-test-file function as well that runs all the unit tests in the current file. -- Ankit --000000000000c370c8061b4236f4 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Add-commands-to-run-unit-tests-in-go-ts-mode.patch" Content-Disposition: attachment; filename="0001-Add-commands-to-run-unit-tests-in-go-ts-mode.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lxm5o7gv0 RnJvbSBjN2JiNTE0OTFjNTkyNzNmZGMwYjJlZTBlZjM4NTEzMDA3ZDdlYjcwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmtpdCBSIEdhZGl5YSA8Z2l0QGFyZ3AuaW4+CkRhdGU6IFR1 ZSwgMTQgTWF5IDIwMjQgMDA6MTQ6MDMgKzA1MzAKU3ViamVjdDogW1BBVENIXSBBZGQgY29tbWFu ZHMgdG8gcnVuIHVuaXQgdGVzdHMgaW4gZ28tdHMtbW9kZQoKVGhyZWUgbmV3IGNvbW1hbmRzIGFy ZSBhZGRlZCBpbiB0aGUgZ28tdHMtbW9kZSB0byBydW4gdW5pdCB0ZXN0cy4KVGhlIGdvLXRzLW1v ZGUtdGVzdC1mdW5jdGlvbi1hdC1wb2ludCBjb21tYW5kIHJ1bnMgdGhlIGN1cnJlbnQKdGVzdCBm dW5jdGlvbiBhdCBwb2ludCBvciBhbGwgdGhlIGZ1bmN0aW9ucyBpbiB0aGUgYWN0aXZlIHJlZ2lv bgp3aGVuIHJlZ2lvbiBpcyBhY3RpdmUuICBJdCBpcyBib3VuZCB0byAiQy1jIEMtdCB0Ii4gVGhl CmdvLXRzLW1vZGUtdGVzdC1maWxlIGNvbW1hbmQgcnVucyBhbGwgdGVzdHMgaW4gdGhlIGN1cnJl bnQgZmlsZS4gSXQgaXMKYm91bmQgdG8gIkMtYyBDLXQgZiIuIFRoZSBnby10cy1tb2RlLXRlc3Qt cGFja2FnZSBjb21tYW5kIHJ1bnMgYWxsIHRlc3RzCmluIHRoZSBjdXJyZW50IHBhY2thZ2UuICBJ dCBpcyBib3VuZCB0byAiQy1jIEMtdCBwIi4KCiogbGlzcC9wcm9nbW9kZXMvZ28tdHMtbW9kZS5l bCAoZ28tdHMtbW9kZS1idWlsZC10YWdzKTogTmV3IHZhcmlhYmxlLgooZ28tdHMtbW9kZS1tYXAp OiBOZXcgbWFwIHZhcmlhYmxlLgooZ28tdHMtbW9kZS0tZ2V0LWJ1aWxkLXRhZ3MtZmxhZyk6IE5l dyBmdW5jdGlvbi4KKGdvLXRzLW1vZGUtLWNvbXBpbGUtdGVzdCk6IE5ldyBmdW5jdGlvbi4KKGdv LXRzLW1vZGUtLWZpbmQtZGVmdW4tYXQpOiBOZXcgZnVuY3Rpb24uCihnby10cy1tb2RlLS1nZXQt ZnVuY3Rpb24tcmVnZXhwKTogTmV3IGZ1bmN0aW9uLgooZ28tdHMtbW9kZS0tZ2V0LWZ1bmN0aW9u cy1pbi1yYW5nZSk6IE5ldyBmdW5jdGlvbi4KKGdvLXRzLW1vZGUtLWdldC10ZXN0LXJlZ2V4cC1h dC1wb2ludCk6IE5ldyBmdW5jdGlvbi4KKGdvLXRzLW1vZGUtdGVzdC1mdW5jdGlvbi1hdC1wb2lu dCk6IE5ldyBmdW5jdGlvbi4KKGdvLXRzLW1vZGUtdGVzdC1maWxlKTogTmV3IGZ1bmN0aW9uLgoo Z28tdHMtbW9kZS10ZXN0LXBhY2thZ2UpOiBOZXcgZnVuY3Rpb24uCiogZXRjL05FV1M6IE1lbnRp b24gdGhlIGNoYW5nZS4KCihCdWcjNzA5MzkpCi0tLQogZXRjL05FV1MgICAgICAgICAgICAgICAg ICAgICB8IDE2ICsrKysrKysKIGxpc3AvcHJvZ21vZGVzL2dvLXRzLW1vZGUuZWwgfCA4NCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgOTkgaW5z ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05F V1MKaW5kZXggM2IxODk3Mjg2MGYuLjczZmNiNDZmYWQyIDEwMDY0NAotLS0gYS9ldGMvTkVXUwor KysgYi9ldGMvTkVXUwpAQCAtMTM4OSw2ICsxMzg5LDIyIEBAIFRoaXMgY29tbWFuZCBhZGRzIGEg ZG9jc3RyaW5nIGNvbW1lbnQgdG8gdGhlIGN1cnJlbnQgZGVmdW4uICBJZiBhCiBjb21tZW50IGFs cmVhZHkgZXhpc3RzLCBwb2ludCBpcyBvbmx5IG1vdmVkIHRvIHRoZSBjb21tZW50LiAgSXQgaXMK IGJvdW5kIHRvICdDLWMgQy1kJyBpbiAnZ28tdHMtbW9kZScuCiAKKyoqKiBOZXcgdW5pdCB0ZXN0 IGNvbW1hbmRzLgorVHdvIG5ldyBjb21tYW5kcyBhcmUgbm93IGF2YWlsYWJsZSB0byBydW4gdW5p dCB0ZXN0cy4KKworVGhlICdnby10cy1tb2RlLXRlc3QtZnVuY3Rpb24tYXQtcG9pbnQnIGNvbW1h bmQgcnVucyB0aGUgdW5pdCB0ZXN0IGF0Citwb2ludC4gIElmIGEgcmVnaW9uIGlzIGFjdGl2ZSwg aXQgcnVucyBhbGwgdGhlIHVuaXQgdGVzdHMgdW5kZXIgdGhlCityZWdpb24uICBJdCBpcyBib3Vu ZCB0byAnQy1jIEMtdCB0JyBpbiAnZ28tdHMtbW9kZScuCisKK1RoZSAnZ28tdHMtbW9kZS10ZXN0 LWZpbGUnIGNvbW1hbmQgcnVucyBhbGwgdW5pdCB0ZXN0cyBpbiB0aGUgY3VycmVudAorZmlsZS4g SXQgaXMgYm91bmQgdG8gJ0MtYyBDLXQgZicgaW4gJ2dvLXRzLW1vZGUnLgorCitUaGUgJ2dvLXRz LW1vZGUtdGVzdC1wYWNrYWdlJyBjb21tYW5kIHJ1bnMgYWxsIHVuaXQgdGVzdHMgdW5kZXIgdGhl CitwYWNrYWdlIG9mIHRoZSBjdXJyZW50IGJ1ZmZlci4gIEl0IGlzIGJvdW5kIHRvICdDLWMgQy10 IHAnIGluICdnby10cy1tb2RlJy4KKworVGhlICdnby10cy1tb2RlLWJ1aWxkLXRhZ3MnIHZhcmlh YmxlIGlzIGF2YWlsYWJsZSB0byBzZXQgYSBsaXN0IG9mIGJ1aWxkCit0YWdzIGZvciB0aGUgdGVz dCBjb21tYW5kcy4KKwogKiogTWFuIG1vZGUKIAogKysrCmRpZmYgLS1naXQgYS9saXNwL3Byb2dt b2Rlcy9nby10cy1tb2RlLmVsIGIvbGlzcC9wcm9nbW9kZXMvZ28tdHMtbW9kZS5lbAppbmRleCAy ZDNlNmFhYzA5MC4uYjI3NzQyYTA3ODUgMTAwNjQ0Ci0tLSBhL2xpc3AvcHJvZ21vZGVzL2dvLXRz LW1vZGUuZWwKKysrIGIvbGlzcC9wcm9nbW9kZXMvZ28tdHMtbW9kZS5lbApAQCAtNDYsNiArNDYs MTIgQEAgZ28tdHMtbW9kZS1pbmRlbnQtb2Zmc2V0CiAgIDpzYWZlICdpbnRlZ2VycAogICA6Z3Jv dXAgJ2dvKQogCisoZGVmY3VzdG9tIGdvLXRzLW1vZGUtYnVpbGQtdGFncyBuaWwKKyAgIkxpc3Qg b2YgR28gYnVpbGQgdGFncyBmb3IgdGhlIHRlc3QgY29tbWFuZHMuIgorICA6dmVyc2lvbiAiMzAu MSIKKyAgOnR5cGUgJyhyZXBlYXQgc3RyaW5nKQorICA6Z3JvdXAgJ2dvKQorCiAoZGVmdmFyIGdv LXRzLW1vZGUtLXN5bnRheC10YWJsZQogICAobGV0ICgodGFibGUgKG1ha2Utc3ludGF4LXRhYmxl KSkpCiAgICAgKG1vZGlmeS1zeW50YXgtZW50cnkgPysgICAiLiIgICAgICB0YWJsZSkKQEAgLTI0 Miw3ICsyNDgsMTAgQEAgZ28tdHMtbW9kZS0tZm9udC1sb2NrLXNldHRpbmdzCiAoZGVmdmFyLWtl eW1hcCBnby10cy1tb2RlLW1hcAogICA6ZG9jICJLZXltYXAgdXNlZCBpbiBHbyBtb2RlLCBwb3dl cmVkIGJ5IHRyZWUtc2l0dGVyIgogICA6cGFyZW50IHByb2ctbW9kZS1tYXAKLSAgIkMtYyBDLWQi ICMnZ28tdHMtbW9kZS1kb2NzdHJpbmcpCisgICJDLWMgQy1kIiAjJ2dvLXRzLW1vZGUtZG9jc3Ry aW5nCisgICJDLWMgQy10IHQiICMnZ28tdHMtbW9kZS10ZXN0LWZ1bmN0aW9uLWF0LXBvaW50Cisg ICJDLWMgQy10IGYiICMnZ28tdHMtbW9kZS10ZXN0LWZpbGUKKyAgIkMtYyBDLXQgcCIgIydnby10 cy1tb2RlLXRlc3QtcGFja2FnZSkKIAogOzs7IyMjYXV0b2xvYWQKIChkZWZpbmUtZGVyaXZlZC1t b2RlIGdvLXRzLW1vZGUgcHJvZy1tb2RlICJHbyIKQEAgLTM3NSw2ICszODQsNzkgQEAgZ28tdHMt bW9kZS0tY29tbWVudC1vbi1wcmV2aW91cy1saW5lLXAKICAgICAgKDw9ICh0cmVlc2l0LW5vZGUt c3RhcnQgbm9kZSkgcG9pbnQgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkpCiAgICAgIChzdHJpbmct ZXF1YWwgImNvbW1lbnQiICh0cmVlc2l0LW5vZGUtdHlwZSBub2RlKSkpKSkKIAorKGRlZnVuIGdv LXRzLW1vZGUtLWdldC1idWlsZC10YWdzLWZsYWcgKCkKKyAgIlJldHVybiB0aGUgY29tcGlsZSBm bGFnIGZvciBidWlsZCB0YWdzLgorVGhpcyBmdW5jdGlvbiByZXNwZWN0cyB0aGUgYGdvLXRzLW1v ZGUtYnVpbGQtdGFncycgdmFyaWFibGUgZm9yCitzcGVjaWZ5aW5nIGJ1aWxkIHRhZ3MuIgorICAo aWYgZ28tdHMtbW9kZS1idWlsZC10YWdzCisgICAgICAoZm9ybWF0ICItdGFncyAlcyIgKHN0cmlu Zy1qb2luIGdvLXRzLW1vZGUtYnVpbGQtdGFncyAiLCIpKQorICAgICIiKSkKKworKGRlZnVuIGdv LXRzLW1vZGUtLWNvbXBpbGUtdGVzdCAocmVnZXhwKQorICAiQ29tcGlsZSB0aGUgdGVzdHMgbWF0 Y2hpbmcgUkVHRVhQLgorVGhpcyBmdW5jdGlvbiByZXNwZWN0cyB0aGUgYGdvLXRzLW1vZGUtYnVp bGQtdGFncycgdmFyaWFibGUgZm9yCitzcGVjaWZ5aW5nIGJ1aWxkIHRhZ3MuIgorICAoY29tcGls ZSAoZm9ybWF0ICJnbyB0ZXN0IC12ICVzIC1ydW4gJyVzJyIKKyAgICAgICAgICAgICAgICAgICAo Z28tdHMtbW9kZS0tZ2V0LWJ1aWxkLXRhZ3MtZmxhZykKKyAgICAgICAgICAgICAgICAgICByZWdl eHApKSkKKworKGRlZnVuIGdvLXRzLW1vZGUtLWZpbmQtZGVmdW4tYXQgKHN0YXJ0KQorICAiUmV0 dXJuIHRoZSBmaXJzdCBkZWZ1biBub2RlIGZyb20gU1RBUlQuIgorICAobGV0ICgodGhpbmcgKG9y IHRyZWVzaXQtZGVmdW4tdHlwZS1yZWdleHAgJ2RlZnVuKSkpCisgICAgKG9yICh0cmVlc2l0LXRo aW5nLWF0IHN0YXJ0IHRoaW5nKQorICAgICAgICAodHJlZXNpdC10aGluZy1uZXh0IHN0YXJ0IHRo aW5nKSkpKQorCisoZGVmdW4gZ28tdHMtbW9kZS0tZ2V0LWZ1bmN0aW9uLXJlZ2V4cCAobmFtZSkK KyAgKGlmIG5hbWUKKyAgICAgIChmb3JtYXQgIl4lcyQiIG5hbWUpCisgICAgKGVycm9yICJObyB0 ZXN0IGZ1bmN0aW9uIGZvdW5kIikpKQorCisoZGVmdW4gZ28tdHMtbW9kZS0tZ2V0LWZ1bmN0aW9u cy1pbi1yYW5nZSAoc3RhcnQgZW5kKQorICAiUmV0dXJuIGEgbGlzdCB3aXRoIHRoZSBuYW1lcyBv ZiBhbGwgZGVmdW5zIGluIHRoZSByYW5nZSBTVEFSVCB0byBFTkQuIgorICAobGV0KiAoKG5vZGUg KGdvLXRzLW1vZGUtLWZpbmQtZGVmdW4tYXQgc3RhcnQpKQorICAgICAgICAgKG5hbWUgKHRyZWVz aXQtZGVmdW4tbmFtZSBub2RlKSkKKyAgICAgICAgIChub2RlLXN0YXJ0ICh0cmVlc2l0LW5vZGUt c3RhcnQgbm9kZSkpCisgICAgICAgICAobm9kZS1lbmQgKHRyZWVzaXQtbm9kZS1lbmQgbm9kZSkp KQorICAgIChpZiAob3IgKG5vdCBub2RlKQorICAgICAgICAgICAgKD4gc3RhcnQgbm9kZS1lbmQp CisgICAgICAgICAgICAoPCBlbmQgbm9kZS1zdGFydCkpCisgICAgICAgIG5pbAorICAgICAgKGNv bnMgKGdvLXRzLW1vZGUtLWdldC1mdW5jdGlvbi1yZWdleHAgbmFtZSkKKyAgICAgICAgICAgIChn by10cy1tb2RlLS1nZXQtZnVuY3Rpb25zLWluLXJhbmdlICh0cmVlc2l0LW5vZGUtZW5kIG5vZGUp IGVuZCkpKSkpCisKKyhkZWZ1biBnby10cy1tb2RlLS1nZXQtdGVzdC1yZWdleHAtYXQtcG9pbnQg KCkKKyAgIlJldHVybiBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgdGVzdHMgYXQgcG9pbnQuCitJ ZiByZWdpb24gaXMgYWN0aXZlLCB0aGUgcmVnZXhwIHdpbGwgaW5jbHVkZSBhbGwgdGhlIGZ1bmN0 aW9ucyB1bmRlciB0aGUKK3JlZ2lvbi4iCisgIChpZiAocmVnaW9uLWFjdGl2ZS1wKQorICAgICAg KHN0cmluZy1qb2luIChnby10cy1tb2RlLS1nZXQtZnVuY3Rpb25zLWluLXJhbmdlIChyZWdpb24t YmVnaW5uaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChyZWdpb24tZW5kKSkKKyAgICAgICAgICAgICAgICAgICAifCIpCisgICAgKGdv LXRzLW1vZGUtLWdldC1mdW5jdGlvbi1yZWdleHAgKHRyZWVzaXQtZGVmdW4tbmFtZSAodHJlZXNp dC1kZWZ1bi1hdC1wb2ludCkpKSkpCisKKyhkZWZ1biBnby10cy1tb2RlLXRlc3QtZnVuY3Rpb24t YXQtcG9pbnQgKCkKKyAgIlJ1biB0aGUgdW5pdCB0ZXN0IGF0IHBvaW50LgorSWYgdGhlIHBvaW50 IGlzIGFueXdoZXJlIGluIHRoZSB0ZXN0IGZ1bmN0aW9uLCB0aGF0IGZ1bmN0aW9uIHdpbGwgYmUK K3J1bi4gIElmIHRoZSByZWdpb24gaXMgc2VsZWN0ZWQsIGFsbCB0aGUgZnVuY3Rpb25zIHVuZGVy IHRoZSByZWdpb24gd2lsbAorYmUgcnVuLiIKKyAgICAoaW50ZXJhY3RpdmUpCisgICAgKGdvLXRz LW1vZGUtLWNvbXBpbGUtdGVzdCAoZ28tdHMtbW9kZS0tZ2V0LXRlc3QtcmVnZXhwLWF0LXBvaW50 KSkpCisKKyhkZWZ1biBnby10cy1tb2RlLXRlc3QtZmlsZSAoKQorICAiUnVuIGFsbCB0aGUgdW5p dCB0ZXN0cyBpbiB0aGUgY3VycmVudCBmaWxlLiIKKyAgKGludGVyYWN0aXZlKQorICAobGV0ICgo ZGVmdW5zIChnby10cy1tb2RlLS1nZXQtZnVuY3Rpb25zLWluLXJhbmdlIChwb2ludC1taW4pIChw b2ludC1tYXgpKSkpCisgICAgKGlmIGRlZnVucworICAgICAgICAoZ28tdHMtbW9kZS0tY29tcGls ZS10ZXN0IChzdHJpbmctam9pbiBkZWZ1bnMgInwiKSkKKyAgICAgIChlcnJvciAiTm8gdGVzdCBm dW5jdGlvbnMgZm91bmQgaW4gdGhlIGN1cnJlbnQgZmlsZSIpKSkpCisKKyhkZWZ1biBnby10cy1t b2RlLXRlc3QtcGFja2FnZSAoKQorICAiUnVuIGFsbCB0aGUgdW5pdCB0ZXN0cyB1bmRlciB0aGUg Y3VycmVudCBwYWNrYWdlLiIKKyAgKGludGVyYWN0aXZlKQorICAoY29tcGlsZSAoZm9ybWF0ICJn byB0ZXN0IC12ICVzIC1ydW4gJXMiCisgICAgICAgICAgICAgICAgICAgKGdvLXRzLW1vZGUtLWdl dC1idWlsZC10YWdzLWZsYWcpCisgICAgICAgICAgICAgICAgICAgZGVmYXVsdC1kaXJlY3Rvcnkp KSkKKwogOzsgZ28ubW9kIHN1cHBvcnQuCiAKIChkZWZ2YXIgZ28tbW9kLXRzLW1vZGUtLXN5bnRh eC10YWJsZQotLSAKMi4zOS4yCgo= --000000000000c370c8061b4236f4--