Skip to content

Latest commit

 

History

History
84 lines (51 loc) · 2.36 KB

HACKING.md

File metadata and controls

84 lines (51 loc) · 2.36 KB

Hacking

Random development info...

Code Coverage

Use @@@coverage off/on around types with ppx generated code. E.g.,

[@@@coverage off]

type t = A | B [@@deriving sexp]

[@@@coverage on]

Use [@coverage off] around impossible cases. Use it with impossible or invalid_argf.

let x = 1

if x > 0 then
  x
else
  Utils.impossible "x can't be negative here" [@coverage off]

GitHub Actions

External software versions

The versions of mafft and ncbi blast are the same as on my local machine. MMseqs is the same version, but with sse2 instead.

Keep them this way unless you change them locally, or you change the tests to not be so coupled to their specific output.

Cram tests

If you have tests that depend on whitespace generated by linux utils (e.g., when using uniq -c for counts.), you need to normalize it so the tests will pass on both linux and macOS.

stdin

You cant use the - for stdin on the macOS. You need to use /dev/stdin for the tests to work on both. So like this:

# Bad
blah | ../scripts/redact_git_hash -

# Good
blah | ../scripts/redact_git_hash /dev/stdin

Version numbers

When you increment the version, you need to change it in the dune-project and in Config.Version.intein_finder_version. Make sure you also rebuild the project to update the opam file as well.

Integer indexing

  • All integer indices should be printed as 1-indexed.

Building

When building for release, use the *_release just tasks. It adds the commit info. Note that you will often need to run just clean first, to get a true build.

The *_dev builds also add the git commit info now. Running dune directly does not.

Dependencies

If you modify a dependency in the dune-project (and so, the opam file). You will need to update the sandbox and the lock file.

opam install . --deps-only --with-doc --with-test # May not need this depending on what you're doing.
opam lock ./InteinFinder.opam

Do NOT use --locked here...because the lock will probably be outdated.

tiny_config

You will need to pin this whenever it updates (change the version), and also update the lock file as needed.

opam pin add tiny_config https://github.com/mooreryan/tiny_config/archive/refs/tags/0.0.2.tar.gz
opam pin add tiny_toml https://github.com/mooreryan/tiny_config/archive/refs/tags/0.0.2.tar.gz