About Harper's Test Suite

Harper's goal is to deliver top-tier grammar checking fast, without compromising privacy. How do we maintain quality while also iterating quickly on our core engine?

As you know, Harper's core engine is written in Rust. As a corollary to that, we use Cargo to pull dependencies, build, and test the system. While we do take advantage of snapshot and integration tests, we tend to focus our efforts on unit tests.

Performance

In the interest of maintaining fast iteration cycles, we run our tests with opt-level = 1. These optimizations are known to cause issues with debuggers. If you plan to use one, you may want to comment them out.

[workspace]
members = ["harper-cli", "harper-core", "harper-ls", "harper-comments", "harper-wasm", "harper-tree-sitter", "harper-html", "harper-literate-haskell", "harper-typst", "harper-stats", "harper-pos-utils", "harper-brill", "harper-ink", "harper-python", "harper-jjdescription", "fuzz"]
resolver = "2"

[profile.test]
opt-level = 3

[profile.release]
opt-level = 3
# Stripping binaries triggers a bug in `wasm-opt`.
# Disable it for now.
# strip = true

# Release profile with debug info.
# Useful for debugging and profiling.
[profile.release-debug]
inherits = "release"
debug = 2
toml

Other Reading

Last update at: Invalid Date