Permalink
Browse files

Initial commit

  • Loading branch information...
0 parents commit 73ec6b3a4c549b3d56d9b6246c0f1e65582b6b12 @kmmbvnr committed Jul 2, 2010
@@ -0,0 +1,7 @@
+.cache
+.ve
+.coverage
+*.pyc
+reports
+
+
166 LICENSE
@@ -0,0 +1,166 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
+
14 README
@@ -0,0 +1,14 @@
+django-hudson
+=============
+
+Plug and play continuous integration with django and hudson
+
+
+Authors
+-------
+Mikhail Podgurskiy <kmmbvnr@gmail.com>
+
+XML Reporting Code from unittest-xml-reporting project:
+ Name: Daniel Fernandes Martins <daniel.tritone@gmail.com>
+ Company: Destaquenet Technology Solutions <http://www.destaquenet.com/>
+
No changes.
No changes.
No changes.
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+import sys, os
+from os import path
+import coverage
+from optparse import make_option
+from django.conf import settings
+from django.core.management.base import BaseCommand
+from django_hudson.management.commands.lint import Command as pylint
+from django_hudson.xmlrunner import XmlDjangoTestSuiteRunner
+
+class Command(BaseCommand):
+ help = "Run ci process"
+
+ option_list = BaseCommand.option_list + (
+ make_option('--output', dest='output_dir', default='reports',
+ help='Reports directory'),
+ )
+
+ def handle(self, *args, **options):
+ """
+ Run pylint and test with coverage and xml reports
+ """
+ output_dir=options.get('output_dir')
+
+ os.mkdir(output_dir)
+
+ app_labels = Command.app_list()
+
+ # pylint
+ pylint().handle(*app_labels,
+ output_file=path.join(output_dir,'pylint.report'))
+
+
+ #coverage
+ coverage.exclude('#pragma[: ]+[nN][oO] [cC][oO][vV][eE][rR]')
+ coverage.start()
+
+ #tests
+ test_runner = XmlDjangoTestSuiteRunner(output_dir=output_dir)
+ failures = test_runner.run_tests(app_labels)
+
+ #save coverage report
+ coverage.stop()
+
+ modules = [module for name, module in sys.modules.items() \
+ if module and any([name.startswith(label) for label in app_labels])]
+
+ morfs = [ m.__file__ for m in modules if hasattr(m, '__file__') ]
+ coverage._the_coverage.xml_report(morfs, outfile=path.join(output_dir,'coverage.xml'))
+
+ @staticmethod
+ def app_list():
+ if hasattr(settings, 'PROJECT_APPS'):
+ return settings.PROJECT_APPS
+ return settings.INSTALLED_APPS
+
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+import os, sys
+from optparse import make_option
+from pylint import lint
+from pylint.reporters.text import ParseableTextReporter
+from django.core.management.base import BaseCommand
+
+
+class Command(BaseCommand):
+ help = "proccess django application with pylint"
+
+ option_list = BaseCommand.option_list + (
+ make_option('--output', dest='output_file', default='',
+ help='Redirect pylint report to file'),
+ )
+
+ def handle(self, *args, **options):
+ output_file=options.get('output_file')
+ if output_file:
+ output = open(output_file, 'w')
+ else:
+ output = sys.stdout
+
+ config = "--rcfile=" + Command.default_config_path()
+ lint.Run([config] + list(args), reporter=ParseableTextReporter(output=output), exit=False)
+
+ @staticmethod
+ def default_config_path():
+ root_dir = os.path.normpath(os.path.dirname(__file__))
+ return os.path.join(root_dir, 'pylint.rc')
@@ -0,0 +1,63 @@
+[MASTER]
+persistent=yes
+
+[MESSAGES CONTROL]
+# C0111 = Missing docstring
+# I0011 = # Warning locally suppressed using disable-msg
+# I0012 = # Warning locally suppressed using disable-msg
+disable=I0011,I0012
+
+[REPORTS]
+output-format=parseable
+include-ids=no
+
+[TYPECHECK]
+
+# Tells whether missing members accessed in mixin class should be ignored. A
+# mixin class is detected if its name ends with "mixin" (case insensitive).
+ignore-mixin-members=yes
+
+# List of classes names for which member attributes should not be checked
+# (useful for classes with attributes dynamically set).
+ignored-classes=SQLObject
+
+# When zope mode is activated, add a predefined set of Zope acquired attributes
+# to generated-members.
+zope=no
+
+# List of members which are set dynamically and missed by pylint inference
+# system, and so shouldn't trigger E0201 when accessed.
+generated-members=objects
+
+
+[VARIABLES]
+init-import=no
+
+
+[SIMILARITIES]
+min-similarity-lines=4
+ignore-comments=yes
+ignore-docstrings=yes
+
+
+[MISCELLANEOUS]
+notes=FIXME,XXX,TODO
+
+
+[FORMAT]
+max-line-length=160
+max-module-lines=500
+indent-string=' '
+
+
+[DESIGN]
+max-args=5
+max-locals=15
+max-returns=6
+max-branchs=12
+max-statements=50
+max-parents=7
+max-attributes=7
+min-public-methods=0
+max-public-methods=20
+
@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+from optparse import make_option
+from django.core.management.base import BaseCommand
+from xmlrunner import XmlDjangoTestSuiteRunner
+
+class Command(BaseCommand):
+ help = "Runs the test suite with reporting to xml"
+
+ option_list = BaseCommand.option_list + (
+ make_option('--output', dest='output_dir', default='',
+ help='Directory for xml report'),
+ )
+
+
+ def handle(self, *test_labels, **options):
+ output_dir=options.get('output_dir')
+
+ test_runner = XmlDjangoTestSuiteRunner(output_dir=output_dir)
+ failures = test_runner.run_tests(test_labels)
+
+ if failures:
+ sys.exit(bool(failures))
+
No changes.
@@ -0,0 +1,7 @@
+# -*- coding: utf-8 -*-
+from django.test import TestCase
+
+class SanityCheckTest(TestCase):
+ def test_is_ok(self):
+ pass
+
Oops, something went wrong.

0 comments on commit 73ec6b3

Please sign in to comment.