Merge lp:~sinzui/charm-tools/categories-and-icons into lp:~charmers/charm-tools/trunk

Proposed by Curtis Hovey
Status: Merged
Merged at revision: 175
Proposed branch: lp:~sinzui/charm-tools/categories-and-icons
Merge into: lp:~charmers/charm-tools/trunk
Diff against target: 1690 lines (+1472/-0)
30 files modified
scripts/lib/proof.py (+16/-0)
templates/charm/metadata.yaml (+2/-0)
tests/charms/broken-categories/README.md (+1/-0)
tests/charms/broken-categories/copyright (+1/-0)
tests/charms/broken-categories/hooks/install (+5/-0)
tests/charms/broken-categories/hooks/start (+4/-0)
tests/charms/broken-categories/hooks/stop (+7/-0)
tests/charms/broken-categories/hooks/website-relation-broken (+2/-0)
tests/charms/broken-categories/hooks/website-relation-changed (+9/-0)
tests/charms/broken-categories/hooks/website-relation-departed (+5/-0)
tests/charms/broken-categories/hooks/website-relation-joined (+5/-0)
tests/charms/broken-categories/icon.svg (+198/-0)
tests/charms/broken-categories/metadata.yaml (+9/-0)
tests/charms/broken-categories/revision (+1/-0)
tests/charms/broken-maintainer/icon.svg (+198/-0)
tests/charms/broken-maintainer/metadata.yaml (+2/-0)
tests/charms/broken-subordinate/icon.svg (+198/-0)
tests/charms/broken-subordinate/metadata.yaml (+2/-0)
tests/charms/broken-subordinate2/icon.svg (+198/-0)
tests/charms/broken-subordinate2/metadata.yaml (+2/-0)
tests/charms/missing-maintainer/icon.svg (+198/-0)
tests/charms/missing-maintainer/metadata.yaml (+2/-0)
tests/charms/mod-spdy/icon.svg (+198/-0)
tests/charms/mod-spdy/metadata.yaml (+2/-0)
tests/charms/unknown-metadata/icon.svg (+198/-0)
tests/charms/unknown-metadata/metadata.yaml (+2/-0)
tests/create/no-package-exists/metadata.yaml (+2/-0)
tests/create/python-apt/metadata.yaml (+2/-0)
tests/proof/expected/broken-categories (+1/-0)
tests/proof/expected/test (+2/-0)
To merge this branch: bzr merge lp:~sinzui/charm-tools/categories-and-icons
Reviewer Review Type Date Requested Status
Marco Ceppi (community) Approve
Review via email: mp+159820@code.launchpad.net

Commit message

Add support for categories and icons.

Description of the change

The new UI requires charms to be categorised and have icons to present
themselves. This branch add simple support for the needed features.

RULES

    * It is not an error to include categories in the metadata.
    * A warning is raised if categories is not present.
    * Categories must be a list of one or more of
      applications, app-servers, databases, file-servers, cache-proxy, misc
      * We do not check the values because we may change them in the next 6
        months.
    * A warning is raised if icon.svg is not present in the root directory.
      * I elected not to check the size of the icon...I could check that
        the icon is 96x96, but am not sure if it is needed right now.

QA

    Proofing
    * In a charm without categories or icon.svg, run:
      charm proof
    * Verify a warning is shown about missing categories and icon.svg.
    * Add an icon.svg to the root of the charm. Add a key without a value
      to the metadata.yaml:
      categories:
      the run
      charm proof
    * Verify there is no warning about icon.svg, but there is a warning
      that categories is not a list.
    * Set categories in metadata.yaml to
      - applications
      - cache-proxy
      then run
      charm proof
    * Verify that that there are no warning.

    Creating
    * Change to a test directory, then run
      charm create pting
    * Verify the charm's metadata.yaml contains categories list with one item,
      misc.

To post a comment you must log in.
Revision history for this message
Marco Ceppi (marcoceppi) wrote :

LGTM. Despite not being in the charm policy yet, I think a warning is a good level. After charm icon and categories land in the official charm policy we can move this from warning to hard error.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'scripts/lib/proof.py'
2--- scripts/lib/proof.py 2013-01-23 17:31:17 +0000
3+++ scripts/lib/proof.py 2013-04-19 13:03:34 +0000
4@@ -26,6 +26,7 @@
5 'summary',
6 'maintainer',
7 'description',
8+ 'categories',
9 'subordinate',
10 'provides',
11 'requires',
12@@ -215,6 +216,21 @@
13 formatted))
14 lint.warn(warn_msg)
15
16+ if 'categories' not in charm:
17+ lint.warn('Metadata is missing categories.')
18+ else:
19+ categories = charm['categories']
20+ if type(categories) != list or categories == []:
21+ # The category names are not validated because jujucharms.com
22+ # may change them.
23+ lint.warn(
24+ 'Categories metadata must be a list of one or more of: '
25+ 'applications, app-servers, databases, file-servers, '
26+ 'cache-proxy, misc')
27+
28+ if not os.path.exists(os.path.join(charm_path, 'icon.svg')):
29+ lint.warn("No icon.svg file.")
30+
31 # Must have a hooks dir
32 if not os.path.exists(hooks_path):
33 lint.err("no hooks directory")
34
35=== modified file 'templates/charm/metadata.yaml'
36--- templates/charm/metadata.yaml 2012-08-28 18:59:42 +0000
37+++ templates/charm/metadata.yaml 2013-04-19 13:03:34 +0000
38@@ -3,6 +3,8 @@
39 maintainer: $maintainer
40 description: |
41 $description
42+categories:
43+ - misc
44 provides:
45 relation-name:
46 interface: interface-name
47
48=== added directory 'tests/charms/broken-categories'
49=== added file 'tests/charms/broken-categories/README.md'
50--- tests/charms/broken-categories/README.md 1970-01-01 00:00:00 +0000
51+++ tests/charms/broken-categories/README.md 2013-04-19 13:03:34 +0000
52@@ -0,0 +1,1 @@
53+Does things.
54
55=== added file 'tests/charms/broken-categories/copyright'
56--- tests/charms/broken-categories/copyright 1970-01-01 00:00:00 +0000
57+++ tests/charms/broken-categories/copyright 2013-04-19 13:03:34 +0000
58@@ -0,0 +1,1 @@
59+Copyright.
60
61=== added directory 'tests/charms/broken-categories/hooks'
62=== added file 'tests/charms/broken-categories/hooks/install'
63--- tests/charms/broken-categories/hooks/install 1970-01-01 00:00:00 +0000
64+++ tests/charms/broken-categories/hooks/install 2013-04-19 13:03:34 +0000
65@@ -0,0 +1,5 @@
66+#!/bin/bash
67+# Here do anything needed to install the service
68+# i.e. apt-get install -y foo or bzr branch http://myserver/mycode /srv/webroot
69+
70+apt-get install -y test
71
72=== added file 'tests/charms/broken-categories/hooks/start'
73--- tests/charms/broken-categories/hooks/start 1970-01-01 00:00:00 +0000
74+++ tests/charms/broken-categories/hooks/start 2013-04-19 13:03:34 +0000
75@@ -0,0 +1,4 @@
76+#!/bin/bash
77+# Here put anything that is needed to start the service.
78+# Note that currently this is run directly after install
79+# i.e. 'service apache2 start'
80
81=== added file 'tests/charms/broken-categories/hooks/stop'
82--- tests/charms/broken-categories/hooks/stop 1970-01-01 00:00:00 +0000
83+++ tests/charms/broken-categories/hooks/stop 2013-04-19 13:03:34 +0000
84@@ -0,0 +1,7 @@
85+#!/bin/bash
86+# This will be run when the service is being torn down, allowing you to disable
87+# it in various ways..
88+# For example, if your web app uses a text file to signal to the load balancer
89+# that it is live... you could remove it and sleep for a bit to allow the load
90+# balancer to stop sending traffic.
91+# rm /srv/webroot/server-live.txt && sleep 30
92
93=== added file 'tests/charms/broken-categories/hooks/website-relation-broken'
94--- tests/charms/broken-categories/hooks/website-relation-broken 1970-01-01 00:00:00 +0000
95+++ tests/charms/broken-categories/hooks/website-relation-broken 2013-04-19 13:03:34 +0000
96@@ -0,0 +1,2 @@
97+#!/bin/sh
98+# This hook runs when the full relation is removed (not just a single member)
99
100=== added file 'tests/charms/broken-categories/hooks/website-relation-changed'
101--- tests/charms/broken-categories/hooks/website-relation-changed 1970-01-01 00:00:00 +0000
102+++ tests/charms/broken-categories/hooks/website-relation-changed 2013-04-19 13:03:34 +0000
103@@ -0,0 +1,9 @@
104+#!/bin/bash
105+# This must be renamed to the name of the relation. The goal here is to
106+# affect any change needed by relationships being formed, modified, or broken
107+# This script should be idempotent.
108+juju-log $JUJU_REMOTE_UNIT modified its settings
109+juju-log Relation settings:
110+relation-get
111+juju-log Relation members:
112+relation-list
113
114=== added file 'tests/charms/broken-categories/hooks/website-relation-departed'
115--- tests/charms/broken-categories/hooks/website-relation-departed 1970-01-01 00:00:00 +0000
116+++ tests/charms/broken-categories/hooks/website-relation-departed 2013-04-19 13:03:34 +0000
117@@ -0,0 +1,5 @@
118+#!/bin/sh
119+# This must be renamed to the name of the relation. The goal here is to
120+# affect any change needed by the remote unit leaving the relationship.
121+# This script should be idempotent.
122+juju-log $JUJU_REMOTE_UNIT departed
123
124=== added file 'tests/charms/broken-categories/hooks/website-relation-joined'
125--- tests/charms/broken-categories/hooks/website-relation-joined 1970-01-01 00:00:00 +0000
126+++ tests/charms/broken-categories/hooks/website-relation-joined 2013-04-19 13:03:34 +0000
127@@ -0,0 +1,5 @@
128+#!/bin/sh
129+# This must be renamed to the name of the relation. The goal here is to
130+# affect any change needed by relationships being formed
131+# This script should be idempotent.
132+juju-log $JUJU_REMOTE_UNIT joined
133
134=== added file 'tests/charms/broken-categories/icon.svg'
135--- tests/charms/broken-categories/icon.svg 1970-01-01 00:00:00 +0000
136+++ tests/charms/broken-categories/icon.svg 2013-04-19 13:03:34 +0000
137@@ -0,0 +1,198 @@
138+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
139+<!-- Created with Inkscape (http://www.inkscape.org/) -->
140+
141+<svg
142+ xmlns:dc="http://purl.org/dc/elements/1.1/"
143+ xmlns:cc="http://creativecommons.org/ns#"
144+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
145+ xmlns:svg="http://www.w3.org/2000/svg"
146+ xmlns="http://www.w3.org/2000/svg"
147+ xmlns:xlink="http://www.w3.org/1999/xlink"
148+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
149+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
150+ width="96"
151+ height="96"
152+ id="svg6687"
153+ version="1.1"
154+ inkscape:version="0.48.4 r9939"
155+ sodipodi:docname="icon.svg">
156+ <defs
157+ id="defs6689">
158+ <filter
159+ color-interpolation-filters="sRGB"
160+ inkscape:collect="always"
161+ id="filter4951">
162+ <feGaussianBlur
163+ inkscape:collect="always"
164+ stdDeviation="0.44250052"
165+ id="feGaussianBlur4953" />
166+ </filter>
167+ <linearGradient
168+ inkscape:collect="always"
169+ xlink:href="#linearGradient4123"
170+ id="linearGradient4537"
171+ gradientUnits="userSpaceOnUse"
172+ x1="0"
173+ y1="970.29498"
174+ x2="144"
175+ y2="970.29498" />
176+ <linearGradient
177+ id="linearGradient4123">
178+ <stop
179+ style="stop-color:#dd4814;stop-opacity:1;"
180+ offset="0"
181+ id="stop4125" />
182+ <stop
183+ style="stop-color:#ef774d;stop-opacity:1;"
184+ offset="1"
185+ id="stop4127" />
186+ </linearGradient>
187+ <linearGradient
188+ inkscape:collect="always"
189+ xlink:href="#linearGradient4176"
190+ id="linearGradient4378"
191+ gradientUnits="userSpaceOnUse"
192+ x1="0"
193+ y1="970.29498"
194+ x2="144"
195+ y2="970.29498" />
196+ <linearGradient
197+ id="linearGradient4176">
198+ <stop
199+ id="stop4178"
200+ offset="0"
201+ style="stop-color:#505050;stop-opacity:1;" />
202+ <stop
203+ id="stop4180"
204+ offset="1"
205+ style="stop-color:#646464;stop-opacity:1;" />
206+ </linearGradient>
207+ <clipPath
208+ clipPathUnits="userSpaceOnUse"
209+ id="clipPath4046-4">
210+ <g
211+ style="fill:#ff00ff;fill-opacity:1;stroke:none"
212+ inkscape:label="Layer 1"
213+ id="g4048-1"
214+ transform="matrix(0,-0.69444445,0.69379664,0,36.812604,681)">
215+ <path
216+ sodipodi:nodetypes="sssssssss"
217+ inkscape:connector-curvature="0"
218+ id="path4050-4"
219+ d="m 46.702703,898.22775 50.594594,0 C 138.16216,898.22775 144,904.06497 144,944.92583 l 0,50.73846 c 0,40.86071 -5.83784,46.69791 -46.702703,46.69791 l -50.594594,0 C 5.8378378,1042.3622 0,1036.525 0,995.66429 l 0,-50.73846 c 0,-40.86086 5.8378378,-46.69808 46.702703,-46.69808 z"
220+ style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline" />
221+ </g>
222+ </clipPath>
223+ <filter
224+ color-interpolation-filters="sRGB"
225+ inkscape:collect="always"
226+ id="filter4064-5">
227+ <feGaussianBlur
228+ inkscape:collect="always"
229+ stdDeviation="1.6357812"
230+ id="feGaussianBlur4066-7" />
231+ </filter>
232+ <linearGradient
233+ inkscape:collect="always"
234+ xlink:href="#linearGradient4176"
235+ id="linearGradient3818"
236+ gradientUnits="userSpaceOnUse"
237+ x1="0"
238+ y1="970.29498"
239+ x2="144"
240+ y2="970.29498" />
241+ <linearGradient
242+ inkscape:collect="always"
243+ xlink:href="#linearGradient4123"
244+ id="linearGradient3820"
245+ gradientUnits="userSpaceOnUse"
246+ x1="0"
247+ y1="970.29498"
248+ x2="144"
249+ y2="970.29498" />
250+ <linearGradient
251+ inkscape:collect="always"
252+ xlink:href="#linearGradient4123"
253+ id="linearGradient3823"
254+ gradientUnits="userSpaceOnUse"
255+ x1="0"
256+ y1="970.29498"
257+ x2="144"
258+ y2="970.29498"
259+ gradientTransform="matrix(0,-0.66666669,0.6660448,0,-171.9742,714.14791)" />
260+ </defs>
261+ <sodipodi:namedview
262+ id="base"
263+ pagecolor="#ffffff"
264+ bordercolor="#666666"
265+ borderopacity="1.0"
266+ inkscape:pageopacity="0.0"
267+ inkscape:pageshadow="2"
268+ inkscape:zoom="2.0861626"
269+ inkscape:cx="-12.487669"
270+ inkscape:cy="-1.1120668"
271+ inkscape:document-units="px"
272+ inkscape:current-layer="layer1"
273+ showgrid="false"
274+ fit-margin-top="0"
275+ fit-margin-left="0"
276+ fit-margin-right="0"
277+ fit-margin-bottom="0"
278+ inkscape:window-width="1440"
279+ inkscape:window-height="876"
280+ inkscape:window-x="0"
281+ inkscape:window-y="24"
282+ inkscape:window-maximized="1" />
283+ <metadata
284+ id="metadata6692">
285+ <rdf:RDF>
286+ <cc:Work
287+ rdf:about="">
288+ <dc:format>image/svg+xml</dc:format>
289+ <dc:type
290+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
291+ <dc:title />
292+ </cc:Work>
293+ </rdf:RDF>
294+ </metadata>
295+ <g
296+ inkscape:label="Layer 1"
297+ inkscape:groupmode="layer"
298+ id="layer1"
299+ transform="translate(-426.28572,-618.14791)">
300+ <g
301+ id="g3825">
302+ <path
303+ style="fill:url(#linearGradient3823);fill-opacity:1.0;fill-rule:nonzero;stroke:none;display:inline"
304+ d="m 426.28572,683.01277 0,-33.72973 c 0,-27.24324 3.88785,-31.13513 31.10302,-31.13513 l 33.79408,0 c 27.21507,0 31.1029,3.89189 31.1029,31.13513 l 0,33.72973 c 0,27.24325 -3.88783,31.13514 -31.1029,31.13514 l -33.79408,0 c -27.21517,0 -31.10302,-3.89189 -31.10302,-31.13514 z"
305+ id="path3107-2"
306+ inkscape:connector-curvature="0"
307+ sodipodi:nodetypes="sssssssss" />
308+ <path
309+ transform="matrix(0.96000003,0,0,0.96000003,-207.3143,60.387891)"
310+ inkscape:connector-curvature="0"
311+ clip-path="url(#clipPath4046-4)"
312+ id="rect4038-0"
313+ d="m 625.15625,551.28125 0,159.75 167.40625,0 0,-159.75 -167.40625,0 z m 67.25,31.71875 35.1875,0 C 755.94278,583 760,587.05912 760,615.4375 l 0,35.125 C 760,678.94088 755.94278,683 727.59375,683 l -35.1875,0 C 664.05712,683 660,678.94088 660,650.5625 l 0,-35.125 C 660,587.05912 664.05712,583 692.40625,583 z"
314+ style="opacity:0.6;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4064-5);enable-background:accumulate" />
315+ </g>
316+ <path
317+ sodipodi:type="star"
318+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
319+ id="path3835"
320+ sodipodi:sides="5"
321+ sodipodi:cx="36.909874"
322+ sodipodi:cy="32.246578"
323+ sodipodi:r1="34.566349"
324+ sodipodi:r2="17.283173"
325+ sodipodi:arg1="0.98279372"
326+ sodipodi:arg2="1.6111123"
327+ inkscape:flatsided="false"
328+ inkscape:rounded="0"
329+ inkscape:randomized="0"
330+ d="M 56.083835,61.007519 36.213275,49.515707 15.481673,59.369718 20.270696,36.920527 4.4925571,20.24866 27.322895,17.866109 38.303071,-2.291683 47.623974,18.68501 70.188234,22.898677 53.11853,38.245538 z"
331+ transform="translate(436.94532,636.78999)"
332+ inkscape:transform-center-x="-0.43052153"
333+ inkscape:transform-center-y="-2.8886602" />
334+ </g>
335+</svg>
336
337=== added file 'tests/charms/broken-categories/metadata.yaml'
338--- tests/charms/broken-categories/metadata.yaml 1970-01-01 00:00:00 +0000
339+++ tests/charms/broken-categories/metadata.yaml 2013-04-19 13:03:34 +0000
340@@ -0,0 +1,9 @@
341+name: broken-categories
342+maintainer: test@testhost
343+summary: <Fill in summary here>
344+description: |
345+ <Multi-line description here>
346+categories:
347+provides:
348+ website:
349+ interface: http
350
351=== added file 'tests/charms/broken-categories/revision'
352--- tests/charms/broken-categories/revision 1970-01-01 00:00:00 +0000
353+++ tests/charms/broken-categories/revision 2013-04-19 13:03:34 +0000
354@@ -0,0 +1,1 @@
355+1
356
357=== added file 'tests/charms/broken-maintainer/icon.svg'
358--- tests/charms/broken-maintainer/icon.svg 1970-01-01 00:00:00 +0000
359+++ tests/charms/broken-maintainer/icon.svg 2013-04-19 13:03:34 +0000
360@@ -0,0 +1,198 @@
361+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
362+<!-- Created with Inkscape (http://www.inkscape.org/) -->
363+
364+<svg
365+ xmlns:dc="http://purl.org/dc/elements/1.1/"
366+ xmlns:cc="http://creativecommons.org/ns#"
367+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
368+ xmlns:svg="http://www.w3.org/2000/svg"
369+ xmlns="http://www.w3.org/2000/svg"
370+ xmlns:xlink="http://www.w3.org/1999/xlink"
371+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
372+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
373+ width="96"
374+ height="96"
375+ id="svg6687"
376+ version="1.1"
377+ inkscape:version="0.48.4 r9939"
378+ sodipodi:docname="icon.svg">
379+ <defs
380+ id="defs6689">
381+ <filter
382+ color-interpolation-filters="sRGB"
383+ inkscape:collect="always"
384+ id="filter4951">
385+ <feGaussianBlur
386+ inkscape:collect="always"
387+ stdDeviation="0.44250052"
388+ id="feGaussianBlur4953" />
389+ </filter>
390+ <linearGradient
391+ inkscape:collect="always"
392+ xlink:href="#linearGradient4123"
393+ id="linearGradient4537"
394+ gradientUnits="userSpaceOnUse"
395+ x1="0"
396+ y1="970.29498"
397+ x2="144"
398+ y2="970.29498" />
399+ <linearGradient
400+ id="linearGradient4123">
401+ <stop
402+ style="stop-color:#dd4814;stop-opacity:1;"
403+ offset="0"
404+ id="stop4125" />
405+ <stop
406+ style="stop-color:#ef774d;stop-opacity:1;"
407+ offset="1"
408+ id="stop4127" />
409+ </linearGradient>
410+ <linearGradient
411+ inkscape:collect="always"
412+ xlink:href="#linearGradient4176"
413+ id="linearGradient4378"
414+ gradientUnits="userSpaceOnUse"
415+ x1="0"
416+ y1="970.29498"
417+ x2="144"
418+ y2="970.29498" />
419+ <linearGradient
420+ id="linearGradient4176">
421+ <stop
422+ id="stop4178"
423+ offset="0"
424+ style="stop-color:#505050;stop-opacity:1;" />
425+ <stop
426+ id="stop4180"
427+ offset="1"
428+ style="stop-color:#646464;stop-opacity:1;" />
429+ </linearGradient>
430+ <clipPath
431+ clipPathUnits="userSpaceOnUse"
432+ id="clipPath4046-4">
433+ <g
434+ style="fill:#ff00ff;fill-opacity:1;stroke:none"
435+ inkscape:label="Layer 1"
436+ id="g4048-1"
437+ transform="matrix(0,-0.69444445,0.69379664,0,36.812604,681)">
438+ <path
439+ sodipodi:nodetypes="sssssssss"
440+ inkscape:connector-curvature="0"
441+ id="path4050-4"
442+ d="m 46.702703,898.22775 50.594594,0 C 138.16216,898.22775 144,904.06497 144,944.92583 l 0,50.73846 c 0,40.86071 -5.83784,46.69791 -46.702703,46.69791 l -50.594594,0 C 5.8378378,1042.3622 0,1036.525 0,995.66429 l 0,-50.73846 c 0,-40.86086 5.8378378,-46.69808 46.702703,-46.69808 z"
443+ style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline" />
444+ </g>
445+ </clipPath>
446+ <filter
447+ color-interpolation-filters="sRGB"
448+ inkscape:collect="always"
449+ id="filter4064-5">
450+ <feGaussianBlur
451+ inkscape:collect="always"
452+ stdDeviation="1.6357812"
453+ id="feGaussianBlur4066-7" />
454+ </filter>
455+ <linearGradient
456+ inkscape:collect="always"
457+ xlink:href="#linearGradient4176"
458+ id="linearGradient3818"
459+ gradientUnits="userSpaceOnUse"
460+ x1="0"
461+ y1="970.29498"
462+ x2="144"
463+ y2="970.29498" />
464+ <linearGradient
465+ inkscape:collect="always"
466+ xlink:href="#linearGradient4123"
467+ id="linearGradient3820"
468+ gradientUnits="userSpaceOnUse"
469+ x1="0"
470+ y1="970.29498"
471+ x2="144"
472+ y2="970.29498" />
473+ <linearGradient
474+ inkscape:collect="always"
475+ xlink:href="#linearGradient4123"
476+ id="linearGradient3823"
477+ gradientUnits="userSpaceOnUse"
478+ x1="0"
479+ y1="970.29498"
480+ x2="144"
481+ y2="970.29498"
482+ gradientTransform="matrix(0,-0.66666669,0.6660448,0,-171.9742,714.14791)" />
483+ </defs>
484+ <sodipodi:namedview
485+ id="base"
486+ pagecolor="#ffffff"
487+ bordercolor="#666666"
488+ borderopacity="1.0"
489+ inkscape:pageopacity="0.0"
490+ inkscape:pageshadow="2"
491+ inkscape:zoom="2.0861626"
492+ inkscape:cx="-12.487669"
493+ inkscape:cy="-1.1120668"
494+ inkscape:document-units="px"
495+ inkscape:current-layer="layer1"
496+ showgrid="false"
497+ fit-margin-top="0"
498+ fit-margin-left="0"
499+ fit-margin-right="0"
500+ fit-margin-bottom="0"
501+ inkscape:window-width="1440"
502+ inkscape:window-height="876"
503+ inkscape:window-x="0"
504+ inkscape:window-y="24"
505+ inkscape:window-maximized="1" />
506+ <metadata
507+ id="metadata6692">
508+ <rdf:RDF>
509+ <cc:Work
510+ rdf:about="">
511+ <dc:format>image/svg+xml</dc:format>
512+ <dc:type
513+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
514+ <dc:title />
515+ </cc:Work>
516+ </rdf:RDF>
517+ </metadata>
518+ <g
519+ inkscape:label="Layer 1"
520+ inkscape:groupmode="layer"
521+ id="layer1"
522+ transform="translate(-426.28572,-618.14791)">
523+ <g
524+ id="g3825">
525+ <path
526+ style="fill:url(#linearGradient3823);fill-opacity:1.0;fill-rule:nonzero;stroke:none;display:inline"
527+ d="m 426.28572,683.01277 0,-33.72973 c 0,-27.24324 3.88785,-31.13513 31.10302,-31.13513 l 33.79408,0 c 27.21507,0 31.1029,3.89189 31.1029,31.13513 l 0,33.72973 c 0,27.24325 -3.88783,31.13514 -31.1029,31.13514 l -33.79408,0 c -27.21517,0 -31.10302,-3.89189 -31.10302,-31.13514 z"
528+ id="path3107-2"
529+ inkscape:connector-curvature="0"
530+ sodipodi:nodetypes="sssssssss" />
531+ <path
532+ transform="matrix(0.96000003,0,0,0.96000003,-207.3143,60.387891)"
533+ inkscape:connector-curvature="0"
534+ clip-path="url(#clipPath4046-4)"
535+ id="rect4038-0"
536+ d="m 625.15625,551.28125 0,159.75 167.40625,0 0,-159.75 -167.40625,0 z m 67.25,31.71875 35.1875,0 C 755.94278,583 760,587.05912 760,615.4375 l 0,35.125 C 760,678.94088 755.94278,683 727.59375,683 l -35.1875,0 C 664.05712,683 660,678.94088 660,650.5625 l 0,-35.125 C 660,587.05912 664.05712,583 692.40625,583 z"
537+ style="opacity:0.6;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4064-5);enable-background:accumulate" />
538+ </g>
539+ <path
540+ sodipodi:type="star"
541+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
542+ id="path3835"
543+ sodipodi:sides="5"
544+ sodipodi:cx="36.909874"
545+ sodipodi:cy="32.246578"
546+ sodipodi:r1="34.566349"
547+ sodipodi:r2="17.283173"
548+ sodipodi:arg1="0.98279372"
549+ sodipodi:arg2="1.6111123"
550+ inkscape:flatsided="false"
551+ inkscape:rounded="0"
552+ inkscape:randomized="0"
553+ d="M 56.083835,61.007519 36.213275,49.515707 15.481673,59.369718 20.270696,36.920527 4.4925571,20.24866 27.322895,17.866109 38.303071,-2.291683 47.623974,18.68501 70.188234,22.898677 53.11853,38.245538 z"
554+ transform="translate(436.94532,636.78999)"
555+ inkscape:transform-center-x="-0.43052153"
556+ inkscape:transform-center-y="-2.8886602" />
557+ </g>
558+</svg>
559
560=== modified file 'tests/charms/broken-maintainer/metadata.yaml'
561--- tests/charms/broken-maintainer/metadata.yaml 2012-05-15 00:04:02 +0000
562+++ tests/charms/broken-maintainer/metadata.yaml 2013-04-19 13:03:34 +0000
563@@ -3,6 +3,8 @@
564 maintainer: test@testhost>
565 description: |
566 <Multi-line description here>
567+categories:
568+ - misc
569 provides:
570 relation-name:
571 interface: interface-name
572
573=== added file 'tests/charms/broken-subordinate/icon.svg'
574--- tests/charms/broken-subordinate/icon.svg 1970-01-01 00:00:00 +0000
575+++ tests/charms/broken-subordinate/icon.svg 2013-04-19 13:03:34 +0000
576@@ -0,0 +1,198 @@
577+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
578+<!-- Created with Inkscape (http://www.inkscape.org/) -->
579+
580+<svg
581+ xmlns:dc="http://purl.org/dc/elements/1.1/"
582+ xmlns:cc="http://creativecommons.org/ns#"
583+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
584+ xmlns:svg="http://www.w3.org/2000/svg"
585+ xmlns="http://www.w3.org/2000/svg"
586+ xmlns:xlink="http://www.w3.org/1999/xlink"
587+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
588+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
589+ width="96"
590+ height="96"
591+ id="svg6687"
592+ version="1.1"
593+ inkscape:version="0.48.4 r9939"
594+ sodipodi:docname="icon.svg">
595+ <defs
596+ id="defs6689">
597+ <filter
598+ color-interpolation-filters="sRGB"
599+ inkscape:collect="always"
600+ id="filter4951">
601+ <feGaussianBlur
602+ inkscape:collect="always"
603+ stdDeviation="0.44250052"
604+ id="feGaussianBlur4953" />
605+ </filter>
606+ <linearGradient
607+ inkscape:collect="always"
608+ xlink:href="#linearGradient4123"
609+ id="linearGradient4537"
610+ gradientUnits="userSpaceOnUse"
611+ x1="0"
612+ y1="970.29498"
613+ x2="144"
614+ y2="970.29498" />
615+ <linearGradient
616+ id="linearGradient4123">
617+ <stop
618+ style="stop-color:#dd4814;stop-opacity:1;"
619+ offset="0"
620+ id="stop4125" />
621+ <stop
622+ style="stop-color:#ef774d;stop-opacity:1;"
623+ offset="1"
624+ id="stop4127" />
625+ </linearGradient>
626+ <linearGradient
627+ inkscape:collect="always"
628+ xlink:href="#linearGradient4176"
629+ id="linearGradient4378"
630+ gradientUnits="userSpaceOnUse"
631+ x1="0"
632+ y1="970.29498"
633+ x2="144"
634+ y2="970.29498" />
635+ <linearGradient
636+ id="linearGradient4176">
637+ <stop
638+ id="stop4178"
639+ offset="0"
640+ style="stop-color:#505050;stop-opacity:1;" />
641+ <stop
642+ id="stop4180"
643+ offset="1"
644+ style="stop-color:#646464;stop-opacity:1;" />
645+ </linearGradient>
646+ <clipPath
647+ clipPathUnits="userSpaceOnUse"
648+ id="clipPath4046-4">
649+ <g
650+ style="fill:#ff00ff;fill-opacity:1;stroke:none"
651+ inkscape:label="Layer 1"
652+ id="g4048-1"
653+ transform="matrix(0,-0.69444445,0.69379664,0,36.812604,681)">
654+ <path
655+ sodipodi:nodetypes="sssssssss"
656+ inkscape:connector-curvature="0"
657+ id="path4050-4"
658+ d="m 46.702703,898.22775 50.594594,0 C 138.16216,898.22775 144,904.06497 144,944.92583 l 0,50.73846 c 0,40.86071 -5.83784,46.69791 -46.702703,46.69791 l -50.594594,0 C 5.8378378,1042.3622 0,1036.525 0,995.66429 l 0,-50.73846 c 0,-40.86086 5.8378378,-46.69808 46.702703,-46.69808 z"
659+ style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline" />
660+ </g>
661+ </clipPath>
662+ <filter
663+ color-interpolation-filters="sRGB"
664+ inkscape:collect="always"
665+ id="filter4064-5">
666+ <feGaussianBlur
667+ inkscape:collect="always"
668+ stdDeviation="1.6357812"
669+ id="feGaussianBlur4066-7" />
670+ </filter>
671+ <linearGradient
672+ inkscape:collect="always"
673+ xlink:href="#linearGradient4176"
674+ id="linearGradient3818"
675+ gradientUnits="userSpaceOnUse"
676+ x1="0"
677+ y1="970.29498"
678+ x2="144"
679+ y2="970.29498" />
680+ <linearGradient
681+ inkscape:collect="always"
682+ xlink:href="#linearGradient4123"
683+ id="linearGradient3820"
684+ gradientUnits="userSpaceOnUse"
685+ x1="0"
686+ y1="970.29498"
687+ x2="144"
688+ y2="970.29498" />
689+ <linearGradient
690+ inkscape:collect="always"
691+ xlink:href="#linearGradient4123"
692+ id="linearGradient3823"
693+ gradientUnits="userSpaceOnUse"
694+ x1="0"
695+ y1="970.29498"
696+ x2="144"
697+ y2="970.29498"
698+ gradientTransform="matrix(0,-0.66666669,0.6660448,0,-171.9742,714.14791)" />
699+ </defs>
700+ <sodipodi:namedview
701+ id="base"
702+ pagecolor="#ffffff"
703+ bordercolor="#666666"
704+ borderopacity="1.0"
705+ inkscape:pageopacity="0.0"
706+ inkscape:pageshadow="2"
707+ inkscape:zoom="2.0861626"
708+ inkscape:cx="-12.487669"
709+ inkscape:cy="-1.1120668"
710+ inkscape:document-units="px"
711+ inkscape:current-layer="layer1"
712+ showgrid="false"
713+ fit-margin-top="0"
714+ fit-margin-left="0"
715+ fit-margin-right="0"
716+ fit-margin-bottom="0"
717+ inkscape:window-width="1440"
718+ inkscape:window-height="876"
719+ inkscape:window-x="0"
720+ inkscape:window-y="24"
721+ inkscape:window-maximized="1" />
722+ <metadata
723+ id="metadata6692">
724+ <rdf:RDF>
725+ <cc:Work
726+ rdf:about="">
727+ <dc:format>image/svg+xml</dc:format>
728+ <dc:type
729+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
730+ <dc:title />
731+ </cc:Work>
732+ </rdf:RDF>
733+ </metadata>
734+ <g
735+ inkscape:label="Layer 1"
736+ inkscape:groupmode="layer"
737+ id="layer1"
738+ transform="translate(-426.28572,-618.14791)">
739+ <g
740+ id="g3825">
741+ <path
742+ style="fill:url(#linearGradient3823);fill-opacity:1.0;fill-rule:nonzero;stroke:none;display:inline"
743+ d="m 426.28572,683.01277 0,-33.72973 c 0,-27.24324 3.88785,-31.13513 31.10302,-31.13513 l 33.79408,0 c 27.21507,0 31.1029,3.89189 31.1029,31.13513 l 0,33.72973 c 0,27.24325 -3.88783,31.13514 -31.1029,31.13514 l -33.79408,0 c -27.21517,0 -31.10302,-3.89189 -31.10302,-31.13514 z"
744+ id="path3107-2"
745+ inkscape:connector-curvature="0"
746+ sodipodi:nodetypes="sssssssss" />
747+ <path
748+ transform="matrix(0.96000003,0,0,0.96000003,-207.3143,60.387891)"
749+ inkscape:connector-curvature="0"
750+ clip-path="url(#clipPath4046-4)"
751+ id="rect4038-0"
752+ d="m 625.15625,551.28125 0,159.75 167.40625,0 0,-159.75 -167.40625,0 z m 67.25,31.71875 35.1875,0 C 755.94278,583 760,587.05912 760,615.4375 l 0,35.125 C 760,678.94088 755.94278,683 727.59375,683 l -35.1875,0 C 664.05712,683 660,678.94088 660,650.5625 l 0,-35.125 C 660,587.05912 664.05712,583 692.40625,583 z"
753+ style="opacity:0.6;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4064-5);enable-background:accumulate" />
754+ </g>
755+ <path
756+ sodipodi:type="star"
757+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
758+ id="path3835"
759+ sodipodi:sides="5"
760+ sodipodi:cx="36.909874"
761+ sodipodi:cy="32.246578"
762+ sodipodi:r1="34.566349"
763+ sodipodi:r2="17.283173"
764+ sodipodi:arg1="0.98279372"
765+ sodipodi:arg2="1.6111123"
766+ inkscape:flatsided="false"
767+ inkscape:rounded="0"
768+ inkscape:randomized="0"
769+ d="M 56.083835,61.007519 36.213275,49.515707 15.481673,59.369718 20.270696,36.920527 4.4925571,20.24866 27.322895,17.866109 38.303071,-2.291683 47.623974,18.68501 70.188234,22.898677 53.11853,38.245538 z"
770+ transform="translate(436.94532,636.78999)"
771+ inkscape:transform-center-x="-0.43052153"
772+ inkscape:transform-center-y="-2.8886602" />
773+ </g>
774+</svg>
775
776=== modified file 'tests/charms/broken-subordinate/metadata.yaml'
777--- tests/charms/broken-subordinate/metadata.yaml 2012-05-14 23:59:48 +0000
778+++ tests/charms/broken-subordinate/metadata.yaml 2013-04-19 13:03:34 +0000
779@@ -4,3 +4,5 @@
780 maintainer: test@testhost
781 description: |
782 <Multi-line description here>
783+categories:
784+ - misc
785
786=== added file 'tests/charms/broken-subordinate2/icon.svg'
787--- tests/charms/broken-subordinate2/icon.svg 1970-01-01 00:00:00 +0000
788+++ tests/charms/broken-subordinate2/icon.svg 2013-04-19 13:03:34 +0000
789@@ -0,0 +1,198 @@
790+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
791+<!-- Created with Inkscape (http://www.inkscape.org/) -->
792+
793+<svg
794+ xmlns:dc="http://purl.org/dc/elements/1.1/"
795+ xmlns:cc="http://creativecommons.org/ns#"
796+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
797+ xmlns:svg="http://www.w3.org/2000/svg"
798+ xmlns="http://www.w3.org/2000/svg"
799+ xmlns:xlink="http://www.w3.org/1999/xlink"
800+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
801+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
802+ width="96"
803+ height="96"
804+ id="svg6687"
805+ version="1.1"
806+ inkscape:version="0.48.4 r9939"
807+ sodipodi:docname="icon.svg">
808+ <defs
809+ id="defs6689">
810+ <filter
811+ color-interpolation-filters="sRGB"
812+ inkscape:collect="always"
813+ id="filter4951">
814+ <feGaussianBlur
815+ inkscape:collect="always"
816+ stdDeviation="0.44250052"
817+ id="feGaussianBlur4953" />
818+ </filter>
819+ <linearGradient
820+ inkscape:collect="always"
821+ xlink:href="#linearGradient4123"
822+ id="linearGradient4537"
823+ gradientUnits="userSpaceOnUse"
824+ x1="0"
825+ y1="970.29498"
826+ x2="144"
827+ y2="970.29498" />
828+ <linearGradient
829+ id="linearGradient4123">
830+ <stop
831+ style="stop-color:#dd4814;stop-opacity:1;"
832+ offset="0"
833+ id="stop4125" />
834+ <stop
835+ style="stop-color:#ef774d;stop-opacity:1;"
836+ offset="1"
837+ id="stop4127" />
838+ </linearGradient>
839+ <linearGradient
840+ inkscape:collect="always"
841+ xlink:href="#linearGradient4176"
842+ id="linearGradient4378"
843+ gradientUnits="userSpaceOnUse"
844+ x1="0"
845+ y1="970.29498"
846+ x2="144"
847+ y2="970.29498" />
848+ <linearGradient
849+ id="linearGradient4176">
850+ <stop
851+ id="stop4178"
852+ offset="0"
853+ style="stop-color:#505050;stop-opacity:1;" />
854+ <stop
855+ id="stop4180"
856+ offset="1"
857+ style="stop-color:#646464;stop-opacity:1;" />
858+ </linearGradient>
859+ <clipPath
860+ clipPathUnits="userSpaceOnUse"
861+ id="clipPath4046-4">
862+ <g
863+ style="fill:#ff00ff;fill-opacity:1;stroke:none"
864+ inkscape:label="Layer 1"
865+ id="g4048-1"
866+ transform="matrix(0,-0.69444445,0.69379664,0,36.812604,681)">
867+ <path
868+ sodipodi:nodetypes="sssssssss"
869+ inkscape:connector-curvature="0"
870+ id="path4050-4"
871+ d="m 46.702703,898.22775 50.594594,0 C 138.16216,898.22775 144,904.06497 144,944.92583 l 0,50.73846 c 0,40.86071 -5.83784,46.69791 -46.702703,46.69791 l -50.594594,0 C 5.8378378,1042.3622 0,1036.525 0,995.66429 l 0,-50.73846 c 0,-40.86086 5.8378378,-46.69808 46.702703,-46.69808 z"
872+ style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline" />
873+ </g>
874+ </clipPath>
875+ <filter
876+ color-interpolation-filters="sRGB"
877+ inkscape:collect="always"
878+ id="filter4064-5">
879+ <feGaussianBlur
880+ inkscape:collect="always"
881+ stdDeviation="1.6357812"
882+ id="feGaussianBlur4066-7" />
883+ </filter>
884+ <linearGradient
885+ inkscape:collect="always"
886+ xlink:href="#linearGradient4176"
887+ id="linearGradient3818"
888+ gradientUnits="userSpaceOnUse"
889+ x1="0"
890+ y1="970.29498"
891+ x2="144"
892+ y2="970.29498" />
893+ <linearGradient
894+ inkscape:collect="always"
895+ xlink:href="#linearGradient4123"
896+ id="linearGradient3820"
897+ gradientUnits="userSpaceOnUse"
898+ x1="0"
899+ y1="970.29498"
900+ x2="144"
901+ y2="970.29498" />
902+ <linearGradient
903+ inkscape:collect="always"
904+ xlink:href="#linearGradient4123"
905+ id="linearGradient3823"
906+ gradientUnits="userSpaceOnUse"
907+ x1="0"
908+ y1="970.29498"
909+ x2="144"
910+ y2="970.29498"
911+ gradientTransform="matrix(0,-0.66666669,0.6660448,0,-171.9742,714.14791)" />
912+ </defs>
913+ <sodipodi:namedview
914+ id="base"
915+ pagecolor="#ffffff"
916+ bordercolor="#666666"
917+ borderopacity="1.0"
918+ inkscape:pageopacity="0.0"
919+ inkscape:pageshadow="2"
920+ inkscape:zoom="2.0861626"
921+ inkscape:cx="-12.487669"
922+ inkscape:cy="-1.1120668"
923+ inkscape:document-units="px"
924+ inkscape:current-layer="layer1"
925+ showgrid="false"
926+ fit-margin-top="0"
927+ fit-margin-left="0"
928+ fit-margin-right="0"
929+ fit-margin-bottom="0"
930+ inkscape:window-width="1440"
931+ inkscape:window-height="876"
932+ inkscape:window-x="0"
933+ inkscape:window-y="24"
934+ inkscape:window-maximized="1" />
935+ <metadata
936+ id="metadata6692">
937+ <rdf:RDF>
938+ <cc:Work
939+ rdf:about="">
940+ <dc:format>image/svg+xml</dc:format>
941+ <dc:type
942+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
943+ <dc:title />
944+ </cc:Work>
945+ </rdf:RDF>
946+ </metadata>
947+ <g
948+ inkscape:label="Layer 1"
949+ inkscape:groupmode="layer"
950+ id="layer1"
951+ transform="translate(-426.28572,-618.14791)">
952+ <g
953+ id="g3825">
954+ <path
955+ style="fill:url(#linearGradient3823);fill-opacity:1.0;fill-rule:nonzero;stroke:none;display:inline"
956+ d="m 426.28572,683.01277 0,-33.72973 c 0,-27.24324 3.88785,-31.13513 31.10302,-31.13513 l 33.79408,0 c 27.21507,0 31.1029,3.89189 31.1029,31.13513 l 0,33.72973 c 0,27.24325 -3.88783,31.13514 -31.1029,31.13514 l -33.79408,0 c -27.21517,0 -31.10302,-3.89189 -31.10302,-31.13514 z"
957+ id="path3107-2"
958+ inkscape:connector-curvature="0"
959+ sodipodi:nodetypes="sssssssss" />
960+ <path
961+ transform="matrix(0.96000003,0,0,0.96000003,-207.3143,60.387891)"
962+ inkscape:connector-curvature="0"
963+ clip-path="url(#clipPath4046-4)"
964+ id="rect4038-0"
965+ d="m 625.15625,551.28125 0,159.75 167.40625,0 0,-159.75 -167.40625,0 z m 67.25,31.71875 35.1875,0 C 755.94278,583 760,587.05912 760,615.4375 l 0,35.125 C 760,678.94088 755.94278,683 727.59375,683 l -35.1875,0 C 664.05712,683 660,678.94088 660,650.5625 l 0,-35.125 C 660,587.05912 664.05712,583 692.40625,583 z"
966+ style="opacity:0.6;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4064-5);enable-background:accumulate" />
967+ </g>
968+ <path
969+ sodipodi:type="star"
970+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
971+ id="path3835"
972+ sodipodi:sides="5"
973+ sodipodi:cx="36.909874"
974+ sodipodi:cy="32.246578"
975+ sodipodi:r1="34.566349"
976+ sodipodi:r2="17.283173"
977+ sodipodi:arg1="0.98279372"
978+ sodipodi:arg2="1.6111123"
979+ inkscape:flatsided="false"
980+ inkscape:rounded="0"
981+ inkscape:randomized="0"
982+ d="M 56.083835,61.007519 36.213275,49.515707 15.481673,59.369718 20.270696,36.920527 4.4925571,20.24866 27.322895,17.866109 38.303071,-2.291683 47.623974,18.68501 70.188234,22.898677 53.11853,38.245538 z"
983+ transform="translate(436.94532,636.78999)"
984+ inkscape:transform-center-x="-0.43052153"
985+ inkscape:transform-center-y="-2.8886602" />
986+ </g>
987+</svg>
988
989=== modified file 'tests/charms/broken-subordinate2/metadata.yaml'
990--- tests/charms/broken-subordinate2/metadata.yaml 2012-05-14 23:59:48 +0000
991+++ tests/charms/broken-subordinate2/metadata.yaml 2013-04-19 13:03:34 +0000
992@@ -4,6 +4,8 @@
993 maintainer: test@testhost
994 description: |
995 <Multi-line description here>
996+categories:
997+ - misc
998 requires:
999 foo:
1000 interface: bar
1001
1002=== added file 'tests/charms/missing-maintainer/icon.svg'
1003--- tests/charms/missing-maintainer/icon.svg 1970-01-01 00:00:00 +0000
1004+++ tests/charms/missing-maintainer/icon.svg 2013-04-19 13:03:34 +0000
1005@@ -0,0 +1,198 @@
1006+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1007+<!-- Created with Inkscape (http://www.inkscape.org/) -->
1008+
1009+<svg
1010+ xmlns:dc="http://purl.org/dc/elements/1.1/"
1011+ xmlns:cc="http://creativecommons.org/ns#"
1012+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
1013+ xmlns:svg="http://www.w3.org/2000/svg"
1014+ xmlns="http://www.w3.org/2000/svg"
1015+ xmlns:xlink="http://www.w3.org/1999/xlink"
1016+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
1017+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
1018+ width="96"
1019+ height="96"
1020+ id="svg6687"
1021+ version="1.1"
1022+ inkscape:version="0.48.4 r9939"
1023+ sodipodi:docname="icon.svg">
1024+ <defs
1025+ id="defs6689">
1026+ <filter
1027+ color-interpolation-filters="sRGB"
1028+ inkscape:collect="always"
1029+ id="filter4951">
1030+ <feGaussianBlur
1031+ inkscape:collect="always"
1032+ stdDeviation="0.44250052"
1033+ id="feGaussianBlur4953" />
1034+ </filter>
1035+ <linearGradient
1036+ inkscape:collect="always"
1037+ xlink:href="#linearGradient4123"
1038+ id="linearGradient4537"
1039+ gradientUnits="userSpaceOnUse"
1040+ x1="0"
1041+ y1="970.29498"
1042+ x2="144"
1043+ y2="970.29498" />
1044+ <linearGradient
1045+ id="linearGradient4123">
1046+ <stop
1047+ style="stop-color:#dd4814;stop-opacity:1;"
1048+ offset="0"
1049+ id="stop4125" />
1050+ <stop
1051+ style="stop-color:#ef774d;stop-opacity:1;"
1052+ offset="1"
1053+ id="stop4127" />
1054+ </linearGradient>
1055+ <linearGradient
1056+ inkscape:collect="always"
1057+ xlink:href="#linearGradient4176"
1058+ id="linearGradient4378"
1059+ gradientUnits="userSpaceOnUse"
1060+ x1="0"
1061+ y1="970.29498"
1062+ x2="144"
1063+ y2="970.29498" />
1064+ <linearGradient
1065+ id="linearGradient4176">
1066+ <stop
1067+ id="stop4178"
1068+ offset="0"
1069+ style="stop-color:#505050;stop-opacity:1;" />
1070+ <stop
1071+ id="stop4180"
1072+ offset="1"
1073+ style="stop-color:#646464;stop-opacity:1;" />
1074+ </linearGradient>
1075+ <clipPath
1076+ clipPathUnits="userSpaceOnUse"
1077+ id="clipPath4046-4">
1078+ <g
1079+ style="fill:#ff00ff;fill-opacity:1;stroke:none"
1080+ inkscape:label="Layer 1"
1081+ id="g4048-1"
1082+ transform="matrix(0,-0.69444445,0.69379664,0,36.812604,681)">
1083+ <path
1084+ sodipodi:nodetypes="sssssssss"
1085+ inkscape:connector-curvature="0"
1086+ id="path4050-4"
1087+ d="m 46.702703,898.22775 50.594594,0 C 138.16216,898.22775 144,904.06497 144,944.92583 l 0,50.73846 c 0,40.86071 -5.83784,46.69791 -46.702703,46.69791 l -50.594594,0 C 5.8378378,1042.3622 0,1036.525 0,995.66429 l 0,-50.73846 c 0,-40.86086 5.8378378,-46.69808 46.702703,-46.69808 z"
1088+ style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline" />
1089+ </g>
1090+ </clipPath>
1091+ <filter
1092+ color-interpolation-filters="sRGB"
1093+ inkscape:collect="always"
1094+ id="filter4064-5">
1095+ <feGaussianBlur
1096+ inkscape:collect="always"
1097+ stdDeviation="1.6357812"
1098+ id="feGaussianBlur4066-7" />
1099+ </filter>
1100+ <linearGradient
1101+ inkscape:collect="always"
1102+ xlink:href="#linearGradient4176"
1103+ id="linearGradient3818"
1104+ gradientUnits="userSpaceOnUse"
1105+ x1="0"
1106+ y1="970.29498"
1107+ x2="144"
1108+ y2="970.29498" />
1109+ <linearGradient
1110+ inkscape:collect="always"
1111+ xlink:href="#linearGradient4123"
1112+ id="linearGradient3820"
1113+ gradientUnits="userSpaceOnUse"
1114+ x1="0"
1115+ y1="970.29498"
1116+ x2="144"
1117+ y2="970.29498" />
1118+ <linearGradient
1119+ inkscape:collect="always"
1120+ xlink:href="#linearGradient4123"
1121+ id="linearGradient3823"
1122+ gradientUnits="userSpaceOnUse"
1123+ x1="0"
1124+ y1="970.29498"
1125+ x2="144"
1126+ y2="970.29498"
1127+ gradientTransform="matrix(0,-0.66666669,0.6660448,0,-171.9742,714.14791)" />
1128+ </defs>
1129+ <sodipodi:namedview
1130+ id="base"
1131+ pagecolor="#ffffff"
1132+ bordercolor="#666666"
1133+ borderopacity="1.0"
1134+ inkscape:pageopacity="0.0"
1135+ inkscape:pageshadow="2"
1136+ inkscape:zoom="2.0861626"
1137+ inkscape:cx="-12.487669"
1138+ inkscape:cy="-1.1120668"
1139+ inkscape:document-units="px"
1140+ inkscape:current-layer="layer1"
1141+ showgrid="false"
1142+ fit-margin-top="0"
1143+ fit-margin-left="0"
1144+ fit-margin-right="0"
1145+ fit-margin-bottom="0"
1146+ inkscape:window-width="1440"
1147+ inkscape:window-height="876"
1148+ inkscape:window-x="0"
1149+ inkscape:window-y="24"
1150+ inkscape:window-maximized="1" />
1151+ <metadata
1152+ id="metadata6692">
1153+ <rdf:RDF>
1154+ <cc:Work
1155+ rdf:about="">
1156+ <dc:format>image/svg+xml</dc:format>
1157+ <dc:type
1158+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
1159+ <dc:title />
1160+ </cc:Work>
1161+ </rdf:RDF>
1162+ </metadata>
1163+ <g
1164+ inkscape:label="Layer 1"
1165+ inkscape:groupmode="layer"
1166+ id="layer1"
1167+ transform="translate(-426.28572,-618.14791)">
1168+ <g
1169+ id="g3825">
1170+ <path
1171+ style="fill:url(#linearGradient3823);fill-opacity:1.0;fill-rule:nonzero;stroke:none;display:inline"
1172+ d="m 426.28572,683.01277 0,-33.72973 c 0,-27.24324 3.88785,-31.13513 31.10302,-31.13513 l 33.79408,0 c 27.21507,0 31.1029,3.89189 31.1029,31.13513 l 0,33.72973 c 0,27.24325 -3.88783,31.13514 -31.1029,31.13514 l -33.79408,0 c -27.21517,0 -31.10302,-3.89189 -31.10302,-31.13514 z"
1173+ id="path3107-2"
1174+ inkscape:connector-curvature="0"
1175+ sodipodi:nodetypes="sssssssss" />
1176+ <path
1177+ transform="matrix(0.96000003,0,0,0.96000003,-207.3143,60.387891)"
1178+ inkscape:connector-curvature="0"
1179+ clip-path="url(#clipPath4046-4)"
1180+ id="rect4038-0"
1181+ d="m 625.15625,551.28125 0,159.75 167.40625,0 0,-159.75 -167.40625,0 z m 67.25,31.71875 35.1875,0 C 755.94278,583 760,587.05912 760,615.4375 l 0,35.125 C 760,678.94088 755.94278,683 727.59375,683 l -35.1875,0 C 664.05712,683 660,678.94088 660,650.5625 l 0,-35.125 C 660,587.05912 664.05712,583 692.40625,583 z"
1182+ style="opacity:0.6;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4064-5);enable-background:accumulate" />
1183+ </g>
1184+ <path
1185+ sodipodi:type="star"
1186+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
1187+ id="path3835"
1188+ sodipodi:sides="5"
1189+ sodipodi:cx="36.909874"
1190+ sodipodi:cy="32.246578"
1191+ sodipodi:r1="34.566349"
1192+ sodipodi:r2="17.283173"
1193+ sodipodi:arg1="0.98279372"
1194+ sodipodi:arg2="1.6111123"
1195+ inkscape:flatsided="false"
1196+ inkscape:rounded="0"
1197+ inkscape:randomized="0"
1198+ d="M 56.083835,61.007519 36.213275,49.515707 15.481673,59.369718 20.270696,36.920527 4.4925571,20.24866 27.322895,17.866109 38.303071,-2.291683 47.623974,18.68501 70.188234,22.898677 53.11853,38.245538 z"
1199+ transform="translate(436.94532,636.78999)"
1200+ inkscape:transform-center-x="-0.43052153"
1201+ inkscape:transform-center-y="-2.8886602" />
1202+ </g>
1203+</svg>
1204
1205=== modified file 'tests/charms/missing-maintainer/metadata.yaml'
1206--- tests/charms/missing-maintainer/metadata.yaml 2012-05-15 00:04:02 +0000
1207+++ tests/charms/missing-maintainer/metadata.yaml 2013-04-19 13:03:34 +0000
1208@@ -2,6 +2,8 @@
1209 summary: <Fill in summary here>
1210 description: |
1211 <Multi-line description here>
1212+categories:
1213+ - misc
1214 provides:
1215 relation-name:
1216 interface: interface-name
1217
1218=== added file 'tests/charms/mod-spdy/icon.svg'
1219--- tests/charms/mod-spdy/icon.svg 1970-01-01 00:00:00 +0000
1220+++ tests/charms/mod-spdy/icon.svg 2013-04-19 13:03:34 +0000
1221@@ -0,0 +1,198 @@
1222+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1223+<!-- Created with Inkscape (http://www.inkscape.org/) -->
1224+
1225+<svg
1226+ xmlns:dc="http://purl.org/dc/elements/1.1/"
1227+ xmlns:cc="http://creativecommons.org/ns#"
1228+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
1229+ xmlns:svg="http://www.w3.org/2000/svg"
1230+ xmlns="http://www.w3.org/2000/svg"
1231+ xmlns:xlink="http://www.w3.org/1999/xlink"
1232+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
1233+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
1234+ width="96"
1235+ height="96"
1236+ id="svg6687"
1237+ version="1.1"
1238+ inkscape:version="0.48.4 r9939"
1239+ sodipodi:docname="icon.svg">
1240+ <defs
1241+ id="defs6689">
1242+ <filter
1243+ color-interpolation-filters="sRGB"
1244+ inkscape:collect="always"
1245+ id="filter4951">
1246+ <feGaussianBlur
1247+ inkscape:collect="always"
1248+ stdDeviation="0.44250052"
1249+ id="feGaussianBlur4953" />
1250+ </filter>
1251+ <linearGradient
1252+ inkscape:collect="always"
1253+ xlink:href="#linearGradient4123"
1254+ id="linearGradient4537"
1255+ gradientUnits="userSpaceOnUse"
1256+ x1="0"
1257+ y1="970.29498"
1258+ x2="144"
1259+ y2="970.29498" />
1260+ <linearGradient
1261+ id="linearGradient4123">
1262+ <stop
1263+ style="stop-color:#dd4814;stop-opacity:1;"
1264+ offset="0"
1265+ id="stop4125" />
1266+ <stop
1267+ style="stop-color:#ef774d;stop-opacity:1;"
1268+ offset="1"
1269+ id="stop4127" />
1270+ </linearGradient>
1271+ <linearGradient
1272+ inkscape:collect="always"
1273+ xlink:href="#linearGradient4176"
1274+ id="linearGradient4378"
1275+ gradientUnits="userSpaceOnUse"
1276+ x1="0"
1277+ y1="970.29498"
1278+ x2="144"
1279+ y2="970.29498" />
1280+ <linearGradient
1281+ id="linearGradient4176">
1282+ <stop
1283+ id="stop4178"
1284+ offset="0"
1285+ style="stop-color:#505050;stop-opacity:1;" />
1286+ <stop
1287+ id="stop4180"
1288+ offset="1"
1289+ style="stop-color:#646464;stop-opacity:1;" />
1290+ </linearGradient>
1291+ <clipPath
1292+ clipPathUnits="userSpaceOnUse"
1293+ id="clipPath4046-4">
1294+ <g
1295+ style="fill:#ff00ff;fill-opacity:1;stroke:none"
1296+ inkscape:label="Layer 1"
1297+ id="g4048-1"
1298+ transform="matrix(0,-0.69444445,0.69379664,0,36.812604,681)">
1299+ <path
1300+ sodipodi:nodetypes="sssssssss"
1301+ inkscape:connector-curvature="0"
1302+ id="path4050-4"
1303+ d="m 46.702703,898.22775 50.594594,0 C 138.16216,898.22775 144,904.06497 144,944.92583 l 0,50.73846 c 0,40.86071 -5.83784,46.69791 -46.702703,46.69791 l -50.594594,0 C 5.8378378,1042.3622 0,1036.525 0,995.66429 l 0,-50.73846 c 0,-40.86086 5.8378378,-46.69808 46.702703,-46.69808 z"
1304+ style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline" />
1305+ </g>
1306+ </clipPath>
1307+ <filter
1308+ color-interpolation-filters="sRGB"
1309+ inkscape:collect="always"
1310+ id="filter4064-5">
1311+ <feGaussianBlur
1312+ inkscape:collect="always"
1313+ stdDeviation="1.6357812"
1314+ id="feGaussianBlur4066-7" />
1315+ </filter>
1316+ <linearGradient
1317+ inkscape:collect="always"
1318+ xlink:href="#linearGradient4176"
1319+ id="linearGradient3818"
1320+ gradientUnits="userSpaceOnUse"
1321+ x1="0"
1322+ y1="970.29498"
1323+ x2="144"
1324+ y2="970.29498" />
1325+ <linearGradient
1326+ inkscape:collect="always"
1327+ xlink:href="#linearGradient4123"
1328+ id="linearGradient3820"
1329+ gradientUnits="userSpaceOnUse"
1330+ x1="0"
1331+ y1="970.29498"
1332+ x2="144"
1333+ y2="970.29498" />
1334+ <linearGradient
1335+ inkscape:collect="always"
1336+ xlink:href="#linearGradient4123"
1337+ id="linearGradient3823"
1338+ gradientUnits="userSpaceOnUse"
1339+ x1="0"
1340+ y1="970.29498"
1341+ x2="144"
1342+ y2="970.29498"
1343+ gradientTransform="matrix(0,-0.66666669,0.6660448,0,-171.9742,714.14791)" />
1344+ </defs>
1345+ <sodipodi:namedview
1346+ id="base"
1347+ pagecolor="#ffffff"
1348+ bordercolor="#666666"
1349+ borderopacity="1.0"
1350+ inkscape:pageopacity="0.0"
1351+ inkscape:pageshadow="2"
1352+ inkscape:zoom="2.0861626"
1353+ inkscape:cx="-12.487669"
1354+ inkscape:cy="-1.1120668"
1355+ inkscape:document-units="px"
1356+ inkscape:current-layer="layer1"
1357+ showgrid="false"
1358+ fit-margin-top="0"
1359+ fit-margin-left="0"
1360+ fit-margin-right="0"
1361+ fit-margin-bottom="0"
1362+ inkscape:window-width="1440"
1363+ inkscape:window-height="876"
1364+ inkscape:window-x="0"
1365+ inkscape:window-y="24"
1366+ inkscape:window-maximized="1" />
1367+ <metadata
1368+ id="metadata6692">
1369+ <rdf:RDF>
1370+ <cc:Work
1371+ rdf:about="">
1372+ <dc:format>image/svg+xml</dc:format>
1373+ <dc:type
1374+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
1375+ <dc:title />
1376+ </cc:Work>
1377+ </rdf:RDF>
1378+ </metadata>
1379+ <g
1380+ inkscape:label="Layer 1"
1381+ inkscape:groupmode="layer"
1382+ id="layer1"
1383+ transform="translate(-426.28572,-618.14791)">
1384+ <g
1385+ id="g3825">
1386+ <path
1387+ style="fill:url(#linearGradient3823);fill-opacity:1.0;fill-rule:nonzero;stroke:none;display:inline"
1388+ d="m 426.28572,683.01277 0,-33.72973 c 0,-27.24324 3.88785,-31.13513 31.10302,-31.13513 l 33.79408,0 c 27.21507,0 31.1029,3.89189 31.1029,31.13513 l 0,33.72973 c 0,27.24325 -3.88783,31.13514 -31.1029,31.13514 l -33.79408,0 c -27.21517,0 -31.10302,-3.89189 -31.10302,-31.13514 z"
1389+ id="path3107-2"
1390+ inkscape:connector-curvature="0"
1391+ sodipodi:nodetypes="sssssssss" />
1392+ <path
1393+ transform="matrix(0.96000003,0,0,0.96000003,-207.3143,60.387891)"
1394+ inkscape:connector-curvature="0"
1395+ clip-path="url(#clipPath4046-4)"
1396+ id="rect4038-0"
1397+ d="m 625.15625,551.28125 0,159.75 167.40625,0 0,-159.75 -167.40625,0 z m 67.25,31.71875 35.1875,0 C 755.94278,583 760,587.05912 760,615.4375 l 0,35.125 C 760,678.94088 755.94278,683 727.59375,683 l -35.1875,0 C 664.05712,683 660,678.94088 660,650.5625 l 0,-35.125 C 660,587.05912 664.05712,583 692.40625,583 z"
1398+ style="opacity:0.6;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4064-5);enable-background:accumulate" />
1399+ </g>
1400+ <path
1401+ sodipodi:type="star"
1402+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
1403+ id="path3835"
1404+ sodipodi:sides="5"
1405+ sodipodi:cx="36.909874"
1406+ sodipodi:cy="32.246578"
1407+ sodipodi:r1="34.566349"
1408+ sodipodi:r2="17.283173"
1409+ sodipodi:arg1="0.98279372"
1410+ sodipodi:arg2="1.6111123"
1411+ inkscape:flatsided="false"
1412+ inkscape:rounded="0"
1413+ inkscape:randomized="0"
1414+ d="M 56.083835,61.007519 36.213275,49.515707 15.481673,59.369718 20.270696,36.920527 4.4925571,20.24866 27.322895,17.866109 38.303071,-2.291683 47.623974,18.68501 70.188234,22.898677 53.11853,38.245538 z"
1415+ transform="translate(436.94532,636.78999)"
1416+ inkscape:transform-center-x="-0.43052153"
1417+ inkscape:transform-center-y="-2.8886602" />
1418+ </g>
1419+</svg>
1420
1421=== modified file 'tests/charms/mod-spdy/metadata.yaml'
1422--- tests/charms/mod-spdy/metadata.yaml 2012-05-14 23:59:48 +0000
1423+++ tests/charms/mod-spdy/metadata.yaml 2013-04-19 13:03:34 +0000
1424@@ -6,6 +6,8 @@
1425 mod_spdy is a SPDY module for Apache 2.2 that allows your web server
1426 to take advantage of SPDY features like stream multiplexing and header
1427 compression.
1428+categories:
1429+ - misc
1430 requires:
1431 juju-info:
1432 interface: juju-info
1433
1434=== added file 'tests/charms/unknown-metadata/icon.svg'
1435--- tests/charms/unknown-metadata/icon.svg 1970-01-01 00:00:00 +0000
1436+++ tests/charms/unknown-metadata/icon.svg 2013-04-19 13:03:34 +0000
1437@@ -0,0 +1,198 @@
1438+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1439+<!-- Created with Inkscape (http://www.inkscape.org/) -->
1440+
1441+<svg
1442+ xmlns:dc="http://purl.org/dc/elements/1.1/"
1443+ xmlns:cc="http://creativecommons.org/ns#"
1444+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
1445+ xmlns:svg="http://www.w3.org/2000/svg"
1446+ xmlns="http://www.w3.org/2000/svg"
1447+ xmlns:xlink="http://www.w3.org/1999/xlink"
1448+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
1449+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
1450+ width="96"
1451+ height="96"
1452+ id="svg6687"
1453+ version="1.1"
1454+ inkscape:version="0.48.4 r9939"
1455+ sodipodi:docname="icon.svg">
1456+ <defs
1457+ id="defs6689">
1458+ <filter
1459+ color-interpolation-filters="sRGB"
1460+ inkscape:collect="always"
1461+ id="filter4951">
1462+ <feGaussianBlur
1463+ inkscape:collect="always"
1464+ stdDeviation="0.44250052"
1465+ id="feGaussianBlur4953" />
1466+ </filter>
1467+ <linearGradient
1468+ inkscape:collect="always"
1469+ xlink:href="#linearGradient4123"
1470+ id="linearGradient4537"
1471+ gradientUnits="userSpaceOnUse"
1472+ x1="0"
1473+ y1="970.29498"
1474+ x2="144"
1475+ y2="970.29498" />
1476+ <linearGradient
1477+ id="linearGradient4123">
1478+ <stop
1479+ style="stop-color:#dd4814;stop-opacity:1;"
1480+ offset="0"
1481+ id="stop4125" />
1482+ <stop
1483+ style="stop-color:#ef774d;stop-opacity:1;"
1484+ offset="1"
1485+ id="stop4127" />
1486+ </linearGradient>
1487+ <linearGradient
1488+ inkscape:collect="always"
1489+ xlink:href="#linearGradient4176"
1490+ id="linearGradient4378"
1491+ gradientUnits="userSpaceOnUse"
1492+ x1="0"
1493+ y1="970.29498"
1494+ x2="144"
1495+ y2="970.29498" />
1496+ <linearGradient
1497+ id="linearGradient4176">
1498+ <stop
1499+ id="stop4178"
1500+ offset="0"
1501+ style="stop-color:#505050;stop-opacity:1;" />
1502+ <stop
1503+ id="stop4180"
1504+ offset="1"
1505+ style="stop-color:#646464;stop-opacity:1;" />
1506+ </linearGradient>
1507+ <clipPath
1508+ clipPathUnits="userSpaceOnUse"
1509+ id="clipPath4046-4">
1510+ <g
1511+ style="fill:#ff00ff;fill-opacity:1;stroke:none"
1512+ inkscape:label="Layer 1"
1513+ id="g4048-1"
1514+ transform="matrix(0,-0.69444445,0.69379664,0,36.812604,681)">
1515+ <path
1516+ sodipodi:nodetypes="sssssssss"
1517+ inkscape:connector-curvature="0"
1518+ id="path4050-4"
1519+ d="m 46.702703,898.22775 50.594594,0 C 138.16216,898.22775 144,904.06497 144,944.92583 l 0,50.73846 c 0,40.86071 -5.83784,46.69791 -46.702703,46.69791 l -50.594594,0 C 5.8378378,1042.3622 0,1036.525 0,995.66429 l 0,-50.73846 c 0,-40.86086 5.8378378,-46.69808 46.702703,-46.69808 z"
1520+ style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline" />
1521+ </g>
1522+ </clipPath>
1523+ <filter
1524+ color-interpolation-filters="sRGB"
1525+ inkscape:collect="always"
1526+ id="filter4064-5">
1527+ <feGaussianBlur
1528+ inkscape:collect="always"
1529+ stdDeviation="1.6357812"
1530+ id="feGaussianBlur4066-7" />
1531+ </filter>
1532+ <linearGradient
1533+ inkscape:collect="always"
1534+ xlink:href="#linearGradient4176"
1535+ id="linearGradient3818"
1536+ gradientUnits="userSpaceOnUse"
1537+ x1="0"
1538+ y1="970.29498"
1539+ x2="144"
1540+ y2="970.29498" />
1541+ <linearGradient
1542+ inkscape:collect="always"
1543+ xlink:href="#linearGradient4123"
1544+ id="linearGradient3820"
1545+ gradientUnits="userSpaceOnUse"
1546+ x1="0"
1547+ y1="970.29498"
1548+ x2="144"
1549+ y2="970.29498" />
1550+ <linearGradient
1551+ inkscape:collect="always"
1552+ xlink:href="#linearGradient4123"
1553+ id="linearGradient3823"
1554+ gradientUnits="userSpaceOnUse"
1555+ x1="0"
1556+ y1="970.29498"
1557+ x2="144"
1558+ y2="970.29498"
1559+ gradientTransform="matrix(0,-0.66666669,0.6660448,0,-171.9742,714.14791)" />
1560+ </defs>
1561+ <sodipodi:namedview
1562+ id="base"
1563+ pagecolor="#ffffff"
1564+ bordercolor="#666666"
1565+ borderopacity="1.0"
1566+ inkscape:pageopacity="0.0"
1567+ inkscape:pageshadow="2"
1568+ inkscape:zoom="2.0861626"
1569+ inkscape:cx="-12.487669"
1570+ inkscape:cy="-1.1120668"
1571+ inkscape:document-units="px"
1572+ inkscape:current-layer="layer1"
1573+ showgrid="false"
1574+ fit-margin-top="0"
1575+ fit-margin-left="0"
1576+ fit-margin-right="0"
1577+ fit-margin-bottom="0"
1578+ inkscape:window-width="1440"
1579+ inkscape:window-height="876"
1580+ inkscape:window-x="0"
1581+ inkscape:window-y="24"
1582+ inkscape:window-maximized="1" />
1583+ <metadata
1584+ id="metadata6692">
1585+ <rdf:RDF>
1586+ <cc:Work
1587+ rdf:about="">
1588+ <dc:format>image/svg+xml</dc:format>
1589+ <dc:type
1590+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
1591+ <dc:title />
1592+ </cc:Work>
1593+ </rdf:RDF>
1594+ </metadata>
1595+ <g
1596+ inkscape:label="Layer 1"
1597+ inkscape:groupmode="layer"
1598+ id="layer1"
1599+ transform="translate(-426.28572,-618.14791)">
1600+ <g
1601+ id="g3825">
1602+ <path
1603+ style="fill:url(#linearGradient3823);fill-opacity:1.0;fill-rule:nonzero;stroke:none;display:inline"
1604+ d="m 426.28572,683.01277 0,-33.72973 c 0,-27.24324 3.88785,-31.13513 31.10302,-31.13513 l 33.79408,0 c 27.21507,0 31.1029,3.89189 31.1029,31.13513 l 0,33.72973 c 0,27.24325 -3.88783,31.13514 -31.1029,31.13514 l -33.79408,0 c -27.21517,0 -31.10302,-3.89189 -31.10302,-31.13514 z"
1605+ id="path3107-2"
1606+ inkscape:connector-curvature="0"
1607+ sodipodi:nodetypes="sssssssss" />
1608+ <path
1609+ transform="matrix(0.96000003,0,0,0.96000003,-207.3143,60.387891)"
1610+ inkscape:connector-curvature="0"
1611+ clip-path="url(#clipPath4046-4)"
1612+ id="rect4038-0"
1613+ d="m 625.15625,551.28125 0,159.75 167.40625,0 0,-159.75 -167.40625,0 z m 67.25,31.71875 35.1875,0 C 755.94278,583 760,587.05912 760,615.4375 l 0,35.125 C 760,678.94088 755.94278,683 727.59375,683 l -35.1875,0 C 664.05712,683 660,678.94088 660,650.5625 l 0,-35.125 C 660,587.05912 664.05712,583 692.40625,583 z"
1614+ style="opacity:0.6;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4064-5);enable-background:accumulate" />
1615+ </g>
1616+ <path
1617+ sodipodi:type="star"
1618+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
1619+ id="path3835"
1620+ sodipodi:sides="5"
1621+ sodipodi:cx="36.909874"
1622+ sodipodi:cy="32.246578"
1623+ sodipodi:r1="34.566349"
1624+ sodipodi:r2="17.283173"
1625+ sodipodi:arg1="0.98279372"
1626+ sodipodi:arg2="1.6111123"
1627+ inkscape:flatsided="false"
1628+ inkscape:rounded="0"
1629+ inkscape:randomized="0"
1630+ d="M 56.083835,61.007519 36.213275,49.515707 15.481673,59.369718 20.270696,36.920527 4.4925571,20.24866 27.322895,17.866109 38.303071,-2.291683 47.623974,18.68501 70.188234,22.898677 53.11853,38.245538 z"
1631+ transform="translate(436.94532,636.78999)"
1632+ inkscape:transform-center-x="-0.43052153"
1633+ inkscape:transform-center-y="-2.8886602" />
1634+ </g>
1635+</svg>
1636
1637=== modified file 'tests/charms/unknown-metadata/metadata.yaml'
1638--- tests/charms/unknown-metadata/metadata.yaml 2012-09-30 16:07:25 +0000
1639+++ tests/charms/unknown-metadata/metadata.yaml 2013-04-19 13:03:34 +0000
1640@@ -4,6 +4,8 @@
1641 maintainer: test@testhost
1642 description: |
1643 <Multi-line description here>
1644+categories:
1645+ - misc
1646 provides:
1647 relation-name:
1648 baz: boom
1649
1650=== modified file 'tests/create/no-package-exists/metadata.yaml'
1651--- tests/create/no-package-exists/metadata.yaml 2012-05-14 22:42:35 +0000
1652+++ tests/create/no-package-exists/metadata.yaml 2013-04-19 13:03:34 +0000
1653@@ -3,6 +3,8 @@
1654 maintainer: tester <test@testhost>
1655 description: |
1656 <Multi-line description here>
1657+categories:
1658+ - misc
1659 provides:
1660 relation-name:
1661 interface: interface-name
1662
1663=== modified file 'tests/create/python-apt/metadata.yaml'
1664--- tests/create/python-apt/metadata.yaml 2012-05-14 22:42:35 +0000
1665+++ tests/create/python-apt/metadata.yaml 2013-04-19 13:03:34 +0000
1666@@ -10,6 +10,8 @@
1667 structure The included 'aptsources' Python interface provides an
1668 abstraction of the sources.list configuration on the repository and
1669 the distro level.
1670+categories:
1671+ - misc
1672 provides:
1673 relation-name:
1674 interface: interface-name
1675
1676=== added file 'tests/proof/expected/broken-categories'
1677--- tests/proof/expected/broken-categories 1970-01-01 00:00:00 +0000
1678+++ tests/proof/expected/broken-categories 2013-04-19 13:03:34 +0000
1679@@ -0,0 +1,1 @@
1680+W: Categories metadata must be a list of one or more of: applications, app-servers, databases, file-servers, cache-proxy, misc
1681
1682=== modified file 'tests/proof/expected/test'
1683--- tests/proof/expected/test 2012-10-12 04:12:27 +0000
1684+++ tests/proof/expected/test 2013-04-19 13:03:34 +0000
1685@@ -1,3 +1,5 @@
1686+W: Metadata is missing categories.
1687+W: No icon.svg file.
1688 E: no copyright file
1689 E: Includes template README.ex file
1690 E: README.ex Includes boilerplate README.ex line 1

Subscribers

People subscribed via source and target branches