Skip to content

Eldev test can fail if there is extra lines in the output of packaging child process #67

Open
@ikappaki

Description

@ikappaki

Hi,

the cider project circle ci windows tests started to unexpectedly fail recently , caused by what it appears to be extra space in the output of the child process while creating the project's package:

eldev -dtT -p test

[00:01.343]  Started up on Tue Feb 15 20:17:44 2022
[00:01.343]  Running on GNU Emacs 27.2 (build 1, x86_64-w64-mingw32)
              of 2021-03-26
[00:01.343]  Project directory: `c:/Users/circleci/project/'
...
[00:17.695]  Full command line (in directory `c:/Users/circleci/project/'):
               c:/Users/circleci/.local/bin/eldev.bat package --output-dir c:/Users/circleci/project/.eldev/27.2/local/generated --print-filename
[00:36.443]  Output of the child Eldev process:
[00:36.443]  PACK     -> .eldev/27.2/local/generated/cider-1.3.0snapshot.tar
             c:/Users/circleci/project/.eldev/27.2/local/generated/cider-1.3.0snapshot.tar
             generated
             Bootstrapping Eldev for Emacs 27.2 from MELPA Stable...
             
             
[00:36.443]  All project dependencies (including those for set `test') have been installed already or are local
[00:36.443]  (Re)installing project package `cider'...
[00:36.507]  Debugger entered--Lisp error: (file-missing "Opening input file" #("No such file or directory" 0 25 (charset cp437)) "c:/Users/circleci/project/Bootstrapping Eldev for Emacs 27.2 from MELPA Stable...")
               insert-file-contents("Bootstrapping Eldev for Emacs 27.2 from MELPA Stable..." nil nil nil nil)
               insert-file-contents-literally("Bootstrapping Eldev for Emacs 27.2 from MELPA Stable...")
               package-install-file("Bootstrapping Eldev for Emacs 27.2 from MELPA Stable...")
               eldev--package-install-file("Bootstrapping Eldev for Emacs 27.2 from MELPA Stable...")
               eldev-install-package-file("Bootstrapping Eldev for Emacs 27.2 from MELPA Stable...")
               #f(compiled-function (original dependency &rest rest) #<bytecode 0x14eddb5>) ...
               apply(#f(compiled-function (original dependency &rest rest) #<bytecode 0x14eddb5>) ) ...
               package-activate-1(#s(package-desc :name cider :version (1 3 0 -4) :summary nil :reqs ((emacs (26)) (clojure-mode (5 12)) (parseedn (1 0 6)) (queue (0 2)) (spinner (1 7)) (seq (2 22)) (sesman (0 3 2))) :kind single :archive "--eldev--" :dir nil :extras nil :signed nil) nil deps)
               package-activate(cider)
               eldev--do-activate-dependencies(cider ((:package cider :archives (("--eldev--" . "c:/Users/circleci/project/.eldev/27.2/packages/archives/--eldev--/") ("melpa-unstable" . "https://melpa.org/packages/") ("gnu" . "https://elpa.gnu.org/packages/")))) (test) nil)
               eldev--install-or-upgrade-dependencies(project (test) nil nil t nil nil)
               eldev-load-project-dependencies(test)
               eldev--do-test(nil nil)
               eldev-test()
               apply(eldev-test nil)
               eldev-cli((#("-dtT" 0 4 (charset cp437)) #("-p" 0 2 (charset cp437)) #("test" 0 4 (charset cp437))))
               (kill-emacs (eldev-cli (append (cdr (member "--" command-line-args)) nil)))
               eval((kill-emacs (eldev-cli (append (cdr (member "--" command-line-args)) nil))) t)
               command-line-1((#("--execute" 0 9 (charset cp437)) ...))
               command-line()
               normal-top-level()
...

It appears the extra bootstrap line in the child's output confuses Eldev which instead of trying to locate the file at c:/Users/circleci/project/.eldev/27.2/local/generated/cider-1.3.0snapshot.tar it tries to locate it in Bootstrapping Eldev for Emacs 27.2 from MELPA Stable....

Irrespective as to why the child process tries to reboostrap Eldev, should we improve the relevant code to gracefully handle extra output in the child process, perhaps by using a pattern to scan for the package location rather than offsetting from the last line?

(when (string= (car command) "package")
                (goto-char (point-max))
                (forward-line -2)
                (let ((point (point)))
                  (end-of-line)
                  (let ((file (buffer-substring-no-properties point (point))))
                    (forward-line)
                    (push `(,dependency-name ,file ,(looking-at "up-to-date")) eldev--local-dependency-packages))))

circle ci log file at https://gist.github.com/ikappaki/76d7d81e363a0f9244b2374d62d11a89#file-issue-eldev-circleci-cider-test-output-boot-log.

Thanks

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions