squ is a simple enough tool to squeeze
your test suites and speed up testing cycle based on code diff.
Before vs After
Before: I have to run all the cases for even a tiny change, which takes 40 minutes. Which means 0.32 USD per push.
$ pytest --collect-only
============================= test session starts ==============================
platform darwin -- Python 3.7.4, pytest-7.2.2, pluggy-0.12.0
rootdir: /Users/fengzhangchi/github_workspace/stagesepx
plugins: cov-2.7.1
collected 45 items
...
========================= 45 tests collected in 15.30s =========================
After: Only need to run the influenced cases.
$ ./squ | xargs pytest --collect-only
============================= test session starts ==============================
platform darwin -- Python 3.7.4, pytest-7.2.2, pluggy-0.12.0
plugins: cov-2.7.1
collected 5 items
...
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
========================= 5 tests collected in 14.93s ==========================
All you need is simply adding the ./squ | xargs
prefix.
Usage
Language | Before | After |
---|---|---|
Python | pytest |
squ | xargs pytest |
Java | mvn test |
squ | xargs mvn test |
Golang | go test |
squ | xargs go test |
But brings much benefits:
Repo | Language | Analyze time | Before Cases | After Cases | Optimize |
---|---|---|---|---|---|
stagesepx (our own case) | Python | ~1 s | 45 | 0~15 | ~75% |
Jacoco | Java | ~7 s | 1364 | 0~983 | ~50% |
sibyl2 | Golang | ~1 s | 53 | 0~20 | ~70% |
See https://github.com/opensibyl/squ for details!
Top comments (0)