Closed akirak closed 4 years ago
Apparently, it is necessary to add some explicit information on testing, so I don't believe in zero-configuration testing right now.
Also note that ert-runner
seems to be the test driver of choice among many developers, while there are some people (including me) who prefer buttercup: https://www.reddit.com/r/emacs/comments/hc8y51/ann_a_github_action_for_emacs_lisp_ci/fvdtuof/
It might be possible to start separate projects for linting and testing. While linting can be done with zero configuration (assuming there is a recipe), testing will require some additional configuration and allow for more complex settings for its environment. The linter probably can be standardized once there is an agreement (e.g. among people on MELPA) on what package developers are responsible for, but there will still remain unstandardized settings in testing. Developers have their different, respective criterion on testing.
Nonetheless, testing frameworks could partly benefit from the infrastructure for linting, e.g. for installing dependencies, so it will be useful to think about a generic solution.
I have implemented helper functions for parsing Cask files and MELPA-style recipes in Nix: nix-elisp-helpers. I am also working on another project to get recipes from a local copy of MELPA, which every elisp developer should have on computer. With these stuffs, it will become much easier to set up CIs on existing projects.
I am currently working on a new branch v4 to reduce the code and improve performance issues of the previous version. It reflects the ideas described in this ticket. It is mostly written in Nix and bash.
It looks much better than before, so I'll close this issue.
The current schema has a lot of fields. Most of them can be configured interactively using the Emacs frontend, but having more fields means more manual work in maintenance.
I am not sure if I am going to work on the next version of this program, but I will track information on how it could be simplified in case someone else may develop an alternative.
An assumption is that a MELPA recipe seems to be necessary, given that the service is the current de-facto standard package registry for developers. As a proof, both melpazoid and keg.el take a recipe as input.
pname
can be derived from the recipeversion
looks unnecessary. It is mostly used for checking version consistency in multi-file packages.files
can be derived from the recipe if it is specifiedemacsVersion
can be read from the package headerlocalDependencies
can be load from the package configuration itselfdependencies
: https://github.com/nix-community/emacs-overlay/pull/38 looks promisingtestDrivers
ertTests
buttercupTests
testDependencies
is (partly) equivalent todevDependencies
in Cask, so it can be detected ifCask
file is availabletestExcludes
mainFile
can be guessed from the package namerecipe
can be downloaded from MELPA once it is published, but it would be better to set it locallyAn ideal solution would be to have no configuration file at all, but I am susceptible if it is possible.