[MediaWiki-commits] [Gerrit] integration/config[master]: Dockerfiles: Add build.py tests

2017-10-06 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/382745 )

Change subject: Dockerfiles: Add build.py tests
..


Dockerfiles: Add build.py tests

Change-Id: I7d4df1443b9d50df45f7284af43e7cc1dee1dbca
---
M .gitignore
M dockerfiles/build.py
A dockerfiles/test-requirements.txt
A dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-one/Dockerfile
A dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-three/Dockerfile
A dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-two/Dockerfile
A dockerfiles/tests/fixtures/dockerfiles/ci-fixture/Dockerfile
A dockerfiles/tests/test_dockerfiles_build.py
A dockerfiles/tox.ini
M tox.ini
10 files changed, 80 insertions(+), 9 deletions(-)

Approvals:
  Thcipriani: Looks good to me, approved
  Hashar: Looks good to me, but someone else must approve
  jenkins-bot: Verified



diff --git a/.gitignore b/.gitignore
index 68f5234..447fa83 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,6 @@
 /log
 *.pyc
-/.tox
+*.tox
 
 # Various temp files
 *~
diff --git a/dockerfiles/build.py b/dockerfiles/build.py
index 15393ff..b085263 100755
--- a/dockerfiles/build.py
+++ b/dockerfiles/build.py
@@ -19,7 +19,8 @@
 
 class DockerBuilder(object):
 
-def __init__(self):
+def __init__(self, base_dir=BASE_DIR):
+self.base_dir = base_dir
 self.pushes = []
 
 def run(self):
@@ -52,7 +53,7 @@
 
 self.log.info('Will build: %s' % ', '.join(images))
 dockerfiles = [
-os.path.join(BASE_DIR, f, 'Dockerfile')
+os.path.join(self.base_dir, f, 'Dockerfile')
 for f in images
 ]
 
@@ -66,8 +67,8 @@
 def load_config(self):
 config = configparser.ConfigParser()
 config.read([
-os.path.join(BASE_DIR, 'build.conf.default'),
-os.path.join(BASE_DIR, 'build.conf'),
+os.path.join(self.base_dir, 'build.conf.default'),
+os.path.join(self.base_dir, 'build.conf'),
 ])
 self.config = config
 
@@ -96,7 +97,7 @@
 self.args = parser.parse_args()
 
 def find_docker_files(self):
-return sorted(glob(os.path.join(BASE_DIR, '*/Dockerfile')))
+return sorted(glob(os.path.join(self.base_dir, '*/Dockerfile')))
 
 def update_jjb(self, img, tagged_img):
 regex = re.compile('%s:v[0-9\.]+' % img)
@@ -204,7 +205,7 @@
 self.log.debug('Building %s' % dockerfile)
 image_dir = os.path.dirname(dockerfile)
 
-image_name = os.path.relpath(image_dir, BASE_DIR)
+image_name = os.path.relpath(image_dir, self.base_dir)
 self.log.info('Image name: %s' % image_name)
 
 img = '/'.join([DOCKER_HUB_ACCOUNT, image_name])
diff --git a/dockerfiles/test-requirements.txt 
b/dockerfiles/test-requirements.txt
new file mode 100644
index 000..f3c7e8e
--- /dev/null
+++ b/dockerfiles/test-requirements.txt
@@ -0,0 +1 @@
+nose
diff --git 
a/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-one/Dockerfile 
b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-one/Dockerfile
new file mode 100644
index 000..831546c
--- /dev/null
+++ b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-one/Dockerfile
@@ -0,0 +1 @@
+FROM debian:stretch
diff --git 
a/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-three/Dockerfile 
b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-three/Dockerfile
new file mode 100644
index 000..7464243
--- /dev/null
+++ b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-three/Dockerfile
@@ -0,0 +1 @@
+FROM wmfreleng/ci-fixture-child-two:v1.2.3 as parent
diff --git 
a/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-two/Dockerfile 
b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-two/Dockerfile
new file mode 100644
index 000..399c8a9
--- /dev/null
+++ b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-two/Dockerfile
@@ -0,0 +1,2 @@
+FROM wmfreleng/ci-fixture:v1.2.3
+FROM wmfreleng/ci-fixture-child-one:v1.2.3 as parent
diff --git a/dockerfiles/tests/fixtures/dockerfiles/ci-fixture/Dockerfile 
b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture/Dockerfile
new file mode 100644
index 000..c35f1b5
--- /dev/null
+++ b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture/Dockerfile
@@ -0,0 +1 @@
+FROM scratch
diff --git a/dockerfiles/tests/test_dockerfiles_build.py 
b/dockerfiles/tests/test_dockerfiles_build.py
new file mode 100644
index 000..5fc84e2
--- /dev/null
+++ b/dockerfiles/tests/test_dockerfiles_build.py
@@ -0,0 +1,53 @@
+import logging
+import os
+import sys
+import unittest
+
+BASE_DIR = os.path.dirname(os.path.abspath(__file__))
+sys.path.append(os.path.join(BASE_DIR, '..'))
+
+import build
+
+
+FIXTURES = os.path.join(BASE_DIR, 'fixtures', 'dockerfiles')
+
+
+class TestDockerfilesBuild(unittest.TestCase):
+def make_image_name(self, name):
+return os.path.join(build.DOCKER_HUB_ACCOUNT, 

[MediaWiki-commits] [Gerrit] integration/config[master]: Dockerfiles: Add build.py tests

2017-10-06 Thread Thcipriani (Code Review)
Thcipriani has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/382745 )

