From 643fc25609f5149af028e39edbc5e11dddf21e80 Mon Sep 17 00:00:00 2001 From: Lubomír Sedlář Date: Sep 14 2016 13:28:07 +0000 Subject: Add COMPOSE_ID file to copied part of compose Each fragment of compose will have a COMPOSE_ID file in the location given as command line argument. Signed-off-by: Lubomír Sedlář --- diff --git a/compose_utils/copy_compose.py b/compose_utils/copy_compose.py index 5baf86f..9fdd2de 100644 --- a/compose_utils/copy_compose.py +++ b/compose_utils/copy_compose.py @@ -39,6 +39,10 @@ def copy_compose(compose, dest, arches=None, variants=None, dry_run=False, rsync destination = os.path.join(dest, parent.replace(compose.compose_path, '').lstrip('/')) _run_rsync(sources, destination, dry_run=dry_run, opts=rsync_opts) + if not dry_run: + with open(os.path.join(dest, 'COMPOSE_ID'), 'w') as f: + f.write(compose.info.compose.id) + def _run_rsync(sources, destination, dry_run=False, opts=[]): cmd = ['rsync', '-avHh'] + opts + sources + [destination] diff --git a/tests/test_copy_compose.py b/tests/test_copy_compose.py index b88e641..852aff0 100644 --- a/tests/test_copy_compose.py +++ b/tests/test_copy_compose.py @@ -2,94 +2,111 @@ import unittest import mock +import os from StringIO import StringIO +import tempfile +import shutil from compose_utils import copy_compose from .helpers import get_compose -DEST = '/mnt/public/composes/' - - class ChangelogTest(unittest.TestCase): def setUp(self): self.compose = get_compose('DP-1.0-20160315.t.0') + self.dest = tempfile.mkdtemp() + '/' + + def tearDown(self): + shutil.rmtree(self.dest) + + def assertComposeId(self): + with open(os.path.join(self.dest, 'COMPOSE_ID')) as f: + self.assertEqual(f.read(), self.compose.info.compose.id) + + def assertNoComposeId(self): + self.assertFalse(os.path.exists(os.path.join(self.dest, 'COMPOSE_ID'))) @mock.patch('kobo.shortcuts.run') def test_copy_full(self, mock_run): - copy_compose(self.compose, DEST, variants=[], arches=[]) + copy_compose(self.compose, self.dest, variants=[], arches=[]) self.assertItemsEqual( mock_run.mock_calls, [mock.call(['rsync', '-avHh', self.compose.compose_path + '/Client', self.compose.compose_path + '/Server', - DEST], + self.dest], stdout=True)]) + self.assertComposeId() @mock.patch('kobo.shortcuts.run') def test_copy_full_with_extra_opts(self, mock_run): - copy_compose(self.compose, DEST, variants=[], arches=[], rsync_opts=['--exclude=repodata']) + copy_compose(self.compose, self.dest, variants=[], arches=[], rsync_opts=['--exclude=repodata']) self.assertItemsEqual( mock_run.mock_calls, [mock.call(['rsync', '-avHh', '--exclude=repodata', self.compose.compose_path + '/Client', self.compose.compose_path + '/Server', - DEST], + self.dest], stdout=True)]) + self.assertComposeId() @mock.patch('kobo.shortcuts.run') def test_copy_one_variant(self, mock_run): - copy_compose(self.compose, DEST, variants=['Client'], arches=[]) + copy_compose(self.compose, self.dest, variants=['Client'], arches=[]) self.assertItemsEqual( mock_run.mock_calls, [mock.call(['rsync', '-avHh', - self.compose.compose_path + '/Client', DEST], + self.compose.compose_path + '/Client', self.dest], stdout=True)]) + self.assertComposeId() @mock.patch('kobo.shortcuts.run') def test_copy_one_arch_in_single_variant(self, mock_run): - copy_compose(self.compose, DEST, variants=[], arches=['i386']) + copy_compose(self.compose, self.dest, variants=[], arches=['i386']) self.assertItemsEqual( mock_run.mock_calls, [mock.call(['rsync', '-avHh', self.compose.compose_path + '/Client/i386', self.compose.compose_path + '/Client/source', - DEST + 'Client'], + self.dest + 'Client'], stdout=True)]) + self.assertComposeId() @mock.patch('kobo.shortcuts.run') def test_copy_one_arch_in_both_variants(self, mock_run): - copy_compose(self.compose, DEST, variants=[], arches=['x86_64']) + copy_compose(self.compose, self.dest, variants=[], arches=['x86_64']) self.assertItemsEqual( mock_run.mock_calls, [mock.call(['rsync', '-avHh', self.compose.compose_path + '/Client/source', self.compose.compose_path + '/Client/x86_64', - DEST + 'Client'], + self.dest + 'Client'], stdout=True), mock.call(['rsync', '-avHh', self.compose.compose_path + '/Server/source', self.compose.compose_path + '/Server/x86_64', - DEST + 'Server'], + self.dest + 'Server'], stdout=True)]) + self.assertComposeId() @mock.patch('kobo.shortcuts.run') def test_copy_one_arch_in_one_variant_with_filter(self, mock_run): - copy_compose(self.compose, DEST, variants=['Client'], arches=['x86_64']) + copy_compose(self.compose, self.dest, variants=['Client'], arches=['x86_64']) self.assertItemsEqual( mock_run.mock_calls, [mock.call(['rsync', '-avHh', self.compose.compose_path + '/Client/source', self.compose.compose_path + '/Client/x86_64', - DEST + 'Client'], + self.dest + 'Client'], stdout=True)]) + self.assertComposeId() @mock.patch('kobo.shortcuts.run') def test_copy_full_dry_run(self, mock_run): with mock.patch('sys.stdout', new=StringIO()) as out: - copy_compose(self.compose, DEST, variants=[], arches=[], dry_run=True) + copy_compose(self.compose, self.dest, variants=[], arches=[], dry_run=True) self.assertEqual(mock_run.mock_calls, []) self.assertItemsEqual( @@ -97,23 +114,25 @@ class ChangelogTest(unittest.TestCase): [' '.join(['rsync', '-avHh', self.compose.compose_path + '/Client', self.compose.compose_path + '/Server', - DEST])]) + self.dest])]) + self.assertNoComposeId() @mock.patch('kobo.shortcuts.run') def test_copy_one_variant_dry_run(self, mock_run): with mock.patch('sys.stdout', new=StringIO()) as out: - copy_compose(self.compose, DEST, variants=['Client'], arches=[], dry_run=True) + copy_compose(self.compose, self.dest, variants=['Client'], arches=[], dry_run=True) self.assertEqual(mock_run.mock_calls, []) self.assertItemsEqual( out.getvalue().strip().split('\n'), [' '.join(['rsync', '-avHh', - self.compose.compose_path + '/Client', DEST])]) + self.compose.compose_path + '/Client', self.dest])]) + self.assertNoComposeId() @mock.patch('kobo.shortcuts.run') def test_copy_one_arch_in_single_variant_dry_run(self, mock_run): with mock.patch('sys.stdout', new=StringIO()) as out: - copy_compose(self.compose, DEST, variants=[], arches=['i386'], dry_run=True) + copy_compose(self.compose, self.dest, variants=[], arches=['i386'], dry_run=True) self.assertEqual(mock_run.mock_calls, []) self.assertItemsEqual( @@ -121,12 +140,13 @@ class ChangelogTest(unittest.TestCase): [' '.join(['rsync', '-avHh', self.compose.compose_path + '/Client/i386', self.compose.compose_path + '/Client/source', - DEST + 'Client'])]) + self.dest + 'Client'])]) + self.assertNoComposeId() @mock.patch('kobo.shortcuts.run') def test_copy_one_arch_in_both_variants_dry_run(self, mock_run): with mock.patch('sys.stdout', new=StringIO()) as out: - copy_compose(self.compose, DEST, variants=[], arches=['x86_64'], dry_run=True) + copy_compose(self.compose, self.dest, variants=[], arches=['x86_64'], dry_run=True) self.assertEqual(mock_run.mock_calls, []) self.assertItemsEqual( @@ -134,16 +154,17 @@ class ChangelogTest(unittest.TestCase): [' '.join(['rsync', '-avHh', self.compose.compose_path + '/Client/source', self.compose.compose_path + '/Client/x86_64', - DEST + 'Client']), + self.dest + 'Client']), ' '.join(['rsync', '-avHh', self.compose.compose_path + '/Server/source', self.compose.compose_path + '/Server/x86_64', - DEST + 'Server'])]) + self.dest + 'Server'])]) + self.assertNoComposeId() @mock.patch('kobo.shortcuts.run') def test_copy_one_arch_in_one_variant_with_filter_dry_run(self, mock_run): with mock.patch('sys.stdout', new=StringIO()) as out: - copy_compose(self.compose, DEST, variants=['Client'], arches=['x86_64'], dry_run=True) + copy_compose(self.compose, self.dest, variants=['Client'], arches=['x86_64'], dry_run=True) self.assertEqual(mock_run.mock_calls, []) self.assertEqual( @@ -151,7 +172,8 @@ class ChangelogTest(unittest.TestCase): ' '.join(['rsync', '-avHh', self.compose.compose_path + '/Client/source', self.compose.compose_path + '/Client/x86_64', - DEST + 'Client'])) + self.dest + 'Client'])) + self.assertNoComposeId() if __name__ == '__main__':