#! /usr/bin/env python
#Copyright 2007 2009 Brian Jaress
#brian_jaress@gna.org
#This file is part of Jest.
#
#Jest is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 3 of the License, or
#(at your option) any later version.
#
#Jest is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with this program. If not, see <http://www.gnu.org/licenses/>.
"""Build and install script.
Run with argument 'install' to install; 'sdist' to build and test.
"""
from distutils.core import setup
from unittest import TestLoader,TextTestRunner
import sys
from subprocess import check_call,CalledProcessError
from libjest.version import VERSION_STRING
def abort(message):
"""Exit with message."""
print "ABORTING: %s" % message
sys.exit(1)
def main():
"""Use distutils to build or install.
Also run the unit tests before bulding or installing.
"""
if 'sdist' in sys.argv:
#static checks
try:
check_call(["pylint",
"--rcfile=.pylintrc",
"--reports=n",
"./jest",
"libjest",
"./setup.py"])
except (CalledProcessError):
abort("pylint problem")
if 'sdist' in sys.argv or 'install' in sys.argv:
#unit tests
result = TextTestRunner().run(TestLoader().loadTestsFromNames(
[
'libjest.test_capabilities',
'libjest.test_timeunits',
]))
if not result.wasSuccessful():
abort("failed unit test")
#integration tests
print "Simple checks that the program runs:"
try:
for arglist in [
["--help"],
["6"],
["--reverse", "1e6"],
]:
check_call(["./jest"] + arglist)
except (CalledProcessError):
abort("program failed")
setup(
name="jest",
description="Estimates time and people for software projects",
author="Brian Jaress",
author_email="brian_jaress@gna.org",
url="http://home.gna.org/jest/",
version=VERSION_STRING,
download_url="http://download.gna.org/jest/?M=D",
long_description="""Jest is a software project estimator.
You use it to predict how much software you can write in a given
amount of time.
Notable features:
* Estimates size from time
* Requires little input
* Runs from the command line
* Free Software
Jest is designed to be a free, simple, *nix-style alternative to
complicated proprietary estimators.
""",
license="GPL",
classifiers=[
"Development Status :: 4 - Beta",
"Environment :: Console",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU General Public License (GPL)",
"Topic :: Software Development"
],
packages = ['libjest'],
scripts = ['jest']
)
if __name__ == '__main__':
main()
|