Skip to content

Commit

Permalink
Give precedence to PKG-INFO over manifest to get version
Browse files Browse the repository at this point in the history
  • Loading branch information
sbidoul committed Apr 22, 2018
1 parent cf2cf12 commit 3f46b73
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 5 deletions.
6 changes: 5 additions & 1 deletion CHANGES.rst
Expand Up @@ -5,8 +5,12 @@ Changes
.. ----------
.. -
2.0.5 (unreleased)
2.1.0 (unreleased)
------------------
- [FIX] give precedence to PKG-INFO over manifest to get version,
so the git post version obtained when generating an sdist is
preserved (before it would fall back in the manifest version
when trying to build from an sdist outside of git)
- [IMP] update base addons list for Odoo 11.0

2.0.4 (2018-04-18)
Expand Down
14 changes: 10 additions & 4 deletions setuptools_odoo/core.py
Expand Up @@ -2,6 +2,7 @@
# Copyright © 2015 ACSONE SA/NV
# License LGPLv3 (http://www.gnu.org/licenses/lgpl-3.0-standalone.html)

import email.parser
import os
import setuptools
from distutils.core import DistutilsSetupError
Expand Down Expand Up @@ -318,10 +319,15 @@ def prepare_odoo_addon(depends_override={},
addon_name = addons[0]
addon_dir = os.path.join(addons_dir, addon_name)
manifest = read_manifest(addon_dir)
version, _, odoo_version_info = _get_version(addon_dir,
manifest,
odoo_version_override,
git_post_version=True)
if os.path.exists('PKG-INFO'):
with open('PKG-INFO', 'rb') as fp:
pkg_info = email.parser.Parser().parse(fp)
version = pkg_info['Version']
_, _, odoo_version_info = _get_version(
addon_dir, manifest, odoo_version_override, git_post_version=False)
else:
version, _, odoo_version_info = _get_version(
addon_dir, manifest, odoo_version_override, git_post_version=True)
install_requires = get_install_requires_odoo_addon(
addon_dir,
depends_override=depends_override,
Expand Down
34 changes: 34 additions & 0 deletions tests/test_setup_keywords.py
Expand Up @@ -7,6 +7,7 @@
import shutil
import subprocess
import sys
import tarfile
import tempfile
import unittest
from zipfile import ZipFile
Expand Down Expand Up @@ -37,6 +38,39 @@ def test_odoo_addon1(self):
finally:
shutil.rmtree(egg_info_dir)

def test_odoo_addon1_sdist(self):
addon1_dir = os.path.join(DATA_DIR, 'setup_reusable_addons', 'addon1')
dist_dir = tempfile.mkdtemp()
assert os.path.isdir(dist_dir)
try:
subprocess.check_call([
sys.executable, 'setup.py', 'sdist', '-d', dist_dir,
], cwd=addon1_dir)
sdist_file = os.path.join(
dist_dir,
'odoo8-addon-addon1-8.0.1.0.0.99.dev2.tar.gz')
assert os.path.isfile(sdist_file)
# dist from the tar file, must produce an identical tar file
with tarfile.open(sdist_file, 'r') as tf:
tar_dir = tempfile.mkdtemp()
try:
tar_setup_dir = os.path.join(
tar_dir, 'odoo8-addon-addon1-8.0.1.0.0.99.dev2')
tf.extractall(tar_dir)
subprocess.check_call([
sys.executable, 'setup.py', 'sdist',
], cwd=tar_setup_dir)
sdist_file2 = os.path.join(
tar_setup_dir, 'dist',
'odoo8-addon-addon1-8.0.1.0.0.99.dev2.tar.gz')
assert os.path.isfile(sdist_file2)
with tarfile.open(sdist_file2, 'r') as tf2:
assert sorted(tf.getnames()) == sorted(tf2.getnames())
finally:
shutil.rmtree(tar_dir)
finally:
shutil.rmtree(dist_dir)

def test_odoo_addon2(self):
addon2_dir = os.path.join(DATA_DIR, 'setup_reusable_addons', 'addon2')
subprocess.check_call([sys.executable, 'setup.py', 'egg_info'],
Expand Down

0 comments on commit 3f46b73

Please sign in to comment.