byexample
is a literate programming engine where you mix
ordinary text and snippets of code in the same file and then you
execute them as regression tests.
It lets you to execute the examples written in Python
, Ruby
or whatever
in your documentation and validate them.
You can always be sure that the examples are correct and your documentation is up to date!
First, you need to install it:
$ pip install byexample # install it # byexample: +skip
Or if you prefer, you can install it inside a virtual env.
If you don't have pip
or python
installed, check the
download page.
That's it! Now, write a tutorial, a blog or a how-to and put some examples
in between (like this README.md
that you are reading);
All the snippets and examples will be collected, executed and checked.
$ byexample -l python,ruby,shell README.md # run it # byexample: +skip
[PASS] Pass: <...> Fail: <...> Skip: <...>
Several languages are supported like Python
, Ruby
and C++
along with others.
Take at look at the official web page: https://byexamples.github.io
Some quick links:
Currently we support:
More languages will be supported in the future. Stay tuned.
First off, thanks for using and considering contributing to byexample
.
We love to receive contributions from our community. There are tons of ways you can contribute
- add support to new languages (Javascript, Julia, just listen to you heart). Check this how to.
- misspelling? Improve to the documentation is more than welcome.
- add more examples. How do you use
byexample
? Give us your feedback! - is
byexample
producing a hard-to-debug diff or you found a bug? Create an issue in github.
But don't be limited to those options. We keep our mind open to other useful contributions: write a tutorial or a blog, feature requests, social media...
Check out our CONTRIBUTING guidelines and welcome!
It is possible to extend byexample
adding new ways to find examples in a
document and/or to parse and run/interpret a new language or adding hooks to be
called regardless of the language/interpreter.
Check out how to support new finders and languages and how to hook to events with concerns for a quick tutorials that shows exactly how to do that.
You could also share your work and contribute to
byexample
with your extensions.
We use semantic version for the core or engine.
For each module we have the following categorization:
experimental
: non backward compatibility changes are possible or even removal between versions (even patch versions).provisional
: low impact non backward compatibility changes may occur between versions; but in general a change like that will happen only between major versions.stable
: non backward compatibility changes, if happen, they will between major versions.deprecated
: it will disappear in a future version.
See the latest releases and tags
Current version:
$ byexample -V
byexample 8.1.3 (Python <...>) - GNU GPLv3
<...>
Copyright (C) Di Paola Martin - https://byexamples.github.io
<...>
This project is licensed under GPLv3
$ head -n 2 LICENSE # byexample: +norm-ws
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
See LICENSE for more details.