Skip to content

Commit cd6262e

Browse files
committed
Merge branch 'release/v0.7.0'
2 parents 3025f60 + cdf1ffc commit cd6262e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+1283
-6
lines changed

Diff for: .circleci/config.yml

+127
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
# Python CircleCI 2.0 configuration file
2+
#
3+
# Check https://circleci.com/docs/2.0/language-python/ for more details
4+
version: 2
5+
6+
references:
7+
machine-defaults: &environment-defaults
8+
machine: true
9+
install-docker-compose: &install-docker-compose
10+
run:
11+
name: Install Docker Compose
12+
command: |
13+
sudo curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
14+
sudo chmod +x /usr/local/bin/docker-compose
15+
intall-python-versions: &intall-python-versions
16+
run:
17+
name: Install required Python versions
18+
shell: /bin/bash -leo pipefail
19+
command: |
20+
cd ~/project
21+
for ver in $(cat .python-version); do
22+
pyenv install -sv $ver &
23+
done
24+
wait
25+
install-tox: &install-tox
26+
run:
27+
name: Install Tox
28+
command: sudo pip install tox
29+
restore-cache-dependencies: &restore-cache-dependencies
30+
# Download and cache dependencies
31+
restore_cache:
32+
keys:
33+
- v2-dependencies-{{ checksum "tox.ini" }}
34+
save-cache-dependencies: &save-cache-dependencies
35+
save_cache:
36+
paths:
37+
- ./tox
38+
key: v2-dependencies-{{ checksum "tox.ini" }}
39+
restore-cache-pyenv: &restore-cache-pyenv
40+
restore_cache:
41+
keys:
42+
- v2-pyenv-{{ checksum ".python-version" }}
43+
save-cache-pyenv: &save-cache-pyenv
44+
save_cache:
45+
paths:
46+
- /opt/circleci/.pyenv/versions
47+
key: v2-pyenv-{{ checksum ".python-version" }}
48+
49+
fetch-dependencies-via-tox: &fetch-dependencies-via-tox
50+
run:
51+
name: Fetch dependencies via Tox
52+
shell: /bin/bash -leo pipefail
53+
command: tox -e phial --notest
54+
phial: &phial
55+
run:
56+
name: Run integration tests using Phial
57+
shell: /bin/bash -leo pipefail
58+
command: tox -e phial -- -m $GROUP
59+
60+
steps: &steps
61+
steps:
62+
- checkout
63+
- *install-docker-compose
64+
- *restore-cache-pyenv
65+
- *intall-python-versions
66+
- *save-cache-pyenv
67+
- *install-tox
68+
- *restore-cache-dependencies
69+
- *fetch-dependencies-via-tox
70+
- *save-cache-dependencies
71+
- *phial
72+
73+
74+
workflows:
75+
version: 2
76+
integration-tests:
77+
jobs:
78+
- centos-6
79+
- centos-7
80+
- oraclelinux-6
81+
- oraclelinux-7
82+
- debian-8
83+
- debian-9
84+
- ubuntu-1404
85+
- ubuntu-1604
86+
87+
jobs:
88+
centos-6:
89+
<<: *environment-defaults
90+
<<: *steps
91+
environment:
92+
GROUP: centos6
93+
centos-7:
94+
<<: *environment-defaults
95+
<<: *steps
96+
environment:
97+
GROUP: centos7
98+
oraclelinux-6:
99+
<<: *environment-defaults
100+
<<: *steps
101+
environment:
102+
GROUP: oraclelinux6
103+
oraclelinux-7:
104+
<<: *environment-defaults
105+
<<: *steps
106+
environment:
107+
GROUP: oraclelinux7
108+
ubuntu-1404:
109+
<<: *environment-defaults
110+
<<: *steps
111+
environment:
112+
GROUP: ubuntu1404
113+
ubuntu-1604:
114+
<<: *environment-defaults
115+
<<: *steps
116+
environment:
117+
GROUP: ubuntu1604
118+
debian-8:
119+
<<: *environment-defaults
120+
<<: *steps
121+
environment:
122+
GROUP: debian8
123+
debian-9:
124+
<<: *environment-defaults
125+
<<: *steps
126+
environment:
127+
GROUP: debian9

Diff for: .gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
__pycache__/
33
*.py[cod]
44
*$py.class
5+
.pytest_cache
56

67
# C extensions
78
*.so