Change subject: Dockerfiles: Add build.py tests
..

Dockerfiles: Add build.py tests

Change-Id: I7d4df1443b9d50df45f7284af43e7cc1dee1dbca
---
M dockerfiles/build.py
A dockerfiles/test-requirements.txt
A dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-one/Dockerfile
A dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-three/Dockerfile
A dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-two/Dockerfile
A dockerfiles/tests/fixtures/dockerfiles/ci-fixture/Dockerfile
A dockerfiles/tests/test_dockerfiles_build.py
M tox.ini
8 files changed, 70 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/integration/config 
refs/changes/45/382745/1

diff --git a/dockerfiles/build.py b/dockerfiles/build.py
index 15393ff..b085263 100755
--- a/dockerfiles/build.py
+++ b/dockerfiles/build.py
@@ -19,7 +19,8 @@
 
 class DockerBuilder(object):
 
-def __init__(self):
+def __init__(self, base_dir=BASE_DIR):
+self.base_dir = base_dir
 self.pushes = []
 
 def run(self):
@@ -52,7 +53,7 @@
 
 self.log.info('Will build: %s' % ', '.join(images))
 dockerfiles = [
-os.path.join(BASE_DIR, f, 'Dockerfile')
+os.path.join(self.base_dir, f, 'Dockerfile')
 for f in images
 ]
 
@@ -66,8 +67,8 @@
 def load_config(self):
 config = configparser.ConfigParser()
 config.read([
-os.path.join(BASE_DIR, 'build.conf.default'),
-os.path.join(BASE_DIR, 'build.conf'),
+os.path.join(self.base_dir, 'build.conf.default'),
+os.path.join(self.base_dir, 'build.conf'),
 ])
 self.config = config
 
@@ -96,7 +97,7 @@
 self.args = parser.parse_args()
 
 def find_docker_files(self):
-return sorted(glob(os.path.join(BASE_DIR, '*/Dockerfile')))
+return sorted(glob(os.path.join(self.base_dir, '*/Dockerfile')))
 
 def update_jjb(self, img, tagged_img):
 regex = re.compile('%s:v[0-9\.]+' % img)
@@ -204,7 +205,7 @@
 self.log.debug('Building %s' % dockerfile)
 image_dir = os.path.dirname(dockerfile)
 
-image_name = os.path.relpath(image_dir, BASE_DIR)
+image_name = os.path.relpath(image_dir, self.base_dir)
 self.log.info('Image name: %s' % image_name)
 
 img = '/'.join([DOCKER_HUB_ACCOUNT, image_name])
diff --git a/dockerfiles/test-requirements.txt 
b/dockerfiles/test-requirements.txt
new file mode 100644
index 000..f3c7e8e
--- /dev/null
+++ b/dockerfiles/test-requirements.txt
@@ -0,0 +1 @@
+nose
diff --git 
a/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-one/Dockerfile 
b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-one/Dockerfile
new file mode 100644
index 000..831546c
--- /dev/null
+++ b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-one/Dockerfile
@@ -0,0 +1 @@
+FROM debian:stretch
diff --git 
a/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-three/Dockerfile 
b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-three/Dockerfile
new file mode 100644
index 000..7464243
--- /dev/null
+++ b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-three/Dockerfile
@@ -0,0 +1 @@
+FROM wmfreleng/ci-fixture-child-two:v1.2.3 as parent
diff --git 
a/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-two/Dockerfile 
b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-two/Dockerfile
new file mode 100644
index 000..399c8a9
--- /dev/null
+++ b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture-child-two/Dockerfile
@@ -0,0 +1,2 @@
+FROM wmfreleng/ci-fixture:v1.2.3
+FROM wmfreleng/ci-fixture-child-one:v1.2.3 as parent
diff --git a/dockerfiles/tests/fixtures/dockerfiles/ci-fixture/Dockerfile 
b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture/Dockerfile
new file mode 100644
index 000..e69de29
--- /dev/null
+++ b/dockerfiles/tests/fixtures/dockerfiles/ci-fixture/Dockerfile
diff --git a/dockerfiles/tests/test_dockerfiles_build.py 
b/dockerfiles/tests/test_dockerfiles_build.py
new file mode 100644
index 000..9ce0f92
--- /dev/null
+++ b/dockerfiles/tests/test_dockerfiles_build.py
@@ -0,0 +1,51 @@
+import logging
+import os
+import sys
+import unittest
+
+BASE_DIR = os.path.dirname(os.path.abspath(__file__))
+sys.path.append(os.path.join(BASE_DIR, '..'))
+
+import build
+
+
+FIXTURES = os.path.join(BASE_DIR, 'fixtures', 'dockerfiles')
+
+
+class TestDockerfilesBuild(unittest.TestCase):
+def make_image_name(self, name):
+return os.path.join(build.DOCKER_HUB_ACCOUNT, name)
+
+def test_parse_from(self):
+b = build.DockerBuilder(base_dir=FIXTURES)
+x = b._parse_FROM('FROM foo:1.2.3 as bar')
+self.assertTrue(x['image'] == 'foo')
+self.assertTrue(x['tag'] == '1.2.3')
+self.assertTrue(x['digest'] is None)
+
+def