diff options
| -rw-r--r-- | .coveragerc | 5 | ||||
| -rw-r--r-- | .flake8 | 3 | ||||
| -rw-r--r-- | .travis.yml | 25 | ||||
| -rw-r--r-- | CONTRIBUTING.md | 9 | ||||
| -rw-r--r-- | pytest.ini | 2 | ||||
| -rw-r--r-- | requirements.txt | 7 | ||||
| -rw-r--r-- | test-requirements.txt | 4 | ||||
| -rw-r--r-- | tox.ini | 11 | ||||
| -rw-r--r-- | utils/.coveragerc | 18 | ||||
| l--------- | utils/.pylintrc | 1 | ||||
| -rw-r--r-- | utils/Makefile | 105 | ||||
| -rw-r--r-- | utils/README.md | 61 | ||||
| -rw-r--r-- | utils/setup.cfg | 27 | ||||
| -rw-r--r-- | utils/setup.py | 11 | ||||
| -rw-r--r-- | utils/test-requirements.txt | 15 | ||||
| -rw-r--r-- | utils/tox.ini | 19 | 
16 files changed, 44 insertions, 279 deletions
diff --git a/.coveragerc b/.coveragerc index ed4bca119..00f46b61b 100644 --- a/.coveragerc +++ b/.coveragerc @@ -4,16 +4,17 @@ omit =      */lib/python*/site-packages/*      */lib/python*/*      /usr/* -    setup.py +    */setup.py      # TODO(rhcarvalho): this is used to ignore test files from coverage report.      # We can make this less generic when we stick with a single test pattern in      # the repo.      */conftest.py      */test_*.py      */*_tests.py +    */test/*  [report] -fail_under = 25 +fail_under = 29  [html]  directory = cover @@ -1,4 +1,5 @@  [flake8] -exclude=.tox,utils,inventory +# TODO: cleanup flake8 issues with utils/test/* +exclude=.tox,inventory,utils/test  max_line_length = 120  ignore = E501,T003 diff --git a/.travis.yml b/.travis.yml index f0a228c23..15fe61959 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,17 +4,34 @@ sudo: false  cache:    - pip +before_cache: +  - rm ~/.cache/pip/log/debug.log +  language: python  python:    - "2.7"    - "3.5"  install: -  - pip install -r requirements.txt    - pip install tox-travis  script: -  # TODO(rhcarvalho): check syntax of other important entrypoint playbooks -  - ansible-playbook --syntax-check playbooks/byo/config.yml    - tox -  - cd utils && tox + +notifications: +  email: +    recipients: +      - jdetiber@redhat.com +      - sdodson@redhat.com +    on_success: change +    on_failure: always +  irc: +    channels: +      - chat.freenode.net#openshift-dev +    on_success: change +    on_failure: always +    template: +      - "%{repository}#%{build_number} (%{branch} - %{commit} : %{author}): %{message}" +      - "Change view : %{compare_url}" +      - "Build details : %{build_url}" +      - "sdodson jdetiber: ^" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 502ef6aa5..12f3efc09 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -72,9 +72,6 @@ See the [RPM build instructions](BUILD.md).  ## Running tests -This section covers how to run tests for the root of this repo, running tests  -for the oo-install wrapper is described in [utils/README.md](utils/README.md). -  We use [tox](http://readthedocs.org/docs/tox/) to manage virtualenvs and run  tests. Alternatively, tests can be run using  [detox](https://pypi.python.org/pypi/detox/) which allows for running tests in @@ -120,19 +117,19 @@ detox  Running a particular test environment (python 2.7 flake8 tests in this case):  ``` -tox -e py27-ansible22-flake8 +tox -e py27-flake8  ```  Running a particular test environment in a clean virtualenv (python 3.5 pylint  tests in this case):  ``` -tox -r -e py35-ansible22-pylint +tox -r -e py35-pylint  ```  If you want to enter the virtualenv created by tox to do additional  testing/debugging (py27-flake8 env in this case):  ``` -source .tox/py27-ansible22-flake8/bin/activate +source .tox/py27-flake8/bin/activate  ```  ## Submitting contributions diff --git a/pytest.ini b/pytest.ini index fec074f90..502fd1f46 100644 --- a/pytest.ini +++ b/pytest.ini @@ -4,8 +4,6 @@ norecursedirs =      __pycache__      cover      docs -    # utils has it's own config -    utils  python_files =      # TODO(rhcarvalho): rename test files to follow a single pattern. "test*.py"      # is Python unittest's default, while pytest discovers both "test_*.py" and diff --git a/requirements.txt b/requirements.txt index 5a6a161cb..241313b6f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@  ansible>=2.2 -six +click  pyOpenSSL -PyYAML -ruamel.yaml +# We need to disable ruamel.yaml for now because of test failures +#ruamel.yaml +six diff --git a/test-requirements.txt b/test-requirements.txt index 9bb6e058c..805828e1c 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -1,11 +1,9 @@ -six -pyOpenSSL +# flake8 must be listed before pylint to avoid dependency conflicts  flake8  flake8-mutable  flake8-print  pylint  setuptools-lint -PyYAML  yamllint  coverage  mock @@ -1,21 +1,24 @@  [tox]  minversion=2.3.1  envlist = -    py{27,35}-ansible22-{pylint,unit,flake8,yamllint,generate_validation} +    py{27,35}-{flake8,pylint,unit} +    py27-{yamllint,ansible_syntax,generate_validation}  skipsdist=True  skip_missing_interpreters=True  [testenv] +skip_install=True  deps = +    -rrequirements.txt      -rtest-requirements.txt      py35-flake8: flake8-bugbear -    ansible22: ansible~=2.2  commands = +    unit: pip install -e utils      unit: pytest {posargs}      flake8: flake8 {posargs}      pylint: python setup.py lint      yamllint: python setup.py yamllint      generate_validation: python setup.py generate_validation - - +    # TODO(rhcarvalho): check syntax of other important entrypoint playbooks +    ansible_syntax: ansible-playbook --syntax-check playbooks/byo/config.yml diff --git a/utils/.coveragerc b/utils/.coveragerc deleted file mode 100644 index 551e13192..000000000 --- a/utils/.coveragerc +++ /dev/null @@ -1,18 +0,0 @@ -[run] -branch = True -omit = -    */lib/python*/site-packages/* -    */lib/python*/* -    /usr/* -    setup.py -    # TODO(rhcarvalho): this is used to ignore test files from coverage report. -    # We can make this less generic when we stick with a single test pattern in -    # the repo. -    test_*.py -    *_tests.py - -[report] -fail_under = 73 - -[html] -directory = cover diff --git a/utils/.pylintrc b/utils/.pylintrc deleted file mode 120000 index 30b33b524..000000000 --- a/utils/.pylintrc +++ /dev/null @@ -1 +0,0 @@ -../.pylintrc
\ No newline at end of file diff --git a/utils/Makefile b/utils/Makefile deleted file mode 100644 index e53c0e628..000000000 --- a/utils/Makefile +++ /dev/null @@ -1,105 +0,0 @@ -######################################################## - -# Makefile for OpenShift: Atomic Quick Installer -# -# useful targets (not all implemented yet!): -#   make clean               -- Clean up garbage -#   make ci ------------------- Execute CI steps (for travis or jenkins) - -######################################################## - -# > VARIABLE = value -# -# Normal setting of a variable - values within it are recursively -# expanded when the variable is USED, not when it's declared. -# -# > VARIABLE := value -# -# Setting of a variable with simple expansion of the values inside - -# values within it are expanded at DECLARATION time. - -######################################################## - - -NAME := oo-install -VENV := $(NAME)env -SHORTNAME := ooinstall - -# This doesn't evaluate until it's called. The -D argument is the -# directory of the target file ($@), kinda like `dirname`. -ASCII2MAN = a2x -D $(dir $@) -d manpage -f manpage $< -MANPAGES := docs/man/man1/atomic-openshift-installer.1 -# slipped into the manpage template before a2x processing -VERSION := 1.4 - -sdist: clean -	python setup.py sdist -	rm -fR $(SHORTNAME).egg-info - -clean: -	@find . -type f -regex ".*\.py[co]$$" -delete -	@find . -type f \( -name "*~" -or -name "#*" \) -delete -	@rm -fR build dist rpm-build MANIFEST htmlcov .coverage cover ooinstall.egg-info oo-install -	@rm -fR $(VENV) -	@rm -fR .tox - -# To force a rebuild of the docs run 'touch' on any *.in file under -# docs/man/man1/ -docs: $(MANPAGES) - -# Regenerate %.1.asciidoc if %.1.asciidoc.in has been modified more -# recently than %.1.asciidoc. -%.1.asciidoc: %.1.asciidoc.in -	sed "s/%VERSION%/$(VERSION)/" $< > $@ - -# Regenerate %.1 if %.1.asciidoc or VERSION has been modified more -# recently than %.1. (Implicitly runs the %.1.asciidoc recipe) -%.1: %.1.asciidoc -	$(ASCII2MAN) - -viewcover: -	xdg-open cover/index.html - -# Conditional virtualenv building strategy taken from this great post -# by Marcel Hellkamp: -# http://blog.bottlepy.org/2012/07/16/virtualenv-and-makefiles.html -$(VENV): $(VENV)/bin/activate -$(VENV)/bin/activate: test-requirements.txt -	@echo "#############################################" -	@echo "# Creating a virtualenv" -	@echo "#############################################" -	test -d $(VENV) || virtualenv $(VENV) -	. $(VENV)/bin/activate && pip install setuptools==17.1.1 -	. $(VENV)/bin/activate && pip install -r test-requirements.txt -	touch $(VENV)/bin/activate -#       If there are any special things to install do it here -#       . $(VENV)/bin/activate && INSTALL STUFF - -ci-unittests: $(VENV) -	@echo "#############################################" -	@echo "# Running Unit Tests in virtualenv" -	@echo "#############################################" -	. $(VENV)/bin/activate && detox -e py27-unit,py35-unit -	@echo "VIEW CODE COVERAGE REPORT WITH 'xdg-open cover/index.html' or run 'make viewcover'" - -ci-pylint: $(VENV) -	@echo "#############################################" -	@echo "# Running PyLint Tests in virtualenv" -	@echo "#############################################" -	. $(VENV)/bin/activate && detox -e py27-pylint,py35-pylint - -ci-flake8: $(VENV) -	@echo "#############################################" -	@echo "# Running Flake8 Compliance Tests in virtualenv" -	@echo "#############################################" -	. $(VENV)/bin/activate && detox -e py27-flake8,py35-flake8 - -ci-tox: $(VENV) -	. $(VENV)/bin/activate && detox - -ci: ci-tox -	@echo -	@echo "##################################################################################" -	@echo "VIEW CODE COVERAGE REPORT WITH 'xdg-open cover/index.html' or run 'make viewcover'" -	@echo "To clean your test environment run 'make clean'" -	@echo "Other targets you may run with 'make': 'ci-pylint', 'ci-tox', 'ci-unittests', 'ci-flake8'" diff --git a/utils/README.md b/utils/README.md index 7aa045ae4..79ea3fa9f 100644 --- a/utils/README.md +++ b/utils/README.md @@ -1,69 +1,14 @@  # Running Tests -Run the command: - -    make ci - -to run tests and linting tools. - -Underneath the covers, we use [tox](http://readthedocs.org/docs/tox/) to manage virtualenvs and run -tests. Alternatively, tests can be run using [detox](https://pypi.python.org/pypi/detox/) which allows -for running tests in parallel. - -``` -pip install tox detox -``` - -List the test environments available: - -``` -tox -l -``` - -Run all of the tests with: - -``` -tox -``` - -Run all of the tests in parallel with detox: - -``` -detox -``` - -Run a particular test environment: - -``` -tox -e py27-flake8 -``` - -Run a particular test environment in a clean virtualenv: - -``` -tox -r -e py35-pylint -``` - -If you want to enter the virtualenv created by tox to do additional -testing/debugging: - -``` -source .tox/py27-flake8/bin/activate -``` - -You will get errors if the log files already exist and can not be -written to by the current user (`/tmp/ansible.log` and -`/tmp/installer.txt`). *We're working on it.* - +All tests can be run by running `tox`. See [running tests](..//CONTRIBUTING.md#running-tests) for more information.  # Running From Source  You will need to setup a **virtualenv** to run from source:      $ virtualenv oo-install -    $ source ./oo-install/bin/activate -    $ virtualenv --relocatable ./oo-install/ -    $ python setup.py install +    $ source oo-install/bin/activate +    $ python setup.py develop  The virtualenv `bin` directory should now be at the start of your  `$PATH`, and `oo-install` is ready to use from your shell. diff --git a/utils/setup.cfg b/utils/setup.cfg index d730cd3b4..79bc67848 100644 --- a/utils/setup.cfg +++ b/utils/setup.cfg @@ -3,30 +3,3 @@  # 3. If at all possible, it is good practice to do this. If you cannot, you  # will need to generate wheels for each Python version that you support.  universal=1 - -[aliases] -test=pytest - -[flake8] -max-line-length=120 -exclude=test/*,setup.py,oo-installenv -ignore=E501 - -[lint] -lint_disable=fixme,locally-disabled,file-ignored,duplicate-code - -[tool:pytest] -testpaths = test -norecursedirs = -    .* -    __pycache__ -python_files = -    # TODO(rhcarvalho): rename test files to follow a single pattern. "test*.py" -    # is Python unittest's default, while pytest discovers both "test_*.py" and -    # "*_test.py" by default. -    test_*.py -    *_tests.py -addopts = -    --cov=. -    --cov-report=term -    --cov-report=html diff --git a/utils/setup.py b/utils/setup.py index 629d39206..6fec7b173 100644 --- a/utils/setup.py +++ b/utils/setup.py @@ -38,26 +38,15 @@ setup(      # You can just specify the packages manually here if your project is      # simple. Or you can use find_packages(). -    #packages=find_packages(exclude=['contrib', 'docs', 'tests*']),      packages=['ooinstall'],      package_dir={'': 'src'}, -      # List run-time dependencies here.  These will be installed by pip when      # your project is installed. For an analysis of "install_requires" vs pip's      # requirements files see:      # https://packaging.python.org/en/latest/requirements.html      install_requires=['click', 'PyYAML', 'ansible'], -    # List additional groups of dependencies here (e.g. development -    # dependencies). You can install these using the following syntax, -    # for example: -    # $ pip install -e .[dev,test] -    #extras_require={ -    #    'dev': ['check-manifest'], -    #    'test': ['coverage'], -    #}, -      # If there are data files included in your packages that need to be      # installed, specify them here.  If using Python 2.6 or less, then these      # have to be included in MANIFEST.in as well. diff --git a/utils/test-requirements.txt b/utils/test-requirements.txt deleted file mode 100644 index b26e22a7e..000000000 --- a/utils/test-requirements.txt +++ /dev/null @@ -1,15 +0,0 @@ -ansible -# flake8 moved to before setuptools-lint to satisfy mccabe dependency issue -flake8 -setuptools-lint -coverage -mock -PyYAML -click -backports.functools_lru_cache -pyOpenSSL -yamllint -tox -detox -pytest -pytest-cov diff --git a/utils/tox.ini b/utils/tox.ini deleted file mode 100644 index 2524923cb..000000000 --- a/utils/tox.ini +++ /dev/null @@ -1,19 +0,0 @@ -[tox] -minversion=2.3.1 -envlist = -    py{27,35}-{flake8,unit,pylint} -skipsdist=True -skip_missing_interpreters=True - -[testenv] -usedevelop=True -deps = -    -rtest-requirements.txt -    py35-flake8: flake8-bugbear -commands = -    # Needed to make detox work, since it ignores usedevelop -    # https://github.com/tox-dev/tox/issues/180 -    unit: pip install -e . -    unit: pytest {posargs} -    flake8: python setup.py flake8 -    pylint: python setup.py lint  | 
