Merge lp:~matiasb/click-toolbelt/add-framework-param into lp:click-toolbelt

Proposed by Matias Bordese
Status: Merged
Approved by: Matias Bordese
Approved revision: 15
Merged at revision: 13
Proposed branch: lp:~matiasb/click-toolbelt/add-framework-param
Merge into: lp:click-toolbelt
Diff against target: 154 lines (+26/-14)
2 files modified
click_toolbelt/tests/test_upload.py (+20/-11)
click_toolbelt/upload.py (+6/-3)
To merge this branch: bzr merge lp:~matiasb/click-toolbelt/add-framework-param
Reviewer Review Type Date Requested Status
Ricardo Kirkner (community) Approve
Review via email: mp+208336@code.launchpad.net

Commit message

Added framework param to upload command.

To post a comment you must log in.
15. By Matias Bordese

Framework is optional, again.

Revision history for this message
Ricardo Kirkner (ricardokirkner) wrote :

LGTM

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'click_toolbelt/tests/test_upload.py'
--- click_toolbelt/tests/test_upload.py 2014-02-24 12:50:25 +0000
+++ click_toolbelt/tests/test_upload.py 2014-02-27 17:23:32 +0000
@@ -26,6 +26,7 @@
26 super(BaseUploadCommandTestCase, self).setUp()26 super(BaseUploadCommandTestCase, self).setUp()
27 self.app_name = 'namespace.package_name'27 self.app_name = 'namespace.package_name'
28 self.app_archs = ['all']28 self.app_archs = ['all']
29 self.app_framework = 'ubuntu-sdk-13.10'
29 self.app_version = '1'30 self.app_version = '1'
30 self.app_changelog = 'Initial version.'31 self.app_changelog = 'Initial version.'
31 self.uploaded_callback_url = MYAPPS_API_ROOT_URL + 'click-uploaded/1/'32 self.uploaded_callback_url = MYAPPS_API_ROOT_URL + 'click-uploaded/1/'
@@ -76,7 +77,8 @@
76 data = self.command.get_upload_data(self.app_name,77 data = self.command.get_upload_data(self.app_name,
77 self.app_version,78 self.app_version,
78 self.app_changelog,79 self.app_changelog,
79 self.app_archs)80 self.app_archs,
81 self.app_framework)
80 self.assertEqual(data, expected)82 self.assertEqual(data, expected)
8183
82 def test_get_upload_data_for_unknown_app(self):84 def test_get_upload_data_for_unknown_app(self):
@@ -89,7 +91,8 @@
89 data = self.command.get_upload_data(self.app_name,91 data = self.command.get_upload_data(self.app_name,
90 self.app_version,92 self.app_version,
91 self.app_changelog,93 self.app_changelog,
92 self.app_archs)94 self.app_archs,
95 self.app_framework)
93 self.assertEqual(data, {96 self.assertEqual(data, {
94 'success': False,97 'success': False,
95 'errors': ['The requested Click Package could not be found.']})98 'errors': ['The requested Click Package could not be found.']})
@@ -100,7 +103,8 @@
100 data = self.command.get_upload_data(self.app_name,103 data = self.command.get_upload_data(self.app_name,
101 self.app_version,104 self.app_version,
102 self.app_changelog,105 self.app_changelog,
103 self.app_archs)106 self.app_archs,
107 self.app_framework)
104 self.assertEqual(data, {'success': False,108 self.assertEqual(data, {'success': False,
105 'errors': ['some http error']})109 'errors': ['some http error']})
106110
@@ -109,22 +113,24 @@
109 self.app_name,)113 self.app_name,)
110 self.command.get_upload_data(114 self.command.get_upload_data(
111 self.app_name, self.app_version, self.app_changelog,115 self.app_name, self.app_version, self.app_changelog,
112 self.app_archs)116 self.app_archs, self.app_framework)
113 self.mock_post.assert_called_once_with(117 self.mock_post.assert_called_once_with(
114 upload_url, data={'version': self.app_version,118 upload_url, data={'version': self.app_version,
115 'architectures': self.app_archs,119 'architectures': self.app_archs,
116 'changelog': self.app_changelog})120 'changelog': self.app_changelog,
121 'framework': self.app_framework})
117122
118 def test_get_upload_data_uses_environment_variable(self):123 def test_get_upload_data_uses_environment_variable(self):
119 upload_url = MYAPPS_API_ROOT_URL + "click-upload/%s/" % (124 upload_url = MYAPPS_API_ROOT_URL + "click-upload/%s/" % (
120 self.app_name,)125 self.app_name,)
121 self.command.get_upload_data(126 self.command.get_upload_data(
122 self.app_name, self.app_version, self.app_changelog,127 self.app_name, self.app_version, self.app_changelog,
123 self.app_archs)128 self.app_archs, self.app_framework)
124 self.mock_post.assert_called_once_with(129 self.mock_post.assert_called_once_with(
125 upload_url, data={'version': self.app_version,130 upload_url, data={'version': self.app_version,
126 'architectures': self.app_archs,131 'architectures': self.app_archs,
127 'changelog': self.app_changelog})132 'changelog': self.app_changelog,
133 'framework': self.app_framework})
128134
129 @patch('click_toolbelt.upload.Upload.get_oauth_session')135 @patch('click_toolbelt.upload.Upload.get_oauth_session')
130 def test_get_upload_data_with_invalid_session(self,136 def test_get_upload_data_with_invalid_session(self,
@@ -132,7 +138,7 @@
132 mock_get_oauth_session.return_value = None138 mock_get_oauth_session.return_value = None
133 result = self.command.get_upload_data(139 result = self.command.get_upload_data(
134 self.app_name, self.app_version, self.app_changelog,140 self.app_name, self.app_version, self.app_changelog,
135 self.app_archs)141 self.app_archs, self.app_framework)
136 self.assertEqual(result, {'success': False,142 self.assertEqual(result, {'success': False,
137 'errors': ['No valid credentials found.']})143 'errors': ['No valid credentials found.']})
138 self.assertFalse(self.mock_post.called)144 self.assertFalse(self.mock_post.called)
@@ -243,12 +249,12 @@
243249
244 parsed_args = namedtuple(250 parsed_args = namedtuple(
245 'parsed_args',251 'parsed_args',
246 'application_name, version, filename, changelog, arch')252 'application_name, version, filename, changelog, arch, framework')
247253
248 filename = 'package.click'254 filename = 'package.click'
249 self.args = parsed_args(255 self.args = parsed_args(
250 self.app_name, self.app_version, filename, self.app_changelog,256 self.app_name, self.app_version, filename, self.app_changelog,
251 self.app_archs)257 self.app_archs, self.app_framework)
252258
253 def test_parser(self):259 def test_parser(self):
254 parser = self.command.get_parser(__namespace__)260 parser = self.command.get_parser(__namespace__)
@@ -258,6 +264,9 @@
258 # start comparing from first extra argument264 # start comparing from first extra argument
259 self.assertEqual(parser._actions[i + 1].dest, name)265 self.assertEqual(parser._actions[i + 1].dest, name)
260 self.assertTrue(parser._actions[i + 1].required)266 self.assertTrue(parser._actions[i + 1].required)
267 # framework is optional
268 self.assertEqual(parser._actions[-2].dest, 'framework')
269 self.assertFalse(parser._actions[-2].required)
261 # arch is optional, and last param270 # arch is optional, and last param
262 self.assertEqual(parser._actions[-1].dest, 'arch')271 self.assertEqual(parser._actions[-1].dest, 'arch')
263 self.assertFalse(parser._actions[-1].required)272 self.assertFalse(parser._actions[-1].required)
@@ -278,7 +287,7 @@
278 # followed by an updown upload request287 # followed by an updown upload request
279 self.mock_get_upload_data.assert_called_once_with(288 self.mock_get_upload_data.assert_called_once_with(
280 self.app_name, self.app_version, self.app_changelog,289 self.app_name, self.app_version, self.app_changelog,
281 self.app_archs)290 self.app_archs, self.app_framework)
282 self.mock_post.assert_called_with(291 self.mock_post.assert_called_with(
283 CLICK_UPDOWN_UPLOAD_URL,292 CLICK_UPDOWN_UPLOAD_URL,
284 files={'binary': self.mock_open.return_value},293 files={'binary': self.mock_open.return_value},
285294
=== modified file 'click_toolbelt/upload.py'
--- click_toolbelt/upload.py 2014-02-24 12:50:25 +0000
+++ click_toolbelt/upload.py 2014-02-27 17:23:32 +0000
@@ -23,12 +23,14 @@
23 parser.add_argument('version')23 parser.add_argument('version')
24 parser.add_argument('filename')24 parser.add_argument('filename')
25 parser.add_argument('changelog')25 parser.add_argument('changelog')
26 parser.add_argument('framework', nargs='?')
26 parser.add_argument(27 parser.add_argument(
27 'arch', nargs='*', default='all',28 'arch', nargs='*', default='all',
28 choices=['armhf', 'i386', 'amd64', 'all'])29 choices=['armhf', 'i386', 'amd64', 'all'])
29 return parser30 return parser
3031
31 def get_upload_data(self, name, version, changelog, architectures):32 def get_upload_data(
33 self, name, version, changelog, architectures, framework):
32 myapps_url = os.environ.get('MYAPPS_API_ROOT_URL', MYAPPS_API_ROOT_URL)34 myapps_url = os.environ.get('MYAPPS_API_ROOT_URL', MYAPPS_API_ROOT_URL)
33 myapps_url = urljoin(myapps_url, 'click-upload/%s/' % name)35 myapps_url = urljoin(myapps_url, 'click-upload/%s/' % name)
3436
@@ -43,7 +45,7 @@
43 response = session.post(45 response = session.post(
44 myapps_url,46 myapps_url,
45 data={'version': version, 'changelog': changelog,47 data={'version': version, 'changelog': changelog,
46 'architectures': architectures})48 'architectures': architectures, 'framework': framework})
47 if response.ok:49 if response.ok:
48 result.update(response.json())50 result.update(response.json())
49 else:51 else:
@@ -87,9 +89,10 @@
87 filename = parsed_args.filename89 filename = parsed_args.filename
88 changelog = parsed_args.changelog90 changelog = parsed_args.changelog
89 architectures = parsed_args.arch91 architectures = parsed_args.arch
92 framework = parsed_args.framework
9093
91 data = self.get_upload_data(94 data = self.get_upload_data(
92 application_name, version, changelog, architectures)95 application_name, version, changelog, architectures, framework)
93 if not data.get('success', False):96 if not data.get('success', False):
94 errors = data.get('errors', ['Unknown error'])97 errors = data.get('errors', ['Unknown error'])
95 self.log.error(98 self.log.error(

Subscribers

People subscribed via source and target branches