0

I'm writing an emacs package for Pipenv and the spike solution uses sync shell calls, which is not desirable for general usage. I'm now changing calls to be async (make-process) and for output to go to a dedicated buffer. This is all good and works. However, I now want to update my test suite. I'm not sure on the best (practice) way to:

  1. Wait on the output of make-process for testing purposes. I am using accept-process-output but it does not return the actual output, only t.
  2. Related, perhaps provide a custom filter for use in testing that collects the output into a value I can return and do assertions against.

What is the best way to test output that is normally sent to a buffer via an async shell command call?

  • If you want to use make-process you need a process-filter or/and process-sentinel. You should look at other packages how this is done. I would suggest to use xref. You have to set a filter/sentinel for a process and they receive the process and the output as arguments. It's really convenient to look at the output of a process this way. – bertfred Dec 19 '17 at 15:22
0

I've found that the best way to do this is to use a custom filter for tests. This custom filter sets the process output in a variable. Using accept-process-output I can ensure the process has run, and then do test assertions against the variable.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.