Skip to content

Add a GitHub Actions pipeline checking slendr against upcoming SLiM versions #174

@bodkan

Description

@bodkan

Continuing conversation with @bhaller from here:

@bhaller wrote:

It's actually super useful to have complicated SLiM clients like slendr do early testing prior to a release; you exercise code paths that nobody else exercises, just because you're doing such unusual things in slendr. :-> Perhaps we can try to co-ordinate on that in future? I'd very much appreciate it; I hate catching bugs like this right after a release is done. :-<

[...]

All sounds good. I'm glad one of your unit tests caught this bug, since it slipped through my unit tests completely! :-O It's really difficult to properly test software as complex as SLiM. I wish we had a full-time QC engineer.

I like your GHA idea. To keep it simple, how about a GHA action that just builds everything and runs slendr's standard test suite against a specified branch in SLiM, once a week say? Right now the branch would be master but it would've been multichrom before, and pretty soon it will hopefully be multitrait for the next stage of things. :-> If it's easy, it could just detect the branch where the most recent commit was made, and build/test against that branch. That would be right 99% of the time, and if it's wrong, no worries, it'll be right a week later. :-> Or we can just hard-code master for now, but then I have to remember to let you know when I switch to a side branch for a release. Anyhow, if you know how to do that sort of thing in GHA, that'd be great! GHA is a somewhat opaque black box to me; most of what is set up for SLiM was done by others.

Having thought about this more, I think a good tradeoff between "catching unintended SLiM problems early" and "false positives due to temporary errors due to WIP changes in slendr (and maybe SLiM)" could be this:

  1. Create a macOS GHA instance as close to my own machine (I already have that as part of the normal GHA testing suite).
  2. Install the latest stable slendr release from CRAN.
  3. Clone and compile a specific release tag / branch of SLiM that's worth checking for unintended breakage of backwards compatibility.

Doing 1. makes it easy to immediately verify a problem locally.

Doing 2. avoids testing my potentially broken slendr master HEAD against SLiM (it could be broken for many reasons that have nothing to do with SLiM, because I sometimes make small changes without doing a dedicated branch/PR... I'm not a very disciplined git user).

Doing 3. saves me the trouble of checking potential GHA fails in situations which wouldn't matter that much, which might happen if I'm testing against the branch with the most recent commit (for instance, WIP changes on SLiM's part which are known and would be cleaned up before release). Similarly, together with 2. it would save both of us the time investigating false positives.

However, 3. would depend on you creating, at some point, a tag or branch for a release candidate... but given what you wrote above, it seems that you might be already doing this?

Basically, to sum up: investigating failing GHA logs is easily one of the parts of my job I dislike the most. And I'd like to minimize the time spent looking at GHA logs (and, by extension, minimize the number of GHA runs for this) as possible. Ideally also eliminate the need for manual intervention: for the slendr part, this would be install.packages("slendr"), for SLiM part, this could be git clone https://github.com/messerlab/slim; cd slim; git checkout rc (or some other appropriate name for the release candidate branch/tag that would ideally be always the same, eliminate need for coordination and communication of when should things be tested).

Just some immediate thoughts.

And don't worry about slendr being a hack! Real-world software almost always feel that way to the developers themselves, I think; it is a rare project indeed that has truly clean code. SLiM has a fair bit of messiness internally, even though I do try to keep it clean; and it has a handful of hacks of breathtaking ugliness. Such is life. :-> Don't hesitate to ping me if you think you've found a bug – like this one! The feedback is invaluable. :->

Thanks for the words of encouragement!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions