Merge lp:~michael.nelson/ubuntu-webcatalog/1180770-handle-incorrect-desktop-files into lp:ubuntu-webcatalog

Proposed by Michael Nelson
Status: Merged
Approved by: Martin Albisetti
Approved revision: 185
Merged at revision: 184
Proposed branch: lp:~michael.nelson/ubuntu-webcatalog/1180770-handle-incorrect-desktop-files
Merge into: lp:ubuntu-webcatalog
Diff against target: 83 lines (+41/-2)
3 files modified
src/webcatalog/forms.py (+9/-2)
src/webcatalog/tests/test_data/workrave:workrave.desktop (+16/-0)
src/webcatalog/tests/test_forms.py (+16/-0)
To merge this branch: bzr merge lp:~michael.nelson/ubuntu-webcatalog/1180770-handle-incorrect-desktop-files
Reviewer Review Type Date Requested Status
Martin Albisetti (community) Approve
Review via email: mp+164881@code.launchpad.net

Commit message

Invalid desktop files are handled (skipped) rather than erroring.

Description of the change

Invalid desktop files are handled (skipped) rather than erroring.

See the linked bug for a description of the problem.

`fab test`

To post a comment you must log in.
Revision history for this message
Martin Albisetti (beuno) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/webcatalog/forms.py'
--- src/webcatalog/forms.py 2012-07-02 21:25:30 +0000
+++ src/webcatalog/forms.py 2013-05-21 12:28:08 +0000
@@ -21,7 +21,10 @@
2121
22import apt22import apt
23import json23import json
24from ConfigParser import ConfigParser24from ConfigParser import (
25 ConfigParser,
26 ParsingError,
27)
25from StringIO import StringIO28from StringIO import StringIO
2629
27from django import forms30from django import forms
@@ -64,7 +67,11 @@
64 @classmethod67 @classmethod
65 def get_form_from_desktop_data(cls, str_data, distroseries):68 def get_form_from_desktop_data(cls, str_data, distroseries):
66 parser = ConfigParser()69 parser = ConfigParser()
67 parser.readfp(StringIO(str_data))70 try:
71 parser.readfp(StringIO(str_data))
72 except ParsingError:
73 return cls(data={}, instance=None)
74
68 data = dict(parser.items('Desktop Entry'))75 data = dict(parser.items('Desktop Entry'))
69 for desktop_key, app_key in desktop_field_mappings.items():76 for desktop_key, app_key in desktop_field_mappings.items():
70 if desktop_key in data:77 if desktop_key in data:
7178
=== added file 'src/webcatalog/tests/test_data/workrave:workrave.desktop'
--- src/webcatalog/tests/test_data/workrave:workrave.desktop 1970-01-01 00:00:00 +0000
+++ src/webcatalog/tests/test_data/workrave:workrave.desktop 2013-05-21 12:28:08 +0000
@@ -0,0 +1,16 @@
1[Desktop Entry]
2Categories=Application;Other
3X-AppInstall-Package=workrave
4X-AppInstall-Popcon=500
5X-AppInstall-Section=universe
6
7Type=Application
8Categories=Utility;GTK;Accessibility
9Exec=workrave
10Icon=workrave
11Comment=Assists in the prevention and recovery of Repetitive Strain Injury (RSI)
12- RSI (Repetitive Strain Injury) oraz wspomaga rekonwalescencję
13 запястья и снятии общего мышечного напряжения.
14Name=Workrave
15
16X-Ubuntu-Gettext-Domain=app-install-data
017
=== modified file 'src/webcatalog/tests/test_forms.py'
--- src/webcatalog/tests/test_forms.py 2012-07-02 21:25:30 +0000
+++ src/webcatalog/tests/test_forms.py 2013-05-21 12:28:08 +0000
@@ -19,6 +19,8 @@
1919
20from __future__ import absolute_import20from __future__ import absolute_import
2121
22import os
23
22from django.forms import ValidationError24from django.forms import ValidationError
23from django.test import TestCase25from django.test import TestCase
2426
@@ -108,6 +110,20 @@
108 self.assertTrue(form.is_valid())110 self.assertTrue(form.is_valid())
109 self.assertEqual('MyPkg description', form.cleaned_data['description'])111 self.assertEqual('MyPkg description', form.cleaned_data['description'])
110112
113 def test_get_form_from_desktop_data_bad_data(self):
114 """Don't panic if we can't parse the desktop file."""
115 app = self.factory.make_application(package_name='workrave')
116 curdir = os.path.dirname(__file__)
117 desktop_file_path = os.path.join(curdir, 'test_data',
118 'workrave:workrave.desktop')
119 with open(desktop_file_path, 'r') as desktop_file:
120 data = desktop_file.read()
121
122 form = ArchiveApplicationForm.get_form_from_desktop_data(
123 data, distroseries=app.distroseries)
124
125 self.assertFalse(form.is_valid())
126
111 def test_extra_fields(self):127 def test_extra_fields(self):
112 # There are a bunch of extra fields which are also supported by128 # There are a bunch of extra fields which are also supported by
113 # the model form.129 # the model form.

Subscribers

People subscribed via source and target branches