Diff for: MANIFEST.in

+8
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,11 @@ recursive-include puppeter *.pyi
77
recursive-include puppeter *.sh
88
recursive-include puppeter *.pp
99

10+
# Include integration tests sources
11+
recursive-include integration_tests *.py
12+
recursive-include integration_tests *.sh
13+
recursive-include integration_tests *.yml
14+
recursive-include integration_tests */Dockerfile
15+
16+
# Exclude environment files
17+
prune .circleci

Diff for: README.rst

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ Puppeter - an automatic puppet installer
55

66
.. image:: https://travis-ci.org/coi-gov-pl/puppeter.svg?branch=develop
77
:target: https://travis-ci.org/coi-gov-pl/puppeter
8+
.. image:: https://circleci.com/gh/coi-gov-pl/puppeter.svg?style=svg
9+
:target: https://circleci.com/gh/coi-gov-pl/puppeter
810
.. image:: https://coveralls.io/repos/github/coi-gov-pl/puppeter/badge.svg?branch=feature%2Finstall-puppet-agent
911
:target: https://coveralls.io/github/coi-gov-pl/puppeter?branch=feature%2Finstall-puppet-agent
1012
.. image:: https://img.shields.io/pypi/v/puppeter.svg

Diff for: integration_tests/__init__.py

Whitespace-only changes.

Diff for: integration_tests/acceptance.py

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import re
2+
from os.path import dirname
3+
4+
puppeter_source = dirname(dirname(__file__))
5+
remote_dir = '/usr/src/puppeter-source'
6+
7+
8+
class PuppeterAcceptance:
9+
10+
PUPPET_VER_3 = re.compile('^3\.\d+\.\d+$')
11+
PUPPET_VER_4 = re.compile('^4\.\d+\.\d+$')
12+
PUPPET_VER_5 = re.compile('^5\.\d+\.\d+$')
13+
14+
def __init__(self, phial):
15+
self.__phial = phial
16+
17+
def install_puppeter(self):
18+
self.__phial.scp(puppeter_source, remote_dir)
19+
20+
exitcode = self.__script('install-develop.sh')
21+
22+
assert exitcode == 0
23+
24+
def run_puppeter(self, answers):
25+
answersfile = '%s/integration_tests/answers/%s' % (remote_dir, answers)
26+
exitcode = self.__script('execute.sh', answersfile)
27+
28+
assert exitcode == 0
29+
30+
def __script(self, script, arg=''):
31+
command = 'bash -e %s/integration_tests/scripts/%s %s' % (remote_dir, script, arg)
32+
exitcode, out, err = self.__phial.exec(command.strip())
33+
return exitcode

Diff for: integration_tests/answers/simple-pc3x.yml

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
installer:
2+
mode: Agent
3+
type: pc3x

Diff for: integration_tests/answers/simple-pc4x.yml

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
installer:
2+
mode: Agent
3+
type: pc4x

Diff for: integration_tests/answers/simple-pc5x.yml

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
installer:
2+
mode: Agent
3+
type: pc5x

Diff for: integration_tests/conftest.py

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import pytest
2+
3+
from integration_tests.phial import Phial, \
4+
ssh_service, \
5+
docker_ip, \
6+
docker_services, \
7+
docker_compose_file, \
8+
docker_compose_project_name, \
9+
docker_allow_fallback
10+
11+
__fixtures = [
12+
ssh_service,
13+
docker_ip,
14+
docker_services,
15+
docker_compose_file,
16+
docker_compose_project_name,
17+
docker_allow_fallback
18+
]
19+
20+
21+
@pytest.fixture
22+
def phial(ssh_service):
23+
return Phial(ssh_service)
24+
25+
26+
@pytest.fixture
27+
def regex():
28+
return Regex()
29+
30+
31+
class Regex:
32+
def __init__(self):
33+
import re
34+
self.re = re.compile('^$')
35+
36+
def pattern(self, re):
37+
# type: (str) -> Regex
38+
self.re = re
39+
return self
40+
41+
def matches(self, text, strip=True):
42+
__tracebackhide__ = True
43+
if strip:
44+
testable = text.strip()
45+
else:
46+
testable = text
47+
if self.re.match(testable) is None:
48+
pytest.fail("regex of '{regex}' do not match given text {text}"
49+
.format(text=repr(testable), regex=self.re.pattern))

0 commit comments

Comments
 (0)