<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository upt-macports.
</pre>
<p><a href="https://github.com/macports/upt-macports/commit/7eb75a16b7e7e4903689e27deef2888be7f4d5aa">https://github.com/macports/upt-macports/commit/7eb75a16b7e7e4903689e27deef2888be7f4d5aa</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 7eb75a1 Create portfile content first and then write to file or output
</span>7eb75a1 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 7eb75a16b7e7e4903689e27deef2888be7f4d5aa
</span>Author: Korusuke <karan.sheth@somaiya.edu>
AuthorDate: Thu Jul 25 04:33:04 2019 +0530
<span style='display:block; white-space:pre;color:#404040;'> Create portfile content first and then write to file or output
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Fixes #42
</span>---
upt_macports/tests/test_macports_package.py | 15 +++++++++++++--
upt_macports/upt_macports.py | 9 +++++----
2 files changed, 18 insertions(+), 6 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/upt_macports/tests/test_macports_package.py b/upt_macports/tests/test_macports_package.py
</span><span style='display:block; white-space:pre;color:#808080;'>index 814bac4..23ccd31 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/upt_macports/tests/test_macports_package.py
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/upt_macports/tests/test_macports_package.py
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -96,6 +96,17 @@ class TestDirectoryCreation(unittest.TestCase):
</span> self.package._create_output_directories(self.package.upt_pkg,
'/ports/')
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ @mock.patch.object(MacPortsPackage, '_render_makefile_template',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ side_effect=PermissionError)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @mock.patch.object(MacPortsPackage, '_create_output_directories')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @mock.patch.object(MacPortsPackage, '_create_portfile')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def test_render_makefile_error(self, portfile, outdir, render):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ with self.assertRaises(PermissionError):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.package.create_package(mock.Mock(), 'path')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ render.assert_called()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ outdir.assert_not_called()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ portfile.assert_not_called()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>
class TestFileCreation(unittest.TestCase):
def setUp(self):
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -107,7 +118,7 @@ class TestFileCreation(unittest.TestCase):
</span> def test_portfile_creation(self, m_open):
fn = 'upt_macports.upt_macports.MacPortsPackage._render_makefile_template' # noqa
with mock.patch(fn, return_value='Portfile content'):
<span style='display:block; white-space:pre;background:#ffe0e0;'>- self.package._create_portfile()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.package._create_portfile('Portfile content')
</span> m_open.assert_called_once_with('/outdir/Portfile', 'x',
encoding='utf-8')
m_open().write.assert_called_once_with('Portfile content')
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -115,7 +126,7 @@ class TestFileCreation(unittest.TestCase):
</span> @mock.patch('builtins.open', side_effect=FileExistsError)
def test_portfile_file_exists(self, m_open):
with self.assertRaises(SystemExit):
<span style='display:block; white-space:pre;background:#ffe0e0;'>- self.package._create_portfile()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self.package._create_portfile('Portfile content')
</span>
class TestMacPortsPackageArchiveType(unittest.TestCase):
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/upt_macports/upt_macports.py b/upt_macports/upt_macports.py
</span><span style='display:block; white-space:pre;color:#808080;'>index 055b455..bee3821 100755
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/upt_macports/upt_macports.py
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/upt_macports/upt_macports.py
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -16,11 +16,12 @@ class MacPortsPackage(object):
</span> def create_package(self, upt_pkg, output):
self.upt_pkg = upt_pkg
self.logger.info(f'Creating MacPorts package for {self.upt_pkg.name}')
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ portfile_content = self._render_makefile_template()
</span> if output is None:
<span style='display:block; white-space:pre;background:#ffe0e0;'>- print(self._render_makefile_template())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ print(portfile_content)
</span> else:
self._create_output_directories(upt_pkg, output)
<span style='display:block; white-space:pre;background:#ffe0e0;'>- self._create_portfile()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ self._create_portfile(portfile_content)
</span>
def _create_output_directories(self, upt_pkg, output_dir):
"""Creates the directory layout required"""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -34,12 +35,12 @@ class MacPortsPackage(object):
</span> except PermissionError:
sys.exit(f'Cannot create {self.output_dir}: permission denied.')
<span style='display:block; white-space:pre;background:#ffe0e0;'>- def _create_portfile(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def _create_portfile(self, portfile_content):
</span> self.logger.info('Creating the Portfile')
try:
with open(os.path.join(self.output_dir, 'Portfile'), 'x',
encoding='utf-8') as f:
<span style='display:block; white-space:pre;background:#ffe0e0;'>- f.write(self._render_makefile_template())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ f.write(portfile_content)
</span> except FileExistsError:
sys.exit(f'Cannot create {self.output_dir}/Portfile: already exists.') # noqa
</pre><pre style='margin:0'>
</pre>