Add new rule 'build-rpm-all' to the Makefile.

Add rule to build both source and binary RPMs.

Signed-off-by: Ruda Moura <rmoura@redhat.com>
Merge pull request #48 from ruda/makefile_build_rpm

Add new rule 'build-rpm-all' to the Makefile.
avocado: Fix bug where an exception.TestError reports PASS

An oversight happened when writing the output plugins made
the ERROR status to be ignored and reported as PASS.
This patch fixes this problem.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
avocado: Introduce handling of non existent tests

When tests don't exist, current avocado breaks on
a very spectacular fashion:

Traceback (most recent call last):
  File "scripts/avocado", line 29, in <module>
    sys.exit(app.run())
  File "/home/lmr/Code/avocado2/avocado/cli/app.py", line 72, in run
    return self.args.func(self.args)
  File "/home/lmr/Code/avocado2/avocado/plugins/runner.py", line 106, in
run_tests
    return job_instance.run()
  File "/home/lmr/Code/avocado2/avocado/job.py", line 111, in run
    test_instance = self.run_test(url)
  File "/home/lmr/Code/avocado2/avocado/job.py", line 76, in run_test
    test_instance = self._load_test_instance(url)
  File "/home/lmr/Code/avocado2/avocado/job.py", line 63, in
_load_test_instance
    f, p, d = imp.find_module(url, [test_module_dir])
ImportError: No module named bogustest

We should be of course more classy when such a problem happens.
Introduce a NonExistentTest class to handle such problems,
and use it when the ImportError happens. The end result is
a lot better:

DEBUG LOG: /home/lmr/avocado/logs/run-2014-04-29-13.12.34/debug.log
TOTAL TESTS: 1
(1/1) bogustest.1:  ERROR (0.10 s)
TOTAL PASSED: 0
TOTAL ERROR: 1
TOTAL FAILED: 0
TOTAL SKIPPED: 0
TOTAL WARNED: 0
ELAPSED TIME: 0.10 s

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
avocado.core.status: TEST_NA status is not a failure

When we skip a test, that is not a failure. Only the
test was not applicable for the given test environment.
Therefore, we should not report those as failures.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
avocado.core.exceptions: Introduce JobError

For the (yet non existing) cases where we want to throw
a specific JobError, that will be managed by the runner
plugin.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
avocado.core: Add a mapping of avocado error codes

Add a mapping of possible return codes for avocado,
to the meaning of them. We need to differentiate
simple jobs from tests failed, jobs that failed, and
avocado crashes.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
avocado.job: Refactor and introduce new error codes for job

We have to tell apart 'expected' avocado error from
plain crashes. Refactor the Job.run() method, separating
it to an unhandled exception auxiliary method, and a
handled one, that properly sets the following return
codes for avocado execution:

* AVOCADO_ALL_OK (0)
    Both job and tests PASSed
* AVOCADO_TESTS_FAIL (1)
    Job went fine, but some tests FAILed or ERRORed
* AVOCADO_JOB_FAIL (2)
    Something went wrong with the Job itself, by explicit
    :class:`avocado.core.exceptions.JobError` exception.
* AVOCADO_CRASH (3)
    Something else went wrong and avocado plain crashed.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
.travis.yml: Functional test for non existent tests

Avocado should handle gracefully and not crash.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
Merge pull request #49 from avocado-framework/fix-nonexisting-test

Fix assorted bugs, make avocado return codes and functional test more complete
avocado.core.output: Introduce fail error headers to OutputManager

In order to color error messages more prominently,
introduce fail headers, colored red, to provide
visual cues of what's going on.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
avocado.job: Fix class name bug and add issue report link

Class names can be found on instance.__class__.__name__,
not instance.__class__.name. Very silly bug that is
fixed here.

Also, Print error headers to provide visual cues of
the error that happened, also, provide a bug report
link for avocado crashes. Example:

Avocado crashed: ValueError: BUG!
Traceback (most recent call last):

  File "/home/lmr/Code/avocado/avocado/job.py", line 117, in _run
    raise ValueError("BUG!")

ValueError: BUG!

Please include the traceback info and command line used on your bug report
Report bugs visiting https://github.com/avocado-framework/avocado/issues/new

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
Merge pull request #50 from avocado-framework/report-link

Report link
docs: API - Update new modules recently added to avocado

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
Merge pull request #51 from avocado-framework/api-docs-update

docs: API - Update new modules recently added to avocado
docs/source/api: Remove all avocado API docs for auto generation

We'll introduce code in docs/source/conf.py to call
sphinx-apidoc to generate them on the fly, ensuring
API docs will always be complete on each new build
triggered on read the docs, due to the web commit
hooks configured on github.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
docs/source/conf.py: Add automated API doc builds

Instead of manually updating the API rst files upon
new module additions, auto generate the .rst files
through a trick on conf.py.

With this we have reduced maintenance and always
up to date API docs.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
Merge pull request #52 from avocado-framework/auto-generate-api-docs

Auto generate api docs
Work in progress: Run tests on a libvirt domain.

Signed-off-by: Ruda Moura <rmoura@redhat.com>