/CSIS

Code Safety Inspection Service

MIT LicenseMIT

CSIS

🕵️ Code Safety Inspection Service

In short

Many bioinformatics projects do not use unit testing. Without unit testing, it is difficult to ensure which bioinformatics software is in working order, or which bioinformatics software adheres to basic standards. We are adding basic unit tests for bioinformatics software here using the GitHub Actions platform.

Current software

Software badge with link to CI version badge yaml
This repo CSIS Tested Version CSIS.yml
Genotyphi genotyphi Tested Version genotyphi.yml
Kraken kraken Tested Version kraken.yml
KrakenUniq krakenuniq Tested Version krakenuniq.yml
Kraken2 kraken2 Tested Version kraken2.yml
Centrifuge centrifuge Tested Version centrifuge.yml
Prokka prokka Tested Version prokka.yml
Quast quast Tested Version quast.yml
chewBBACA chewBBACA Tested Version chewbbaca.yml
Pangolin pangolin Tested Version pangolin.yml
SKESA SKESA Tested Version skesa.yml
Shovill shovill Tested Version shovill.yml

Long story

Why is this useful?

If you have a project hosted on GitHub, you want to make sure it keeps working even if your code evolves through time. You push your own changes to the project and other people might fork your code and open pull requests. Checking whether the updated code works as expected is a repetitve task, and can be automated. However, this automated testing is missing from a lot of current projects.

How does automated testing work?

GitHub Actions offers automated testing of code, which get triggered by certain events (e.g. pull requests). A new virtual machines is started on GitHub-hosted servers, on which the code gets installed and subsequently runs through a number of tests. Several virtual machine configurations are available, allowing users to test their code in a wide range of environments (e.g. different operating systems or using different versions of Python). You can also choose to host your own custom virtual machine for testing, if this is necessary. The exact automated testing workflow is defined in a .yml file, which describes the configuration of the system(s) you want to test on, the code and version you want to test, and the commands that make up the tests themselves.

For more information on GitHub Actions, see the documentation.

For test ideas and examples using Prokka and Quast, see EXAMPLES.md.

Why is this a cool idea for a hackathon?

  • Multiple widely-used tools could benefit from automated testing.
  • This is a process that can be crowdsourced well.
  • Participants learn valuable skills that can be brought back to their own projects.
  • Early warning system for software that is breaking

Why GitHub Actions?

There are many continuous integration (CI) platforms available. Examples include CircleCI, Travis, Galaxy's Planemo or Jenkins. While many of these platforms offer the same or highly similar functionalities, GitHub Actions offers a couple of advantages:

  1. Actions fully integrates with GitHub
  2. Actions is completely free for public repositories, including running builds and tests on GitHub servers
  3. Actions provides many premade configurations on Marketplace

Based on these characteristics, we think that GitHub Actions is a great way to learn CI and unit testing.

Contributing

Please see CONTRIBUTING.md

Register your team at TEAMS.md

Practicalities

Please see HACKATHON.md for information on the teams, schedule, communication and other practicalities.

Etymology

CSIS is a play on the acronym for the United States Food Safety Inspection Service. Additionally, it has CSI in the acronym (Crime Scene Investigation) which has a sort of detective feel to it.