1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/testing/mozbase/mozprofile/tests/addonid.py Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,155 @@ 1.4 +#!/usr/bin/env python 1.5 + 1.6 +import os 1.7 +import tempfile 1.8 +import unittest 1.9 +import shutil 1.10 +from mozprofile import addons 1.11 + 1.12 + 1.13 +here = os.path.dirname(os.path.abspath(__file__)) 1.14 + 1.15 + 1.16 +class AddonIDTest(unittest.TestCase): 1.17 + """ Test finding the addon id in a variety of install.rdf styles """ 1.18 + 1.19 + def make_install_rdf(self, filecontents): 1.20 + path = tempfile.mkdtemp() 1.21 + f = open(os.path.join(path, "install.rdf"), "w") 1.22 + f.write(filecontents) 1.23 + f.close() 1.24 + return path 1.25 + 1.26 + def test_addonID(self): 1.27 + testlist = self.get_test_list() 1.28 + for t in testlist: 1.29 + try: 1.30 + p = self.make_install_rdf(t) 1.31 + a = addons.AddonManager(os.path.join(p, "profile")) 1.32 + addon_id = a.addon_details(p)['id'] 1.33 + self.assertEqual(addon_id, "winning", "We got the addon id") 1.34 + finally: 1.35 + shutil.rmtree(p) 1.36 + 1.37 + def test_addonID_xpi(self): 1.38 + a = addons.AddonManager("profile") 1.39 + addon = a.addon_details(os.path.join(here, "addons", "empty.xpi")) 1.40 + self.assertEqual(addon['id'], "test-empty@quality.mozilla.org", "We got the addon id") 1.41 + 1.42 + def get_test_list(self): 1.43 + """ This just returns a hardcoded list of install.rdf snippets for testing. 1.44 + When adding snippets for testing, remember that the id we're looking for 1.45 + is "winning" (no quotes). So, make sure you have that id in your snippet 1.46 + if you want it to pass. 1.47 + """ 1.48 + tests = [ 1.49 +"""<?xml version="1.0"?> 1.50 +<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 1.51 + xmlns:em="http://www.mozilla.org/2004/em-rdf#"> 1.52 + <Description about="urn:mozilla:install-manifest"> 1.53 + <em:id>winning</em:id> 1.54 + <em:name>MozMill</em:name> 1.55 + <em:version>2.0a</em:version> 1.56 + <em:creator>Adam Christian</em:creator> 1.57 + <em:description>A testing extension based on the Windmill Testing Framework client source</em:description> 1.58 + <em:unpack>true</em:unpack> 1.59 + <em:targetApplication> 1.60 + <!-- Firefox --> 1.61 + <Description> 1.62 + <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> 1.63 + <em:minVersion>3.5</em:minVersion> 1.64 + <em:maxVersion>8.*</em:maxVersion> 1.65 + </Description> 1.66 + </em:targetApplication> 1.67 + <em:targetApplication> 1.68 + <!-- Thunderbird --> 1.69 + <Description> 1.70 + <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id> 1.71 + <em:minVersion>3.0a1pre</em:minVersion> 1.72 + <em:maxVersion>3.2*</em:maxVersion> 1.73 + </Description> 1.74 + </em:targetApplication> 1.75 + <em:targetApplication> 1.76 + <!-- Sunbird --> 1.77 + <Description> 1.78 + <em:id>{718e30fb-e89b-41dd-9da7-e25a45638b28}</em:id> 1.79 + <em:minVersion>0.6a1</em:minVersion> 1.80 + <em:maxVersion>1.0pre</em:maxVersion> 1.81 + </Description> 1.82 + </em:targetApplication> 1.83 + <em:targetApplication> 1.84 + <!-- SeaMonkey --> 1.85 + <Description> 1.86 + <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id> 1.87 + <em:minVersion>2.0a1</em:minVersion> 1.88 + <em:maxVersion>2.1*</em:maxVersion> 1.89 + </Description> 1.90 + </em:targetApplication> 1.91 + <em:targetApplication> 1.92 + <!-- Songbird --> 1.93 + <Description> 1.94 + <em:id>songbird@songbirdnest.com</em:id> 1.95 + <em:minVersion>0.3pre</em:minVersion> 1.96 + <em:maxVersion>1.3.0a</em:maxVersion> 1.97 + </Description> 1.98 + </em:targetApplication> 1.99 + <em:targetApplication> 1.100 + <Description> 1.101 + <em:id>toolkit@mozilla.org</em:id> 1.102 + <em:minVersion>1.9.1</em:minVersion> 1.103 + <em:maxVersion>2.0*</em:maxVersion> 1.104 + </Description> 1.105 + </em:targetApplication> 1.106 + </Description> 1.107 +</RDF>""", 1.108 +"""<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 1.109 + xmlns:em="http://www.mozilla.org/2004/em-rdf#"> 1.110 + <Description about="urn:mozilla:install-manifest"> 1.111 + <em:targetApplication> 1.112 + <!-- Firefox --> 1.113 + <Description> 1.114 + <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> 1.115 + <em:minVersion>3.5</em:minVersion> 1.116 + <em:maxVersion>8.*</em:maxVersion> 1.117 + </Description> 1.118 + </em:targetApplication> 1.119 + <em:id>winning</em:id> 1.120 + <em:name>MozMill</em:name> 1.121 + <em:version>2.0a</em:version> 1.122 + <em:creator>Adam Christian</em:creator> 1.123 + <em:description>A testing extension based on the Windmill Testing Framework client source</em:description> 1.124 + <em:unpack>true</em:unpack> 1.125 + </Description> 1.126 + </RDF>""", 1.127 +"""<RDF xmlns="http://www.mozilla.org/2004/em-rdf#" 1.128 + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> 1.129 + <rdf:Description about="urn:mozilla:install-manifest"> 1.130 + <id>winning</id> 1.131 + <name>foo</name> 1.132 + <version>42</version> 1.133 + <description>A testing extension based on the Windmill Testing Framework client source</description> 1.134 + </rdf:Description> 1.135 +</RDF>""", 1.136 +"""<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 1.137 + xmlns:foobar="http://www.mozilla.org/2004/em-rdf#"> 1.138 + <Description about="urn:mozilla:install-manifest"> 1.139 + <foobar:targetApplication> 1.140 + <!-- Firefox --> 1.141 + <Description> 1.142 + <foobar:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</foobar:id> 1.143 + <foobar:minVersion>3.5</foobar:minVersion> 1.144 + <foobar:maxVersion>8.*</foobar:maxVersion> 1.145 + </Description> 1.146 + </foobar:targetApplication> 1.147 + <foobar:id>winning</foobar:id> 1.148 + <foobar:name>MozMill</foobar:name> 1.149 + <foobar:version>2.0a</foobar:version> 1.150 + <foobar:creator>Adam Christian</foobar:creator> 1.151 + <foobar:description>A testing extension based on the Windmill Testing Framework client source</foobar:description> 1.152 + <foobar:unpack>true</foobar:unpack> 1.153 + </Description> 1.154 + </RDF>"""] 1.155 + return tests 1.156 + 1.157 +if __name__ == '__main__': 1.158 + unittest.main()