diff --git a/jenkins.cfg b/jenkins.cfg new file mode 100644 index 00000000..0163737d --- /dev/null +++ b/jenkins.cfg @@ -0,0 +1,256 @@ +[buildout] +test-eggs = + plone.app.testing + unittest2 +versions = versions +package-name = Products.TinyMCE +package-directories = ${buildout:directory}/Products/TinyMCE +test-packages = ${buildout:package-name} + +parts += + xmltest + coverage + coverage-test + report + pylint-bin + pylint + pyflakes-bin + pyflakes + pep8-bin + pep8 + zptlint-bin + zptlint + xmllint + test-all + +[coverage] +recipe = zc.recipe.egg +eggs = coverage + +[xmltest] +recipe = collective.xmltestreport +eggs = + ${test:eggs} +script = xmltest +defaults = ['--auto-color', '--auto-progress', '--xml'] + +[coverage-test] +recipe = collective.recipe.template +output = ${buildout:bin-directory}/coverage-test +mode = 755 +input = inline: + #!/bin/bash + TEST_PACKAGES=$(echo "${buildout:test-packages}"|sed 's/^[ ]*//;s/[ ]*$//'|tr '\n' ','|sed 's/^,//;s/,$//') + TEST_PACKAGES_WITH_DASH_S=$(echo $TEST_PACKAGES|awk -F',' '{for (i=1;i<=NF;i++) print " -s " $i}'|tr -d '\n') + ${buildout:bin-directory}/coverage run --source="$TEST_PACKAGES" ./bin/xmltest $TEST_PACKAGES_WITH_DASH_S + ${buildout:bin-directory}/coverage html + ${buildout:bin-directory}/coverage xml + echo "Coverate report is available in coverage-html/index.html" + + +[report] +recipe = zc.recipe.egg +eggs = coverage +scripts = coverage=report +initialization = + eggs = '${buildout:eggs-directory}' + bin = '${buildout:directory}/bin' + exclude = '--omit=' + ','.join([eggs, sys.prefix, bin]) + sys.argv = sys.argv[:] + ['xml', '-i', exclude] + +[coverage-report] +recipe = zc.recipe.egg +eggs = z3c.coverage +scripts = coveragereport +arguments = ('coverage', 'report') + + +[pylint-bin] +recipe = zc.recipe.egg +eggs = logilab.pylintinstaller +extra-paths = ${instance:location}/lib/python +entry-points = pylint-bin=pylint.lint:Run +arguments = sys.argv[1:] +arguments = [ + '--output-format=parseable', + '--zope=y', + '--reports=y', + '--disable-msg=E0611,F0401,W0232,E1101,C0103,C0111,R0201,W0201,R0911,R0904,F0220,E1103,R0901,E0211,E0213,E1002,W0622', + '--generated-members=objects', + ] + sys.argv[1:] + +# Disable messages: +# +# E0611: No name %r in module %r. Used when a name cannot be found in a module. +# F0401: Unable to import %r (%s). Used when pylint has been unable to import a module. +# W0232: Class has no __init__ method. Used when a class has no __init__ method, neither its parent classes. +# C0103: Invalid name "%s" (should match %s). Used when the name doesn't match the regular expression associated to its type (constant, variable, class...). +# C0111: Message Missing docstring Description Used when a module, function, class or method has no docstring. Some special methods like init don't necessary require a docstring. Explanation… +# R0201: Method could be a function +# W0201: Attribute %r defined outside __init__ +# R0911: Too many return statements (%s/%s) + +# E0211: Method has no argument +# - Reason: raises an error on zope.interface definitions +# E0213 Method should have "self" as first argument +# - Reason: raises an error on zope.interface definitions +# E1121 Too many positional arguments for function call +# - Reason: ??? +# E1002 Use super on an old style class +# - Reason: super(CommentsViewlet, self).update() raises an error +# W0622 total_comments: Redefining built-in 'object' +# - Reason: top level def function will not work (e.g. for catalog indexers) +# ... +# See http://pylint-messages.wikidot.com/all-messages for a full list. + + +[pylint] +recipe = collective.recipe.template +input = inline: + #!/bin/sh + if [ -s pylint.log ]; then + rm pylint.log + echo "Removing old pylint.log file" + fi + echo "Start pylint" + PACKAGES="${buildout:package-directories}" + for pkg in $PACKAGES + do + echo "Running pylint for $pkg" + find -L $pkg -regex ".*\.py" | xargs bin/pylint >> pylint.log + done + echo "finish" +output = ${buildout:directory}/bin/pylint +mode = 755 + + +[pyflakes-bin] +recipe = zc.recipe.egg +eggs = + pyflakes +entry-points = pyflakes-bin=pyflakes.scripts.pyflakes:main + + +[pyflakes] +recipe = collective.recipe.template +input = inline: + #!/bin/sh + if [ -s pyflakes.log ]; then + rm pyflakes.log + echo "Removing old pyflakes.log file" + fi + if [ -s pyflakes.log.tmp ]; then + rm pyflakes.log.tmp + fi + echo "Start pyflakes" + PACKAGES="${buildout:package-directories}" + for pkg in $PACKAGES + do + echo "Running pyflakes for $pkg" + find -L $pkg -regex ".*\.py" | xargs -r bin/pyflakes-bin >> pyflakes.log.tmp + done + cat pyflakes.log.tmp|sed 's:${buildout:directory}/::' > pyflakes.log + echo "finish" +output = ${buildout:directory}/bin/pyflakes +mode = 755 + + +[pep8-bin] +recipe = zc.recipe.egg +eggs = + pep8 +entry-points = pep8-bin=pep8:_main + + +[pep8] +recipe = collective.recipe.template +input = inline: + #!/bin/sh + if [ -s pep8.log ]; then + rm pep8.log + echo "Removing old pep8.log file" + fi + if [ -s pep8.log.tmp ]; then + rm pep8.log.tmp + fi + echo "Start pep8" + PACKAGES="${buildout:package-directories}" + for pkg in $PACKAGES + do + echo "Running pep8 for $pkg" + find -L $pkg -regex ".*\.py" | xargs -r bin/pep8-bin >> pep8.log.tmp + done + cat pep8.log.tmp|sed 's:${buildout:directory}/::' > pep8.log + echo "finish" +output = ${buildout:directory}/bin/pep8 +mode = 755 + + +[zptlint-bin] +recipe = zc.recipe.egg +eggs = + zptlint +entry-points = zptlint-bin=zptlint:run + +[zptlint] +recipe = collective.recipe.template +input = inline: + #!/bin/sh + if [ -e zptlint.log ]; then + echo "Old zptlint.log file removed" + rm zptlint.log + fi + echo "Start zptlint" + PACKAGES="${buildout:package-directories}" + for pkg in $PACKAGES + do + echo "Running zptlint for $pkg" + find -L $pkg -regex ".*\.[c|z]?pt" | xargs -r bin/zptlint-bin | perl -p -e 's/\s+$/ /g;s/\s+/ /g;s/\*{3}s?/\n/g' | grep $pkg | sed 's:${buildout:directory}/::' >> zptlint.log + done + echo "finish" +output = ${buildout:directory}/bin/zptlint +mode = 755 + + +[xmllint] +recipe = collective.recipe.template +input = inline: + #!/bin/sh + if [ -e xmllint.log ]; then + echo "Removing existing xmllint.log file" + rm xmllint.log + fi + echo "Start xmllint" + for pkg in $PACKAGES + do + find -L $pkg ".*\.[c|z]?pt"| xargs xmllint --noout 2>&1| grep ${buildout:directory} | sed 's:${buildout:directory}/::' >> xmllint.log + done + if [ -s xmllint.log ]; then + echo "Errors were found:" + cat xmllint.log + echo "Errors were written to xmllint.log" + exit 1; + else + echo "No errors found" + fi + echo "finish" +output = ${buildout:directory}/bin/xmllint +mode = 755 + +[test-all] +recipe = collective.recipe.template +input = inline: + #!/bin/sh + bin/xmltest -s Products.TinyMCE + bin/coverage-test + bin/report + bin/xmllint + bin/zptlint + bin/pep8 + bin/pyflakes +# bin/pylint +output = ${buildout:directory}/bin/test-all +mode = 755 + +[versions] +Products.TinyMCE = diff --git a/jenkins_plone3.cfg b/jenkins_plone3.cfg new file mode 100644 index 00000000..e40150ad --- /dev/null +++ b/jenkins_plone3.cfg @@ -0,0 +1,4 @@ +[buildout] +extends = + http://svn.plone.org/svn/collective/buildout/plonetest/test-3.x.cfg + jenkins.cfg diff --git a/jenkins_plone4.cfg b/jenkins_plone4.cfg new file mode 100644 index 00000000..1d8aca84 --- /dev/null +++ b/jenkins_plone4.cfg @@ -0,0 +1,4 @@ +[buildout] +extends = + http://svn.plone.org/svn/collective/buildout/plonetest/test-4.x.cfg + jenkins.cfg diff --git a/jenkins_plone41.cfg b/jenkins_plone41.cfg new file mode 100644 index 00000000..d2d5a488 --- /dev/null +++ b/jenkins_plone41.cfg @@ -0,0 +1,24 @@ +[buildout] +extends = + http://svn.plone.org/svn/collective/buildout/plonetest/plone-4.1.x.cfg + jenkins.cfg +parts += test +package-extras = +develop = . + +[versions] +zc.recipe.testrunner = 1.2.1 +zope.testing = 3.9.4 + +[instance] +eggs += ${buildout:package-name} +zcml += ${buildout:package-name} + +[test] +recipe = zc.recipe.testrunner +defaults = ['-v', '-s', '${buildout:package-name}'] +eggs = + Plone + plone.app.upgrade + ${buildout:package-name} ${buildout:package-extras} + ${buildout:test-eggs}