This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

porunga is a test framework for simple algorithms

Project Description

porunga is a tool for algorithms testing.


In order to install porunga simply run:

pip install porunga


Basically we need specific files structure to test our algorithms:


Here, foobar is our problem name - it should be same for parent the directory and coded solution (here we have but it can be other language - see supported languages below; i.e. for Java we would create file)

At ./foobar/ directory we would run:

$ porunga test --lang python

See help for more options (you can see supported languages there too):

$ porunga test -h

If we want to set time constraints for tests we can use --timeout switch. In example, if we need tests to run below 2.5 seconds we can run:

$ porunga test --timeout 2.5

Please note that very low timeout value is not supported. Moreover,

Supported languages

Currently porunga supports following languages:


Java source file should be named same as parent directory and should contain public class with same name. So if our problem is called foobar we would create file with foobar named public class.


Let’s say we have a following problem to solve:


At input we get two integers: n, m, where 1 <= n < m <= 100000. Your program should write to output all Fibonacci numbers between n and m (including both). Numbers at output should be space separated.


INPUT  1: 3 5
OUTPUT 1: 2 3 5

INPUT  2: 6 10
OUTPUT 2: 8 13 21 34 55

Firstly, let’s make a directory for our solution:

$ mkdir fibs
$ cd fibs

Let’s also create a testdata directory (exact name should be used) and put there some test cases:

$ mkdir testdata
$ echo '3 5' > testdata/
$ echo '2 3 5' > testdata/test01.out
$ echo '6 10' > testdata/
$ echo '8 13 21 34 55' > testdata/test02.out

Note that test inputs and outputs should have .in and .out extensions respectively.

Now let’s create our solution - we can pick any of the supported languages but for sake of this tutorial let it be Python module. Create one (empty for now):

$ touch

We should have following files created by now:


That’s it. We can now run porunga inside fibs directory and see our solution being tested against created test cases:

$ porunga test
Testing ./fibs

=> Binary: python /Users/lukasz/temp/fibs/

=> Testing ./fibs/testdata/ ... Fail
=> Testing ./fibs/testdata/ ... Fail

=> Total time: 0.058s
=> 2 out of 2 tests failed

Well, we get 2 tests failed but we haven’t actually coded anything yet. Just put following code into

import fileinput
import re
import sys

def fib(n):
    if n in (1, 2):
        return 1
    a = b = 1
    for x in range(3, n + 1):
        a, b = b, a + b
    return b

def main():
    fin = fileinput.input()
    n, m = map(int, re.findall(r'\d+', fin.readline()))
    fibs = [str(fib(num)) for num in range(n, m + 1)]
    result = ' '.join(fibs)

if __name__ == '__main__':

(this is not optimal code as we compute Fibonacci numbers each time but it can be easily upgraded)

Let’s run tests again:

$ porunga test
Testing ./fibs

=> Binary: python ./fibs/

=> Testing ./fibs/testdata/ ... OK [0.030]s
=> Testing ./fibs/testdata/ ... OK [0.033]s

=> Total time: 0.063s
=> All 2 tests passed
Release History

Release History

This version
History Node


History Node


History Node


History Node


History Node


Download Files

Download Files

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

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
porunga-0.9.3-py27-none-any.whl (20.1 kB) Copy SHA256 Checksum SHA256 2.7 Wheel Nov 22, 2013
porunga-0.9.3.tar.gz (13.6 kB) Copy SHA256 Checksum SHA256 Source Nov 22, 2013

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting