32
class Compose(tests.TestCase):
35
self.orig_wrap_exe = meta._wrap_exe
36
meta._wrap_exe = Mock(return_value='binary.wrapped')
41
'vendor': 'Sergio Schvezov <sergio.schvezov@canonical.com>',
45
meta._wrap_exe = self.orig_wrap_exe
47
def test_plain_no_binaries_or_services(self):
49
y = meta.compose_package_yaml(self.config_data, ['armhf', 'amd64'])
51
self.assertEqual(y['name'], 'my-package')
52
self.assertEqual(y['version'], '1.0')
53
self.assertEqual(y['vendor'], 'Sergio Schvezov <sergio.schvezov@canonical.com>')
54
self.assertFalse('architecture' in y)
55
self.assertTrue('amd64' in y['architectures'])
56
self.assertTrue('armhf' in y['architectures'])
57
self.assertEqual(len(y['architectures']), 2)
58
self.assertFalse('binaries' in y)
59
self.assertFalse('services' in y)
61
def test_plain_no_binaries_or_services_or_arches(self):
63
y = meta.compose_package_yaml(self.config_data, None)
65
self.assertEqual(y['name'], 'my-package')
66
self.assertEqual(y['version'], '1.0')
67
self.assertEqual(y['vendor'], 'Sergio Schvezov <sergio.schvezov@canonical.com>')
68
self.assertFalse('architectures' in y)
69
self.assertFalse('architecture' in y)
70
self.assertFalse('binaries' in y)
71
self.assertFalse('services' in y)
73
def test_with_binaries(self):
74
self.config_data['binaries'] = [
77
'exec': 'binary1.sh go',
84
y = meta.compose_package_yaml(self.config_data, ['armhf', 'amd64'])
86
self.assertEqual(y['name'], 'my-package')
87
self.assertEqual(y['version'], '1.0')
88
self.assertEqual(y['vendor'], 'Sergio Schvezov <sergio.schvezov@canonical.com>')
89
self.assertTrue('amd64' in y['architectures'])
90
self.assertTrue('armhf' in y['architectures'])
91
self.assertEqual(len(y['architectures']), 2)
92
self.assertFalse('services' in y)
93
self.assertEquals(len(y['binaries']), 2)
94
self.assertEqual(y['binaries'][0]['name'], 'binary1')
95
self.assertEqual(y['binaries'][0]['exec'], 'binary.wrapped go')
96
self.assertEqual(y['binaries'][1]['name'], 'binary2')
97
self.assertEqual(y['binaries'][1]['exec'], 'binary.wrapped')
99
def test_with_services(self):
100
self.config_data['services'] = [
107
'start': 'binary2 --start',
108
'stop': 'binary2 --stop',
115
y = meta.compose_package_yaml(self.config_data, ['armhf', 'amd64'])
117
self.assertEqual(y['name'], 'my-package')
118
self.assertEqual(y['version'], '1.0')
119
self.assertEqual(y['vendor'], 'Sergio Schvezov <sergio.schvezov@canonical.com>')
120
self.assertTrue('amd64' in y['architectures'])
121
self.assertTrue('armhf' in y['architectures'])
122
self.assertEqual(len(y['architectures']), 2)
123
self.assertFalse('binaries' in y)
124
self.assertEqual(len(y['services']), 3)
125
self.assertEqual(y['services'][0]['name'], 'service1')
126
self.assertEqual(y['services'][0]['start'], 'binary.wrapped')
127
self.assertFalse('stop' in y['services'][0])
128
self.assertEqual(y['services'][1]['name'], 'service2')
129
self.assertEqual(y['services'][1]['start'], 'binary.wrapped --start')
130
self.assertEqual(y['services'][1]['stop'], 'binary.wrapped --stop')
131
self.assertEqual(y['services'][2]['name'], 'service3')
132
self.assertFalse('stop' in y['services'][2])
133
self.assertFalse('stop' in y['services'][2])
135
def test_compose_readme(self):
136
self.config_data['summary'] = 'one line summary'
137
self.config_data['description'] = 'the description\nwhich can be longer'
139
readme_text = '''one line summary
144
self.assertEqual(meta.compose_readme(self.config_data), readme_text)
147
class Create(tests.TestCase):
150
self.orig_os_makedirs = os.makedirs
153
'name': 'my-package',
155
'vendor': 'Sergio Schvezov <sergio.schvezov@canonical.com>',
156
'description': 'my description',
157
'summary': 'my summary',
161
os.makedirs = self.orig_os_makedirs
163
def test_create_meta(self):
165
mock_the_open = mock_open()
167
with patch('snapcraft.meta.open', mock_the_open, create=True):
168
meta.create(self.config_data, ['amd64'])
170
meta_dir = os.path.join(os.path.abspath(os.curdir), 'snap', 'meta')
172
mock_the_open.assert_has_calls([
173
call(os.path.join(meta_dir, 'package.yaml'), 'w'),
175
call().write('architectures'),
180
call().write('amd64'),
182
call().write('name'),
185
call().write('my-package'),
187
call().write('vendor'),
190
call().write('Sergio'),
192
call().write('Schvezov'),
194
call().write('<sergio.schvezov@canonical.com>'),
196
call().write('version'),
204
call().__exit__(None, None, None),
205
call(os.path.join(meta_dir, 'readme.md'), 'w'),
207
call().write('my summary\nmy description\n'),
208
call().__exit__(None, None, None),
26
213
class WrapExeTestCase(tests.TestCase):
28
215
def test_wrap_exe_must_write_wrapper(self):