<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>