Skip to main content

A simple commandline app for testing standard input/output applications.

Project description

VIVAL

Command line app to validate standard I/O applications on series of tests.

Installation

Everything should work on Linux, Windows and MacOS with Python 2.7+ versions. Also having C/C++ compiler installed is recommended but isn't required.

Using Pip

  $ pip install vival

Manual

  $ git clone https://github.com/ViktorooReps/vival
  $ cd vival
  $ python setup.py install

Usage

Testing

VIVAL supports compiling C/C++ source code with gcc/g++ compilers. Make sure you have them installed and available through CLI.

vival <executable or source code> -t <path/tests.txt>

Here are some flags you may find useful:

  • -t <path/tests.txt> to specify path to text file with tests (required).
  • -nt <INTEGER> to set the number of failed tests displayed.
  • -o <path/output.txt> if specified, will write all tests to output.txt (recommended in fill mode).

Creating your own tests

All the tests file structure condenses to pairs (tag, tagged text), where tag specifies the use of it's text.

Tags and their meaning (some tags might not be available on earlier versions of VIVAL) for v2.4:

Tag Category Tagged text meaning
INPUT Test What will executed program get on stdin.
CMD Test Command line arguments with which the program will be executed.
OUTPUT Test Expected contents of stdout.
COMMENT Test Some commentary on test that will be displayed if program fails it.
MAIN File Some auxillary code (usually just int main() { ... }) that will be compiled and linked with given source code (ignored if executable is given as argument).
FLAGS File Flags that will be passed to compiler.
DESCRIPTION File Description of tests file.
STARTUP Test Shell commands that will be executed before test.
CLEANUP Test Shell commands that will be executed after test.

The body of tests file consists of repeating sections of "wild space" and bracketed text: <...WS...>/{<...text...>}/ . Wild space is mostly skipped apart from tags that will define meaning of text in brackets. The text in brackets stays unformatted.

So, for example:

The text that is going to be skipped
INPUT
This will be skipped as well /{1 2 3}/

Will be converted to pair (INPUT, "1 2 3").

If there are multiple tags only the last one will define bracketed text's meaning.

There are two categories of tags: the ones that define some features of a particular test and the ones that define features of an entire tests file. Only one definition of each feature is allowed, so when multiple File feature definitions are present in file, the last one is used. Redifinitions of Test features mark the beginning of a new test.

For example, file with such contents:

DESCRIPTION /{Description 1}/
DESCRIPTION /{Description 2}/ <- DESCRIPTION is redefined

COMMENT /{Empty test}/

MAIN /{int sum(int a, int b) { return a + b; }}/

COMMENT <- the start of a new test
/{Some other test}/
INPUT
/{1}/
OUTPUT
/{}/

Will be translated to File features: {(DESCRIPTION, "Description 2"), (MAIN, "int sum(int a, int b) { return a + b; }")}, and two tests: {(COMMENT, "Empty test")} and {(COMMENT, "Some other test"), (INPUT, "1"), (OUTPUT, "")}

Tests without OUTPUT feature are considered unfilled and VIVAL wont't run given program on them. These tests can be filled in manually or using another executable.

Filling in

Fill mode activates with flag -m:

vival <executable or source code> -t <path/tests.txt> -m fill

VIVAL in fill mode runs given executable on unfilled tests, saving the output from stdout.
But it will be lost unless -o <path/output.txt> is specified:

vival <executable or source code> -t <path/tests.txt> -m fill -o <path/output.txt>

In which case executable's output on a test will be saved as OUTPUT feature of test and then resulting filled tests will be written to output.txt.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vival-3.0.0.tar.gz (11.1 kB view details)

Uploaded Source

Built Distributions

vival-3.0.0-py3.9.egg (19.6 kB view details)

Uploaded Source

vival-3.0.0-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

File details

Details for the file vival-3.0.0.tar.gz.

File metadata

  • Download URL: vival-3.0.0.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/52.0.0.post20210125 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.1

File hashes

Hashes for vival-3.0.0.tar.gz
Algorithm Hash digest
SHA256 9763ec00c148335c5370a21923fe8d4ffa9c4bbc9ea783102e815d70a632afe7
MD5 ce87771af1ef3be606a10c7f647c395a
BLAKE2b-256 4601486db862c51e4b65b289b397453c4b536d3c6a6f21c65baccf995242c30c

See more details on using hashes here.

File details

Details for the file vival-3.0.0-py3.9.egg.

File metadata

  • Download URL: vival-3.0.0-py3.9.egg
  • Upload date:
  • Size: 19.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/52.0.0.post20210125 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.1

File hashes

Hashes for vival-3.0.0-py3.9.egg
Algorithm Hash digest
SHA256 20e04bf6ac5a2713f3358946ea02727c3fe254d3e3ac16ae098959c01fb8040b
MD5 0ce0f7c79e62d3f5471adf2abe3da835
BLAKE2b-256 a848877674608fd11082865eb48559aef5eb00b3cd91eea5e5beffe35e866db7

See more details on using hashes here.

File details

Details for the file vival-3.0.0-py3-none-any.whl.

File metadata

  • Download URL: vival-3.0.0-py3-none-any.whl
  • Upload date:
  • Size: 10.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/52.0.0.post20210125 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.1

File hashes

Hashes for vival-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 945fe1e964c97962c5201f920a3deb3ff28d7e33c5ee570ce52eb2cb1c332119
MD5 703b9abb3e98a25468aa3641a922c284
BLAKE2b-256 3744e911565de9ba19fb4c56c134bb9c86e4fb812f366172e8fbddf3e13e33a8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page