provola 0.2.0

A tool for quick development/test cycle in any language
provola-0.2.0 is not a library.

Provola

Test it!Provalo! → Provola!

Provola Logo

provola is your best cheese friend when you need to test code quickly.

Input/Output test

Just create an input file, an expected output file and a program to digest the input and provola will test your program automatically whenever you change the code.

# Create a simple haskell program
echo 'main = interact reverse' > reverse.hs

# An input for your nice program
echo -n abcd > in.txt

# The expected output
echo -n dcba > out.txt

# Run provola!
provola -i in.txt -o out.txt -s reverse.hs -w .

Where:

  • -i is the input file
  • -o is the expected output file
  • -s is the source code
  • -w is the file or directory to watch for changes

Supported languages

Language Build Run
Bash /
C++ gcc
C gcc
Haskell stack ghc
JavaScript node
PHP
Python
Rust rustc

Test frameworks

provola is able to use test runners generated by popular test frameworks.

Example:

provola -T GoogleTest -t path/to/gtest/executable

GoogleTest example

Where:

  • -T is the test runner type (e.g.: GoogleTest, Catch2, ...)
  • -t is the executable to run

You don't need to specify what files to watch, because in this case provola is automatically watching changes in the test runner (not the sources!).

You can also find an example of GoogleTest runner inside provola-googletest/examples/data/

This is a (work in progress) list of supported frameworks:

Framework Language
Google Test C++
Catch2 C++

Install

If you have a rust toolchain, just clone this project and from the root directory:

cargo install --path .

egui feature, which provides a GUI, is enabled by default. You can disable it:

cargo install --no-default-features --path .

Arch Linux

You can install the provola package from aur:

yay -S provola

Shell auto completion

provola provides shell autocompletion for even faster usage.

You can install autocompletion for yout favourite shell:

provola --shell-compl zsh > ~/.zfunc/_provola