From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2 ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id UBerC170dmEFowAAgWs5BA (envelope-from ) for ; Mon, 25 Oct 2021 20:15:58 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2 with LMTPS id eBxLB170dmHYRAAAB5/wlQ (envelope-from ) for ; Mon, 25 Oct 2021 18:15:58 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 6177B246ED for ; Mon, 25 Oct 2021 20:15:57 +0200 (CEST) Received: from localhost ([::1]:42172 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mf4Vo-0005ST-GX for larch@yhetil.org; Mon, 25 Oct 2021 14:15:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56758) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mf4Uw-0005RT-Qq for bug-guix@gnu.org; Mon, 25 Oct 2021 14:15:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:60924) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mf4Uw-0003Td-6I for bug-guix@gnu.org; Mon, 25 Oct 2021 14:15:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mf4Uv-0004TB-To for bug-guix@gnu.org; Mon, 25 Oct 2021 14:15:01 -0400 X-Loop: help-debbugs@gnu.org Subject: bug#51391: Guile-SSH 0.13.1 test suite fails non-deterministically Resent-From: Maxim Cournoyer Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Mon, 25 Oct 2021 18:15:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 51391 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: 51391@debbugs.gnu.org X-Debbugs-Original-To: bug-guix Received: via spool by submit@debbugs.gnu.org id=B.163518569617149 (code B ref -1); Mon, 25 Oct 2021 18:15:01 +0000 Received: (at submit) by debbugs.gnu.org; 25 Oct 2021 18:14:56 +0000 Received: from localhost ([127.0.0.1]:44237 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mf4Up-0004SW-4K for submit@debbugs.gnu.org; Mon, 25 Oct 2021 14:14:56 -0400 Received: from lists.gnu.org ([209.51.188.17]:45474) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mf4Um-0004SO-Ti for submit@debbugs.gnu.org; Mon, 25 Oct 2021 14:14:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56734) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mf4Ul-0005NI-Hs for bug-guix@gnu.org; Mon, 25 Oct 2021 14:14:52 -0400 Received: from mail-qk1-x730.google.com ([2607:f8b0:4864:20::730]:41959) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mf4Uf-0003DG-JA for bug-guix@gnu.org; Mon, 25 Oct 2021 14:14:49 -0400 Received: by mail-qk1-x730.google.com with SMTP id r15so12574278qkp.8 for ; Mon, 25 Oct 2021 11:14:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=6uafYS2NZbUe+cB2UcVYkVkP4g3NULDMXvS7rSi489o=; b=UaWRKFUt36S983Xc1h0j1QzNc5cawLfDXkPxEyZVoSbT3YivDKg0pAxf9j/Tp/HzhO amujQfdUJ2tEcPsv6dZeorF2UJjjD6O1MyF2Ho1c3yhXanM3CgOxunq3Hdw9ItPsl+6v 2FW01tqalQQ6UlUEEsaRrfbxiPIIN+DXL6sY5qL3Af+8ocBdcxWfsYqZ0V+zdBtXPJMp yYMaAuC2m0U4yNGVAcXMQEqrkyOhIItmDQ3Aqf24eQHadGgmufN0QTf29akE3kHSnZtb SOAQ3+Db8p61QeLZoAcQQi+rhwzzgCUvpYGdleYUDIUZ9xQbkGp9Rf8KVP9JM1F7+CCg vF2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=6uafYS2NZbUe+cB2UcVYkVkP4g3NULDMXvS7rSi489o=; b=i/A9TCFmnoB/o2Ic7qTHyg3/LgF+PFjtzOybxOSQKlis2lnv4+3tUo+B3apx68LK2g aGYtWsF4pegXFGqEgjqFKNLiB0CXvVLK3Vd3EMzQBFX0GoJsgx+vsTdyrowLPwGegSCT s4PJzgt+ypSRg3VXJJMtON0ADFF/51v+7ysgCaKNlcTrhbLaUzxT+fw2FHXK0I/s5X4T roHvxbk/mSJyFn3xS+3VzOWr9a8Hl3Nkd1MLsWjHwRTCgYzZxf6zckjm+93Wc01DZOzb yj3zOyAnLrnRLo+En488MWdECwSc/xgUVzgxIAVLL1n6gsKkDT3eVCjyNKbPoN8r4weh hHlA== X-Gm-Message-State: AOAM531IHDZnt0odNZZZZ1mUbt//iS+JMaDO/WtTpfa0iJ38XBf2h+aE P+ZXhmoDWBRjrt9tD4deJ1+IOVXmUkgkUg== X-Google-Smtp-Source: ABdhPJxpIdtTzbW7h3m5GbZi73JuWZDpgEMO4SFNO6lwz8MbEZNq2oI8KQR8MRqazJA9uf+PTrSeBg== X-Received: by 2002:a05:620a:404f:: with SMTP id i15mr14694301qko.460.1635185682937; Mon, 25 Oct 2021 11:14:42 -0700 (PDT) Received: from kwak ([70.50.251.9]) by smtp.gmail.com with ESMTPSA id t11sm8927526qkm.92.2021.10.25.11.14.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Oct 2021 11:14:42 -0700 (PDT) From: Maxim Cournoyer Date: Mon, 25 Oct 2021 14:14:40 -0400 Message-ID: <87pmrtdl9r.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=2607:f8b0:4864:20::730; envelope-from=maxim.cournoyer@gmail.com; helo=mail-qk1-x730.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-guix@gnu.org List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+larch=yhetil.org@gnu.org Sender: "bug-Guix" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1635185757; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:list-id:list-help: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=6uafYS2NZbUe+cB2UcVYkVkP4g3NULDMXvS7rSi489o=; b=JS56326e0T/XFIExk7mUB+KqoAMgv3iil34YhN6roO2A9JAmmjRSOASZmY+8r7AMaK45Ap jasTEW5S+qiZFB+aV6roPBRuU53/GfDE2tDaxLhIDtN1DHJjWIOqu4ZSy8xODwKcqyHOCq LeDDE0wjB6KXLRAmRa0V/cLplNYdXGWPRsHqpgawGirSOPZfPGQG8aUNn7sOd1noYlc1mG NK0Tdp3LOlpoEwWEX4CO7G7PzNIcjGxhi2Wubx515bmMYWPnfpV67n1ymexA34eCHGxLfs hxw9BX5ZHE/LmA7KrU7dB9vFo61msCUqLgGi2NzAN9qDjjAHrBfOTNCzTGDu/A== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1635185757; a=rsa-sha256; cv=none; b=PrHGFjjGw5flaMJA1bsSWg+cysL8jLBF/x7RTpQesgQPJcGRWSKTPYDfq0EH9EyTjwsg/4 EDNdNdR1w/OwFL8Thzsu6vy1c+v5T5dtKOlJY8e7uJF7WEtQOafZcwWTr2MXDY55oh49n6 yvvtXvLkTDu1JPTJNWoIAfnlcli30RqCaCZUw6aq+80kpnmfYxnTKnLNpCSwOQt9MBk6nt oJqBl/0AKANDYmSMc2/kDdod5m6q/QgeiMZftybLV1Knw8rNAV95GQBU4NO+QJ0GJVSRgy rJgjueoEP2jSwUGRp7mAqsI2DaghXILwYAJk3oFxImde4Ys8pW1HW6imQ1CzWA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20210112 header.b=UaWRKFUt; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of bug-guix-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=bug-guix-bounces@gnu.org X-Migadu-Spam-Score: 0.54 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20210112 header.b=UaWRKFUt; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of bug-guix-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=bug-guix-bounces@gnu.org X-Migadu-Queue-Id: 6177B246ED X-Spam-Score: 0.54 X-Migadu-Scanner: scn0.migadu.com X-TUID: /wSGMzKdg5jE Hello Guix! I encountered the following Guile-SSH test failure while testing the core-updates-frozen-batched-changes branch: --8<---------------cut here---------------start------------->8--- Test suite failed, dumping logs. --- ./tests/test-suite.log ------------------------------------------------= -- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Guile-SSH 0.13.1: tests/test-suite.log =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D # TOTAL: 11 # PASS: 10 # SKIP: 0 # XFAIL: 0 # FAIL: 1 # XPASS: 0 # ERROR: 0 .. contents:: :depth: 2 FAIL: session =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D %%%% Starting test session Group begin: session Test begin: test-name: "%make-session" source-file: "tests/session.scm" source-line: 38 source-form: (test-assert "%make-session" (%make-session)) Test end: result-kind: pass actual-value: #@#:22 (disconnected) 7fffe= fd6dfe0> Test begin: test-name: "%make-session, gc test" source-file: "tests/session.scm" source-line: 41 source-form: (test-assert "%make-session, gc test" (begin (set-log-userda= ta! "%make-session, gc test") (let ((max-sessions 1000)) (do ((idx 1 (+ idx= 1))) ((> idx max-sessions)) (when (zero? (euclidean-remainder idx 100)) (f= ormat-log/scm (quote nolog) "" (format #f "~d / ~d sessions created ..." id= x max-sessions))) (%make-session)) #t))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "session?" source-file: "tests/session.scm" source-line: 51 source-form: (test-assert "session?" (let ((session (%make-session)) (x "= string")) (and (session? session) (not (session? x))))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "comparison of sessions" source-file: "tests/session.scm" source-line: 57 source-form: (test-assert "comparison of sessions" (let ((s1 (%make-sessi= on)) (s2 (%make-session))) (and (equal? s1 s1) (not (equal? s1 s2))))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "session-set!, valid values" source-file: "tests/session.scm" source-line: 63 source-form: (test-assert "session-set!, valid values" (let ((session (%m= ake-session)) (options (quasiquote ((host "localhost") (port 22) (bindaddr = "127.0.0.1") (user "Random J. User") (timeout 15) (timeout-usec 15000) (ssh= 1 #f #t) (ssh2 #f #t) (log-verbosity nolog rare protocol packet functions n= olog) (compression-level 1 2 3 4 5 6 7 8 9) (compression "yes" "no") (callb= acks ((user-data . "hello") (global-request-callback unquote (const #f)))))= )) (res #t)) (if (>=3D %libssh-minor-version 8) (set! options (cons (quote = (nodelay #f #t)) options))) (for-each (lambda (opt) (for-each (lambda (val)= (session-set! session (car opt) val)) (cdr opt))) options) res)) Test end: result-kind: pass actual-value: #t Test begin: test-name: "session-set!, invalid values" source-file: "tests/session.scm" source-line: 93 source-form: (test-assert "session-set!, invalid values" (let ((session (= %make-session)) (options (quote ((host 12345 #t) (port "string" -22) (binda= ddr 12345 -12345) (user 12345 -12345) (timeout "string" -15) (timeout-usec = "string" -15000) (ssh1 12345 "string") (ssh2 12345 "string") (log-verbosity= "string" -1 0 1 2 3 4 5) (compression 12345) (compression-level -1 0 10) (= callbacks "not a list" ((global-request-callback . #f)))))) (res #t)) (if (= >=3D %libssh-minor-version 8) (set! options (cons (quote (nodelay 12345 "st= ring")) options))) (for-each (lambda (opt) (for-each (lambda (val) (catch #= t (lambda () (session-set! session (car opt) val) (let* ((r (test-runner-cu= rrent)) (l (test-runner-aux-value r))) (format l " opt: ~a, val: ~a -- pas= sed mistakenly~%" (car opt) val) (set! res #f))) (const #t))) (cdr opt))) o= ptions) res)) Test end: result-kind: pass actual-value: #t Test begin: test-name: "session-set!, invalid option type" source-file: "tests/session.scm" source-line: 130 source-form: (test-error "session-set!, invalid option type" (quote wrong= -type-arg) (let ((session (%make-session))) (session-set! session "non-vali= d type" "value"))) Test end: result-kind: pass actual-error: (wrong-type-arg "session-set!" "Wrong type argument in posi= tion ~A: ~S" (2 "non-valid type") ("non-valid type")) expected-error: wrong-type-arg Test begin: test-name: "session-get" source-file: "tests/session.scm" source-line: 135 source-form: (test-assert "session-get" (let* ((host "example.com") (port= 12345) (user "alice") (proxycommand "test") (callbacks (quote ((user-data = . "test")))) (session (make-session #:host host #:port port #:user user #:i= dentity %rsakey #:proxycommand proxycommand #:callbacks callbacks))) (and (= string=3D? (session-get session (FAIL session.scm (exit status: 139) error: in phase 'check': uncaught exception: %exception #<&invoke-error program: "make" arguments: ("check" "-j" "24") e= xit-status: 2 term-signal: #f stop-signal: #f>=20 phase `check' failed after 4.8 seconds command "make" "check" "-j" "24" failed with status 2 builder for `/gnu/store/4winz6sffwfw5xkvkig1n8chzfxg51an-guile-ssh-0.13.1.d= rv' failed with exit code 1 @ build-failed /gnu/store/4winz6sffwfw5xkvkig1n8chzfxg51an-guile-ssh-0.13.1= .drv - 1 builder for `/gnu/store/4winz6sffwfw5xkvkig1n8chzfxg51an-guile-ssh= -0.13.1.drv' failed with exit code 1 --8<---------------cut here---------------end--------------->8--- It seems easy to trigger it by building tens of times in a row (say, with --rounds=3D100). Here's anothe, different failure: --8<---------------cut here---------------start------------->8--- Test suite failed, dumping logs. --- ./tests/test-suite.log ------------------------------------------------= -- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Guile-SSH 0.13.1: tests/test-suite.log =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D # TOTAL: 11 # PASS: 10 # SKIP: 0 # XFAIL: 0 # FAIL: 1 # XPASS: 0 # ERROR: 0 .. contents:: :depth: 2 FAIL: dist =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D %%%% Starting test dist Group begin: dist Test begin: test-name: "make-node" source-file: "tests/dist.scm" source-line: 44 source-form: (test-assert "make-node" (begin (set-log-userdata! "make-nod= e") (run-client-test (lambda (server) (start-server/exec server (const #t))= ) (lambda () (call-with-connected-session/shell (lambda (session) (let ((n = (make-node session))) (and n (eq? (node-session n) session))))))))) Test end: result-kind: fail actual-value: #f actual-error: (quit 1) Test begin: test-name: "split, 1" source-file: "tests/dist.scm" source-line: 57 source-form: (test-equal "split, 1" (quote ((a b) (c d) (e f g))) (split = (quote (a b c d%%%% Starting test dist (Writing full log to "dist.log") tests/dist.scm:44: FAIL make-node # of expected passes 18 # of unexpected failures 1 lit, 2" source-file: "tests/dist.scm" source-line: 61 source-form: (test-equal "split, 2" (quote ((a))) (split (quote (a)) 2)) Test end: result-kind: pass actual-value: ((a)) expected-value: ((a)) Test begin: test-name: "make-job" source-file: "tests/dist.scm" source-line: 66 source-form: (test-assert "make-job" (begin (set-log-userdata! "make-job"= ) (run-client-test (lambda (server) (start-server/exec server (const #f))) = (lambda () (call-with-connected-session/shell (lambda (session) (let* ((nod= e (make-node session)) (data (quote (1 2 3))) (proc (quote (lambda (n) (#{1= +}# n)))) (j (make-job (quote map) node data proc))) (and (eq? (job-type j)= (quote map)) (eq? (job-node j) node) (eq? (job-data j) data) (eq? (job-pro= c j) proc))))))))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "set-job-node" source-file: "tests/dist.scm" source-line: 85 source-form: (test-assert "set-job-node" (begin (set-log-userdata! "set-j= ob-node") (run-client-test (lambda (server) (start-server/exec server (cons= t #t))) (lambda () (call-with-connected-session/shell (lambda (session) (le= t* ((n1 (make-node session)) (n2 (make-node session)) (data (quote ())) (pr= oc (quote (lambda (n) (#{1+}# n)))) (j1 (make-job (quote map) n1 data proc)= ) (j2 (set-job-node j1 n2))) (and (not (eq? j1 j2)) (eq? (job-type j1) (job= -type j2)) (eq? (job-node j1) n1) (eq? (job-node j2) n2) (eq? (job-data j1)= (job-data j2)) (eq? (job-proc j1) (job-proc j2)))))))))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "hand-out-job, invalid type" source-file: "tests/dist.scm" source-line: 107 source-form: (test-assert "hand-out-job, invalid type" (begin (set-log-us= erdata! "hand-out-job, invalid type") (catch #t (lambda () (run-client-test= (lambda (server) (start-server/exec server (const #t))) (lambda () (call-w= ith-connected-session/shell (lambda (session) (let ((n (make-node session))= ) (hand-out-job (make-job (quote invalid-job) n (quote ()) (const #t)))))))= ) #f) (const #t)))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "assign-eval" source-file: "tests/dist.scm" source-line: 120 source-form: (test-assert "assign-eval" (begin (set-log-userdata! "assign= -eval") (run-client-test (lambda (server) (start-server/exec server (const = #t))) (lambda () (call-with-connected-session/shell (lambda (session) (let*= ((nodes (make-list 2 (make-node session))) (exprs (make-list 10 (quote (la= mbda (x) (#{1+}# x))))) (jobs (assign-eval nodes exprs))) (and (eq? (length= jobs) 2) (eq? (job-type (car jobs)) (quote eval)) (eq? (length (job-proc (= car jobs))) 5))))))))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "rrepl-get-result" source-file: "tests/dist.scm" source-line: 141 source-form: (test-assert "rrepl-get-result" (receive (result eval-num mo= dule-name lang) (call-with-input-string "scheme@(guile-user)> $0 =3D test" = rrepl-get-result) (and (eq? result (quote test)) (=3D eval-num 0) (string= =3D? module-name "(guile-user)") (string=3D? lang "scheme")))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "rrepl-get-result, unspecified" source-file: "tests/dist.scm" source-line: 150 source-form: (test-assert "rrepl-get-result, unspecified" (receive (resul= t eval-num module-name lang) (call-with-input-string "scheme@(guile-user)> = " rrepl-get-result) (and (eq? result *unspecified*) (eq? eval-num *unspecif= ied*) (string=3D? module-name "(guile-user)") (string=3D? lang "scheme")))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "rrepl-get-result, error" source-file: "tests/dist.scm" source-line: 159 source-form: (test-assert "rrepl-get-result, error" (begin (set-log-userd= ata! "rrepl-get-result, error") (catch #t (lambda () (call-with-input-strin= g "scheme@(guile-user)> ERROR: error." rrepl-get-result) #f) (lambda (key .= args) (if (equal? key (quote node-repl-error)) (let* ((message (cadr args)= ) (result (string=3D? message "scheme@(guile-user)> ERROR: error."))) (unle= ss result (format-log/scm (quote nolog) "rrepl-get-result, error" (string-a= ppend "Messages do not match: " "expected \"~a\", got \"~a\"") result "sche= me@(guile-user)> ERROR: error.")) result) (begin (format-log/scm (quote nol= og) "rrepl-get-result, error" (string-append "Errors do not match: " "expec= ted '~a', got '~a' (args: ~a)") (quote node-repl-error) key args) #f)))))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "rrepl-get-result, compilation error" source-file: "tests/dist.scm" source-line: 165 source-form: (test-assert "rrepl-get-result, compilation error" (begin (s= et-log-userdata! "rrepl-get-result, compilation error") (catch #t (lambda (= ) (call-with-input-string (string-append "scheme@(guile-user)> While compil= ing expression:\n" "ERROR: no code for module (module-that-doesnt-exist)") = rrepl-get-result) #f) (lambda (key . args) (if (equal? key (quote node-repl= -error)) (let* ((message (cadr args)) (result (string=3D? message "scheme@(= guile-user)> While compiling expression:\nERROR: no code for module (module= -that-doesnt-exist)"))) (unless result (format-log/scm (quote nolog) "rrepl= -get-result, compilation error" (string-append "Messages do not match: " "e= xpected \"~a\", got \"~a\"") result "scheme@(guile-user)> While compiling e= xpression:\nERROR: no code for module (module-that-doesnt-exist)")) result)= (begin (format-log/scm (quote nolog) "rrepl-get-result, compilation error"= (string-append "Errors do not match: " "expected '~a', got '~a' (args: ~a)= ") (quote node-repl-error) key args) #f)))))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "rrepl-get-result, unbound variable error" source-file: "tests/dist.scm" source-line: 172 source-form: (test-assert "rrepl-get-result, unbound variable error" (beg= in (set-log-userdata! "rrepl-get-result, unbound variable error") (catch #t= (lambda () (call-with-input-string (string-append (string-append "scheme@(= guile-user)> ;;; socket:9:7: warning: " "possibly unbound variable `e'\nsoc= ket:9:7: " "In procedure #:\n" "socket:= 9:7: In procedure module-lookup: Unbound variable: e")) rrepl-get-result) #= f) (lambda (key . args) (if (equal? key (quote node-repl-error)) (let* ((me= ssage (cadr args)) (result (string=3D? message "scheme@(guile-user)> ;;; so= cket:9:7: warning: possibly unbound variable `e'\nsocket:9:7: In procedure = #:\nsocket:9:7: In procedure module-loo= kup: Unbound variable: e"))) (unless result (format-log/scm (quote nolog) "= rrepl-get-result, unbound variable error" (string-append "Messages do not m= atch: " "expected \"~a\", got \"~a\"") result "scheme@(guile-user)> ;;; soc= ket:9:7: warning: possibly unbound variable `e'\nsocket:9:7: In procedure #= :\nsocket:9:7: In procedure module-look= up: Unbound variable: e")) result) (begin (format-log/scm (quote nolog) "rr= epl-get-result, unbound variable error" (string-append "Errors do not match= : " "expected '~a', got '~a' (args: ~a)") (quote node-repl-error) key args)= #f)))))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "rrepl-get-result, unknown # object error" source-file: "tests/dist.scm" source-line: 185 source-form: (test-assert "rrepl-get-result, unknown # object error" (beg= in (set-log-userdata! "rrepl-get-result, unknown # object error") (catch #t= (lambda () (call-with-input-string (string-append "scheme@(guile-user)> $4= =3D " "#@#:22 (disconnected) 453fff>") rre= pl-get-result) #f) (lambda (key . args) (if (equal? key (quote node-repl-er= ror)) (let* ((message (cadr args)) (result (string=3D? message "Reader erro= r: #f: #:1:3: Unknown # object: (\"#<\"): scheme@(guile-user)= > $4 =3D #@#:22 (disconnected) 453fff>"))) = (unless result (format-log/scm (quote nolog) "rrepl-get-result, unknown # o= bject error" (string-append "Messages do not match: " "expected \"~a\", got= \"~a\"") result "Reader error: #f: #:1:3: Unknown # object: = (\"#<\"): scheme@(guile-user)> $4 =3D #@#:2= 2 (disconnected) 453fff>")) result) (begin (format-log/scm (quote nolog) "r= repl-get-result, unknown # object error" (string-append "Errors do not matc= h: " "expected '~a', got '~a' (args: ~a)") (quote node-repl-error) key args= ) #f)))))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "rrepl-get-result, elisp" source-file: "tests/dist.scm" source-line: 194 source-form: (test-assert "rrepl-get-result, elisp" (receive (result eval= -num module-name lang) (call-with-input-string "elisp@(guile-user)> $0 =3D = #nil" rrepl-get-result) (and (eq? result (quote #nil)) (=3D eval-num 0) (st= ring=3D? module-name "(guile-user)") (string=3D? lang "elisp")))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "rrepl-get-result, multiple values" source-file: "tests/dist.scm" source-line: 203 source-form: (test-assert "rrepl-get-result, multiple values" (receive (r= esult eval-num module-name lang) (call-with-input-string "scheme@(guile-use= r)> $0 =3D v1\n$1 =3D v2" rrepl-get-result) (and (vector? eval-num) (vector= ? result) (eq? (vector-ref result 0) (quote v1)) (eq? (vector-ref result 1)= (quote v2)) (=3D (vector-ref eval-num 0) 0) (=3D (vector-ref eval-num 1) 1= ) (string=3D? module-name "(guile-user)") (string=3D? lang "scheme")))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "rrepl-skip-to-prompt, valid input" source-file: "tests/dist.scm" source-line: 217 source-form: (test-assert "rrepl-skip-to-prompt, valid input" (begin (cal= l-with-input-string "Enter `,help' for help." (lambda (port) (rrepl-skip-to= -prompt port))) #t)) Test end: result-kind: pass actual-value: #t Test begin: test-name: "rrepl-skip-to-prompt, invalid input" source-file: "tests/dist.scm" source-line: 224 source-form: (test-assert "rrepl-skip-to-prompt, invalid input" (begin (s= et-log-userdata! "rrepl-skip-to-prompt, invalid input") (catch #t (lambda (= ) (call-with-input-string "invalid input" (lambda (port) (rrepl-skip-to-pro= mpt port))) #f) (lambda (key . args) (let ((result (equal? key (quote node-= error)))) (unless result (format-log/scm (quote nolog) "rrepl-skip-to-promp= t, invalid input" (string-append "Errors do not match: " "expected ~a, got = ~a (args: ~a)") (quote node-error) key args)) result))))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "node-guile-version, valid response" source-file: "tests/dist.scm" source-line: 229 source-form: (test-assert "node-guile-version, valid response" (begin (se= t-log-userdata! "node-guile-version, valid response") (run-client-test (lam= bda (server) (start-server/exec server (const #t))) (lambda () (call-with-c= onnected-session/shell (lambda (session) (format-log/scm (quote nolog) "cli= ent" "session: ~a" session) (let ((n (make-node session))) (string=3D? (nod= e-guile-version n) "GNU Guile 2.2.3")))))))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "with-ssh" source-file: "tests/dist.scm" source-line: 249 source-form: (test-assert "with-ssh" (begin (set-log-userdata! "with-ssh"= ) (run-client-test (lambda (server) (start-server/exec server (lambda (sess= ion message channel) (let ((line (read-line channel))) (format-log/scm (quo= te nolog) "with-ssh" "client request: ~A" line) (write-line "$1 =3D 42\n" c= hannel))))) (lambda () (call-with-connected-session/shell (lambda (session)= (format-log/scm (quote nolog) "client" "session: ~a" session) (let ((n (ma= ke-node session))) (=3D (with-ssh n (+ 21 21)) 42)))))))) Test end: result-kind: pass actual-value: #t Group end: dist # of expected passes 18 # of unexpected failures 1 FAIL dist.scm (exit status: 1) error: in phase 'check': uncaught exception: %exception #<&invoke-error program: "make" arguments: ("check" "-j" "24") e= xit-status: 2 term-signal: #f stop-signal: #f>=20 phase `check' failed after 4.8 seconds command "make" "check" "-j" "24" failed with status 2 builder for `/gnu/store/4winz6sffwfw5xkvkig1n8chzfxg51an-guile-ssh-0.13.1.d= rv' failed with exit code 1 --8<---------------cut here---------------end--------------->8--- Thanks, Maxim