Commit 3de46334 authored by Julien Muchembled's avatar Julien Muchembled

Fix tests

parent a76ec7be
...@@ -263,14 +263,17 @@ will add it to environmet variables as the following:: ...@@ -263,14 +263,17 @@ will add it to environmet variables as the following::
Example usage Example usage
============= =============
We'll use a simple tarball to demonstrate the recipe. We'll use a few tarballs to demonstrate the recipe.
We'll modify one of them in-place but we don't want to alter the source tree.
>>> import os.path >>> import os
>>> src = join(os.path.dirname(__file__), 'testdata') >>> src = join(os.path.dirname(__file__), 'testdata')
>>> ls(src) >>> ls(src)
- Foo-Bar-0.0.0.tar.gz - Foo-Bar-0.0.0.tar.gz
- haproxy-1.4.8-dummy.tar.gz - haproxy-1.4.8-dummy.tar.gz
- package-0.0.0.tar.gz - package-0.0.0.tar.gz
>>> package_path = join(tmpdir('testdata'), 'package-0.0.0.tar.gz')
>>> os.symlink(join(src, 'package-0.0.0.tar.gz'), package_path)
The package contains a dummy ``configure`` script that will simply The package contains a dummy ``configure`` script that will simply
echo the options it was called with and create a ``Makefile`` that echo the options it was called with and create a ``Makefile`` that
...@@ -286,8 +289,8 @@ Let's create a buildout to build and install the package. ...@@ -286,8 +289,8 @@ Let's create a buildout to build and install the package.
... ...
... [package] ... [package]
... recipe = slapos.recipe.cmmi ... recipe = slapos.recipe.cmmi
... url = file://%s/package-0.0.0.tar.gz ... url = file://%s
... """ % src) ... """ % package_path)
This will download, extract and build our demo package with the This will download, extract and build our demo package with the
default build options. default build options.
...@@ -309,9 +312,9 @@ Check option "promises" ...@@ -309,9 +312,9 @@ Check option "promises"
... ...
... [packagex] ... [packagex]
... recipe = slapos.recipe.cmmi ... recipe = slapos.recipe.cmmi
... url = file://%s/package-0.0.0.tar.gz ... url = file://%s
... promises = /usr/bin/myfoo ... promises = /usr/bin/myfoo
... """ % src) ... """ % package_path)
This will download, extract and build our demo package with the This will download, extract and build our demo package with the
default build options. default build options.
...@@ -414,8 +417,7 @@ and building that. ...@@ -414,8 +417,7 @@ and building that.
>>> checkout_dir = tmpdir('checkout') >>> checkout_dir = tmpdir('checkout')
>>> import setuptools.archive_util >>> import setuptools.archive_util
>>> setuptools.archive_util.unpack_archive('%s/package-0.0.0.tar.gz' % src, >>> setuptools.archive_util.unpack_archive(package_path, checkout_dir)
... checkout_dir)
>>> ls(checkout_dir) >>> ls(checkout_dir)
d package-0.0.0 d package-0.0.0
...@@ -466,7 +468,7 @@ with a new buildout and provide more options. ...@@ -466,7 +468,7 @@ with a new buildout and provide more options.
... ...
... [package] ... [package]
... recipe = slapos.recipe.cmmi ... recipe = slapos.recipe.cmmi
... url = file://%(src)s/package-0.0.0.tar.gz ... url = file://%s
... md5sum = 6b94295c042a91ea3203857326bc9209 ... md5sum = 6b94295c042a91ea3203857326bc9209
... prefix = /somewhere/else ... prefix = /somewhere/else
... environment-section = build-environment ... environment-section = build-environment
...@@ -481,7 +483,7 @@ with a new buildout and provide more options. ...@@ -481,7 +483,7 @@ with a new buildout and provide more options.
... patches = ... patches =
... patches/configure.patch ... patches/configure.patch
... patches/Makefile.dist.patch ... patches/Makefile.dist.patch
... """ % dict(src=src)) ... """ % package_path)
This configuration uses custom configure options, an environment section, This configuration uses custom configure options, an environment section,
per-part customization to the environment, custom prefix, multiple make per-part customization to the environment, custom prefix, multiple make
...@@ -565,11 +567,12 @@ and a new buildout to try it out ...@@ -565,11 +567,12 @@ and a new buildout to try it out
... ...
... [package] ... [package]
... recipe = slapos.recipe.cmmi ... recipe = slapos.recipe.cmmi
... url = file://%(src)s/package-0.0.0.tar.gz ... url = file://%(package_path)s
... pre-configure-hook = %(module)s:preconfigure ... pre-configure-hook = %(module)s:preconfigure
... pre-make-hook = %(module)s:premake ... pre-make-hook = %(module)s:premake
... post-make-hook = %(module)s:postmake ... post-make-hook = %(module)s:postmake
... """ % dict(src=src, module='%s/customhandlers.py' % hooks)) ... """ % dict(package_path=package_path,
... module=join(hooks, 'customhandlers.py')))
>>> print(system(buildout)) >>> print(system(buildout))
Uninstalling package. Uninstalling package.
...@@ -600,12 +603,12 @@ Let's create a buildout to use these options. ...@@ -600,12 +603,12 @@ Let's create a buildout to use these options.
... ...
... [package] ... [package]
... recipe = slapos.recipe.cmmi ... recipe = slapos.recipe.cmmi
... url = file://%s/package-0.0.0.tar.gz ... url = file://%s
... pre-configure = echo "Configure part: ${:_buildout_section_name_}" ... pre-configure = echo "Configure part: ${:_buildout_section_name_}"
... pre-build = echo "OH OH OH" > a.txt ... pre-build = echo "OH OH OH" > a.txt
... pre-install = cat a.txt ... pre-install = cat a.txt
... post-install = rm -f a.txt && echo "Finished." ... post-install = rm -f a.txt && echo "Finished."
... """ % src) ... """ % package_path)
This will run pre-configure, pre-build, pre-install, post-install as This will run pre-configure, pre-build, pre-install, post-install as
shell command in the corresponding stage. shell command in the corresponding stage.
...@@ -637,7 +640,7 @@ The recipe can specify build options for each platform. For example, ...@@ -637,7 +640,7 @@ The recipe can specify build options for each platform. For example,
... ...
... [package] ... [package]
... recipe = slapos.recipe.cmmi ... recipe = slapos.recipe.cmmi
... url = file://%s/package-0.0.0.tar.gz ... url = file://%s
... pre-configure = echo "Configure in common platform" ... pre-configure = echo "Configure in common platform"
... post-install = echo "Finished." ... post-install = echo "Finished."
... ...
...@@ -645,7 +648,7 @@ The recipe can specify build options for each platform. For example, ...@@ -645,7 +648,7 @@ The recipe can specify build options for each platform. For example,
... pre-configure = echo "Configure in the CYGWIN platform" ... pre-configure = echo "Configure in the CYGWIN platform"
... pre-install = echo "Installing in the CYGWIN" ... pre-install = echo "Installing in the CYGWIN"
... post-install = echo -n "CYGWIN " && ${package:post-install} ... post-install = echo -n "CYGWIN " && ${package:post-install}
... """ % src) ... """ % package_path)
In the linux, the recipe gets the options from part 'package', there In the linux, the recipe gets the options from part 'package', there
are only ``pre-configure`` and ``post-install``. the output will be are only ``pre-configure`` and ``post-install``. the output will be
...@@ -689,9 +692,9 @@ Let's see what happens when set prefix in the buildout section: ...@@ -689,9 +692,9 @@ Let's see what happens when set prefix in the buildout section:
... ...
... [package] ... [package]
... recipe = slapos.recipe.cmmi ... recipe = slapos.recipe.cmmi
... url = file://%s/package-0.0.0.tar.gz ... url = file://%s
... pre-configure = mkdir -p "${buildout:prefix}" ... pre-configure = mkdir -p "${buildout:prefix}"
... """ % src) ... """ % package_path)
>>> print(system(buildout)) >>> print(system(buildout))
Uninstalling package. Uninstalling package.
...@@ -718,10 +721,10 @@ example, ...@@ -718,10 +721,10 @@ example,
... [package] ... [package]
... recipe = slapos.recipe.cmmi ... recipe = slapos.recipe.cmmi
... prefix = ${buildout:parts-directory}/package ... prefix = ${buildout:parts-directory}/package
... url = file://%s/package-0.0.0.tar.gz ... url = file://%s
... pre-configure = rm -rf "${buildout:prefix}" ... pre-configure = rm -rf "${buildout:prefix}"
... post-install = test -d "${buildout:prefix}" || echo "None" ... post-install = test -d "${buildout:prefix}" || echo "None"
... """ % src) ... """ % package_path)
>>> print(system(buildout)) >>> print(system(buildout))
Uninstalling package. Uninstalling package.
...@@ -748,13 +751,13 @@ prefix: ...@@ -748,13 +751,13 @@ prefix:
... ...
... [package] ... [package]
... recipe = slapos.recipe.cmmi ... recipe = slapos.recipe.cmmi
... url = file://%s/package-0.0.0.tar.gz ... url = file://%s
... pre-install = sleep 2; mkdir -p "${buildout:prefix}" ; echo x >"${buildout:prefix}/a.txt" ... pre-install = sleep 2; mkdir -p "${buildout:prefix}" ; echo x >"${buildout:prefix}/a.txt"
... [package-2] ... [package-2]
... recipe = slapos.recipe.cmmi ... recipe = slapos.recipe.cmmi
... url = file://%s/package-0.0.0.tar.gz ... url = file://%s
... pre-install = sleep 2; mkdir -p "${buildout:prefix}" ; echo x >"${buildout:prefix}/b.txt"; echo ... pre-install = sleep 2; mkdir -p "${buildout:prefix}" ; echo x >"${buildout:prefix}/b.txt"; echo
... """ % (src, src)) ... """ % (package_path, package_path))
>>> print(system(buildout)) >>> print(system(buildout))
Uninstalling package. Uninstalling package.
...@@ -787,9 +790,9 @@ as nothing it is removing): ...@@ -787,9 +790,9 @@ as nothing it is removing):
... ...
... [package] ... [package]
... recipe = slapos.recipe.cmmi ... recipe = slapos.recipe.cmmi
... url = file://%s/package-0.0.0.tar.gz ... url = file://%s
... pre-install = sleep 2; mkdir -p "${buildout:prefix}" ; echo x >"${buildout:prefix}/a.txt" ... pre-install = sleep 2; mkdir -p "${buildout:prefix}" ; echo x >"${buildout:prefix}/a.txt"
... """ % src) ... """ % package_path)
>>> print(system(buildout)) >>> print(system(buildout))
Uninstalling package-2. Uninstalling package-2.
...@@ -832,17 +835,17 @@ value in the part section. For example:: ...@@ -832,17 +835,17 @@ value in the part section. For example::
... ...
... [package] ... [package]
... recipe = slapos.recipe.cmmi ... recipe = slapos.recipe.cmmi
... url = file://%s/package-0.0.0.tar.gz ... url = file://%s
... configure-command = true ... configure-command = true
... make-binary = true ... make-binary = true
... ...
... [package-2] ... [package-2]
... recipe = slapos.recipe.cmmi ... recipe = slapos.recipe.cmmi
... url = file://%s/package-0.0.0.tar.gz ... url = file://%s
... configure-command = true ... configure-command = true
... make-binary = true ... make-binary = true
... post-install = echo package magic prefix is ${package:prefix} ... post-install = echo package magic prefix is ${package:prefix}
... """ % (src, src)) ... """ % (package_path, package_path))
>>> print(system(buildout)) >>> print(system(buildout))
Uninstalling package. Uninstalling package.
...@@ -863,10 +866,10 @@ can display "prefix" value in the stdout. ...@@ -863,10 +866,10 @@ can display "prefix" value in the stdout.
... ...
... [package] ... [package]
... recipe = slapos.recipe.cmmi ... recipe = slapos.recipe.cmmi
... url = file://%s/package-0.0.0.tar.gz ... url = file://%s
... configure-command = ./configure ... configure-command = ./configure
... pre-install = sed -i -e "s/installing package/installing package at \\$\\$prefix /g" Makefile ... pre-install = sed -i -e "s/installing package/installing package at \\$\\$prefix /g" Makefile
... """ % src) ... """ % package_path)
>>> print(system(buildout)) >>> print(system(buildout))
Uninstalling package-2. Uninstalling package-2.
...@@ -888,11 +891,11 @@ replaced with the recipe final prefix. ...@@ -888,11 +891,11 @@ replaced with the recipe final prefix.
... ...
... [package] ... [package]
... recipe = slapos.recipe.cmmi ... recipe = slapos.recipe.cmmi
... url = file://%s/package-0.0.0.tar.gz ... url = file://%s
... configure-command = ./configure ... configure-command = ./configure
... make-targets = install-lib prefix=%%(prefix)s ... make-targets = install-lib prefix=%%(prefix)s
... pre-install = sed -i -e "s/installing package/installing package at \\$\\$prefix /g" Makefile ... pre-install = sed -i -e "s/installing package/installing package at \\$\\$prefix /g" Makefile
... """ % src) ... """ % package_path)
>>> print(system(buildout)) >>> print(system(buildout))
Uninstalling package. Uninstalling package.
...@@ -906,17 +909,12 @@ Install shared package ...@@ -906,17 +909,12 @@ Install shared package
====================== ======================
Use option ``shared`` to install a shared package. Use option ``shared`` to install a shared package.
>>> import os
>>> _ = system('chmod -R u+w %(path)s && rm -rf %(path)s' % dict(
... path=join(os.path.dirname(__file__), 'shared')))
>>> shared_dir = join(os.path.dirname(__file__), 'shared')
>>> os.mkdir(shared_dir)
>>> _ = system('chmod -R u+w %(path)s && rm -rf %(path)s' % dict(
... path=join(os.path.dirname(__file__), 'another_shared_dir')))
>>> another_shared_dir = join(
... os.path.dirname(__file__), 'another_shared_dir')
>>> os.mkdir(another_shared_dir)
>>> import subprocess
>>> shared_dir = tmpdir('shared')
>>> another_shared_dir = tmpdir('another_shared_dir')
>>> __tear_downs.insert(0, lambda: subprocess.call(
... ('chmod', '-R', 'u+w', shared_dir, another_shared_dir)))
If no ``shared-part-list`` is set, and ``shared`` is True, ``shared`` feature If no ``shared-part-list`` is set, and ``shared`` is True, ``shared`` feature
is not used. is not used.
...@@ -929,9 +927,9 @@ is not used. ...@@ -929,9 +927,9 @@ is not used.
... ...
... [package] ... [package]
... recipe = slapos.recipe.cmmi ... recipe = slapos.recipe.cmmi
... url = file://%s/package-0.0.0.tar.gz ... url = file://%s
... shared = True ... shared = True
... """% src) ... """ % package_path)
>>> print(system(buildout)) #doctest:+ELLIPSIS >>> print(system(buildout)) #doctest:+ELLIPSIS
Uninstalling package. Uninstalling package.
...@@ -946,12 +944,11 @@ debugging. ...@@ -946,12 +944,11 @@ debugging.
Also a shell script with the environment variable is created, so that Also a shell script with the environment variable is created, so that
developer can try same build process as the recipe tried. developer can try same build process as the recipe tried.
>>> _ = system('mv %s/package-0.0.0.tar.gz %s/package-0.0.0.tar.gz.bak' % (src, src)) >>> os.rename(package_path, package_path + '.bak')
>>> import tarfile >>> import tarfile
>>> from io import BytesIO >>> from io import BytesIO
>>> import sys >>> import sys
>>> tarpath = os.path.join(src, 'package-0.0.0.tar.gz') >>> with tarfile.open(package_path, 'w:gz') as tar:
>>> with tarfile.open(tarpath, 'w:gz') as tar:
... configure = b'invalid' ... configure = b'invalid'
... info = tarfile.TarInfo('configure.off') ... info = tarfile.TarInfo('configure.off')
... info.size = len(configure) ... info.size = len(configure)
...@@ -966,39 +963,39 @@ developer can try same build process as the recipe tried. ...@@ -966,39 +963,39 @@ developer can try same build process as the recipe tried.
... ...
... [package] ... [package]
... recipe = slapos.recipe.cmmi ... recipe = slapos.recipe.cmmi
... url = file://%s/package-0.0.0.tar.gz ... url = file://%s
... shared = True ... shared = True
... environment = ... environment =
... FOO=bar ... FOO=bar
... """ % (shared_dir, src)) ... """ % (shared_dir, package_path))
>>> print(system(buildout)) #doctest:+ELLIPSIS >>> print(system(buildout)) #doctest:+ELLIPSIS
package: shared at /shared/package/FIRST_SHARED_PACKAGE_HASH package: shared at /shared/package/<MD5SUM:0>
Uninstalling package. Uninstalling package.
Installing package. Installing package.
package: Checking whether package is installed at shared path: /shared/package/FIRST_SHARED_PACKAGE_HASH package: Checking whether package is installed at shared path: /shared/package/<MD5SUM:0>
package: [ENV] FOO = bar package: [ENV] FOO = bar
package: Command 'set -e;./configure --prefix="/shared/package/FIRST_SHARED_PACKAGE_HASH"' returned non-zero exit status 127. package: Command 'set -e;./configure --prefix="/shared/package/<MD5SUM:0>"' returned non-zero exit status 127.
package: Compilation error. The package is left as is at /shared/package/FIRST_SHARED_PACKAGE_HASH__compile__ where you can inspect what went wrong. package: Compilation error. The package is left as is at /shared/package/<MD5SUM:0>__compile__ where you can inspect what went wrong.
A shell script slapos.recipe.build.env.sh has been generated. You can source it in your shell to reproduce build environment. A shell script slapos.recipe.build.env.sh has been generated. You can source it in your shell to reproduce build environment.
/bin/sh: 1: ./configure: not found /bin/sh: 1: ./configure: not found
While: While:
Installing package. Installing package.
Error: System error Error: System error
>>> import glob >>> import glob
>>> cat(glob.glob(os.path.join(shared_dir, 'package/**__compile__/slapos.recipe.build.env.sh'))[0]) >>> cat(glob.glob(join(shared_dir, 'package/**__compile__/slapos.recipe.build.env.sh'))[0])
export FOO=bar export FOO=bar
... ...
Next time buildout runs, it detects that the build failed, remove the compile dir and retry. Next time buildout runs, it detects that the build failed, remove the compile dir and retry.
>>> print(system(buildout)) #doctest:+ELLIPSIS >>> print(system(buildout)) #doctest:+ELLIPSIS
package: shared at /shared/package/FIRST_SHARED_PACKAGE_HASH package: shared at /shared/package/<MD5SUM:0>
Installing package. Installing package.
package: Checking whether package is installed at shared path: /shared/package/FIRST_SHARED_PACKAGE_HASH package: Checking whether package is installed at shared path: /shared/package/<MD5SUM:0>
package: [ENV] FOO = bar package: [ENV] FOO = bar
package: Removing already existing directory /shared/package/FIRST_SHARED_PACKAGE_HASH__compile__ package: Removing already existing directory /shared/package/<MD5SUM:0>__compile__
package: Command 'set -e;./configure --prefix="/shared/package/FIRST_SHARED_PACKAGE_HASH"' returned non-zero exit status 127. package: Command 'set -e;./configure --prefix="/shared/package/<MD5SUM:0>"' returned non-zero exit status 127.
package: Compilation error. The package is left as is at /shared/package/FIRST_SHARED_PACKAGE_HASH__compile__ where you can inspect what went wrong. package: Compilation error. The package is left as is at /shared/package/<MD5SUM:0>__compile__ where you can inspect what went wrong.
A shell script slapos.recipe.build.env.sh has been generated. You can source it in your shell to reproduce build environment. A shell script slapos.recipe.build.env.sh has been generated. You can source it in your shell to reproduce build environment.
/bin/sh: 1: ./configure: not found /bin/sh: 1: ./configure: not found
While: While:
...@@ -1012,8 +1009,7 @@ shared part. The shared part was left in an inconsistent state that looked like ...@@ -1012,8 +1009,7 @@ shared part. The shared part was left in an inconsistent state that looked like
Let's simulate a scenario where buildout is terminated in the middle of a build. Let's simulate a scenario where buildout is terminated in the middle of a build.
For this, we need a package that takes a lot of time to install. For this, we need a package that takes a lot of time to install.
>>> tarpath = os.path.join(src, 'package-0.0.0.tar.gz') >>> with tarfile.open(package_path, 'w:gz') as tar:
>>> with tarfile.open(tarpath, 'w:gz') as tar:
... configure = b'#!/bin/sh\necho configure started\nsleep 300;' ... configure = b'#!/bin/sh\necho configure started\nsleep 300;'
... info = tarfile.TarInfo('configure') ... info = tarfile.TarInfo('configure')
... info.size = len(configure) ... info.size = len(configure)
...@@ -1023,7 +1019,6 @@ For this, we need a package that takes a lot of time to install. ...@@ -1023,7 +1019,6 @@ For this, we need a package that takes a lot of time to install.
We also need a bit more complex method to run buildout so that we send a termination signal in the We also need a bit more complex method to run buildout so that we send a termination signal in the
middle of build process. middle of build process.
>>> import subprocess
>>> import signal >>> import signal
>>> import time >>> import time
>>> buildout_process = subprocess.Popen(buildout, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) >>> buildout_process = subprocess.Popen(buildout, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
...@@ -1048,14 +1043,14 @@ This was not the case in version 0.11 of this recipe. If installation of a share ...@@ -1048,14 +1043,14 @@ This was not the case in version 0.11 of this recipe. If installation of a share
not detected and the part was considered as installed. not detected and the part was considered as installed.
>>> _ = system('mv %s/package-0.0.0.tar.gz.bak %s/package-0.0.0.tar.gz' % (src, src)) >>> os.rename(package_path + '.bak', package_path)
>>> print(system(buildout)) #doctest:+ELLIPSIS >>> print(system(buildout)) #doctest:+ELLIPSIS
package: shared at /shared/package/FIRST_SHARED_PACKAGE_HASH package: shared at /shared/package/<MD5SUM:0>
Installing package. Installing package.
package: Checking whether package is installed at shared path: /shared/package/FIRST_SHARED_PACKAGE_HASH package: Checking whether package is installed at shared path: /shared/package/<MD5SUM:0>
package: [ENV] FOO = bar package: [ENV] FOO = bar
package: Removing already existing directory /shared/package/FIRST_SHARED_PACKAGE_HASH__compile__ package: Removing already existing directory /shared/package/<MD5SUM:0>__compile__
configure --prefix=/shared/package/FIRST_SHARED_PACKAGE_HASH configure --prefix=/shared/package/<MD5SUM:0>
building package building package
installing package installing package
...@@ -1086,15 +1081,15 @@ used instead of installing if one package has been installed. ...@@ -1086,15 +1081,15 @@ used instead of installing if one package has been installed.
... ...
... [package] ... [package]
... recipe = slapos.recipe.cmmi ... recipe = slapos.recipe.cmmi
... url = file://%s/package-0.0.0.tar.gz ... url = file://%s
... shared = True ... shared = True
... environment = ... environment =
... FOO=bar ... FOO=bar
... """ % (shared_dir, another_shared_dir, src)) ... """ % (shared_dir, another_shared_dir, package_path))
>>> print(system(buildout)) #doctest:+ELLIPSIS >>> print(system(buildout)) #doctest:+ELLIPSIS
package: shared at /shared/package/FIRST_SHARED_PACKAGE_HASH package: shared at /shared/package/<MD5SUM:0>
Installing package. Installing package.
package: Checking whether package is installed at shared path: /shared/package/FIRST_SHARED_PACKAGE_HASH package: Checking whether package is installed at shared path: /shared/package/<MD5SUM:0>
package: This shared package has been installed by other package package: This shared package has been installed by other package
If options change, reinstall in different location: If options change, reinstall in different location:
...@@ -1107,17 +1102,17 @@ If options change, reinstall in different location: ...@@ -1107,17 +1102,17 @@ If options change, reinstall in different location:
... ...
... [package] ... [package]
... recipe = slapos.recipe.cmmi ... recipe = slapos.recipe.cmmi
... url = file://%s/package-0.0.0.tar.gz ... url = file://%s
... shared =True ... shared =True
... change = True ... change = True
... """ % (shared_dir, src)) ... """ % (shared_dir, package_path))
>>> print(system(buildout)) #doctest:+ELLIPSIS >>> print(system(buildout)) #doctest:+ELLIPSIS
package: shared at /shared/package/ANOTHER_SHARED_PACKAGE_HASH package: shared at /shared/package/<MD5SUM:1>
Uninstalling package. Uninstalling package.
Installing package. Installing package.
package: Checking whether package is installed at shared path: /shared/package/ANOTHER_SHARED_PACKAGE_HASH package: Checking whether package is installed at shared path: /shared/package/<MD5SUM:1>
configure --prefix=/shared/package/ANOTHER_SHARED_PACKAGE_HASH configure --prefix=/shared/package/<MD5SUM:1>
building package building package
installing package installing package
......
...@@ -328,24 +328,15 @@ class NonInformativeTests(unittest.TestCase): ...@@ -328,24 +328,15 @@ class NonInformativeTests(unittest.TestCase):
self.assertTrue(os.path.exists(build_directory)) self.assertTrue(os.path.exists(build_directory))
def test_suite(): def test_suite():
# Hash used in the test depend on the file:// url of the package, so sums = []
# we use re-normalizer to replace SHARED_PACKAGE_HASH with the actual def md5sum(m):
# hash for this path. x = m.group(0)
package_url = 'file://%s/package-0.0.0.tar.gz' % os.path.join( try:
os.path.dirname(__file__), 'testdata') i = sums.index(x)
except ValueError:
signature_FIRST_SHARED_PACKAGE_HASH = Signature('.slapos.recipe.cmmi.signature') i = len(sums)
signature_FIRST_SHARED_PACKAGE_HASH.update('environment', 'FOO=bar') sums.append(x)
signature_FIRST_SHARED_PACKAGE_HASH.update('recipe', 'slapos.recipe.cmmi') return '<MD5SUM:%s>' % i
signature_FIRST_SHARED_PACKAGE_HASH.update('shared', 'True')
signature_FIRST_SHARED_PACKAGE_HASH.update('url', package_url)
signature_ANOTHER_SHARED_PACKAGE_HASH = Signature('.slapos.recipe.cmmi.signature')
signature_ANOTHER_SHARED_PACKAGE_HASH.update('change', 'True')
signature_ANOTHER_SHARED_PACKAGE_HASH.update('recipe', 'slapos.recipe.cmmi')
signature_ANOTHER_SHARED_PACKAGE_HASH.update('shared', 'True')
signature_ANOTHER_SHARED_PACKAGE_HASH.update('url', package_url)
suite = unittest.TestSuite(( suite = unittest.TestSuite((
doctest.DocFileSuite( doctest.DocFileSuite(
'README.rst', 'README.rst',
...@@ -361,10 +352,7 @@ def test_suite(): ...@@ -361,10 +352,7 @@ def test_suite():
'--prefix=/shared/'), '--prefix=/shared/'),
(re.compile(r'\s/\S+\/shared\/'), (re.compile(r'\s/\S+\/shared\/'),
' /shared/'), ' /shared/'),
(re.compile('FIRST_SHARED_PACKAGE_HASH'), (re.compile('[0-9a-f]{32}'), md5sum),
signature_FIRST_SHARED_PACKAGE_HASH.hexdigest()),
(re.compile('ANOTHER_SHARED_PACKAGE_HASH'),
signature_ANOTHER_SHARED_PACKAGE_HASH.hexdigest()),
# Normalize subprocess.CalledProcessError message, on python >= 3.6 # Normalize subprocess.CalledProcessError message, on python >= 3.6
# there's an extra . at the end. # there's an extra . at the end.
(re.compile(r'Command (.*) returned non-zero exit status (\d+)[\.]{0,1}'), (re.compile(r'Command (.*) returned non-zero exit status (\d+)[\.]{0,1}'),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment