Left: | ||
Right: |
OLD | NEW |
---|---|
1 # This Source Code Form is subject to the terms of the Mozilla Public | 1 # This Source Code Form is subject to the terms of the Mozilla Public |
2 # License, v. 2.0. If a copy of the MPL was not distributed with this | 2 # License, v. 2.0. If a copy of the MPL was not distributed with this |
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. | 3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
4 | 4 |
5 import ConfigParser | 5 import ConfigParser |
6 import json | 6 import json |
7 import os | 7 import os |
8 import shutil | 8 import shutil |
9 import xml.etree.ElementTree as ET | 9 import xml.etree.ElementTree as ET |
10 from lxml import etree | |
10 import zipfile | 11 import zipfile |
11 | 12 |
12 import pytest | 13 import pytest |
13 | 14 |
14 from buildtools import packager, packagerEdge | 15 from buildtools import packager, packagerEdge |
15 | 16 |
16 TEST_DIR = os.path.dirname(__file__) | 17 TEST_DIR = os.path.dirname(__file__) |
17 TEST_METADATA = os.path.join(TEST_DIR, 'metadata.edge') | 18 TEST_METADATA = os.path.join(TEST_DIR, 'metadata.edge') |
18 CHARS = b''.join(chr(i % 200 + 30) for i in range(500)) | 19 CHARS = b''.join(chr(i % 200 + 30) for i in range(500)) |
19 MESSAGES_EN_US = json.dumps({ | 20 MESSAGES_EN_US = json.dumps({ |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
123 'png': 'image/png', | 124 'png': 'image/png', |
124 'xml': 'application/xml' | 125 'xml': 'application/xml' |
125 } | 126 } |
126 assert ctm_dict['overrides'] == { | 127 assert ctm_dict['overrides'] == { |
127 '/AppxBlockMap.xml': 'application/vnd.ms-appx.blockmap+xml', | 128 '/AppxBlockMap.xml': 'application/vnd.ms-appx.blockmap+xml', |
128 '/AppxManifest.xml': 'application/vnd.ms-appx.manifest+xml' | 129 '/AppxManifest.xml': 'application/vnd.ms-appx.manifest+xml' |
129 } | 130 } |
130 | 131 |
131 | 132 |
132 def test_create_appx_manifest(metadata, files): | 133 def test_create_appx_manifest(metadata, files): |
133 manifest = packagerEdge.create_appx_manifest( | 134 namespaces = { |
134 {'metadata': metadata}, files, release_build=True, | 135 'ns': 'http://schemas.microsoft.com/' |
135 ) | 136 'appx/manifest/foundation/windows10', |
136 with open(os.path.join(TEST_DIR, 'AppManifest.xml.expect')) as fp: | 137 'uap': 'http://schemas.microsoft.com/appx/manifest/uap/windows10', |
137 manifest_expect = fp.read() | 138 'uap3': 'http://schemas.microsoft.com/appx/manifest/uap/windows10/3', |
138 assert manifest.strip() == manifest_expect.strip() | 139 } |
139 | 140 |
141 base = { | |
142 'count(//*)': 22.0, | |
143 'string(/ns:Package/ns:Identity/@Name)': 'EyeoGmbH.AdblockPlus', | |
144 'string(/ns:Package/ns:Identity/@Publisher)': | |
145 'CN=4F066043-8AFE-41C9-B762-6C15E77E3F88', | |
146 'string(/ns:Package/ns:Identity/@Version)': '1.2.3.0', | |
147 'string(/ns:Package/ns:Properties/ns:PublisherDisplayName)': | |
148 'Eyeo GmbH', | |
149 'string(/ns:Package/ns:Properties/ns:Logo)': 'Assets\\logo_50.png', | |
150 ('string(/ns:Package/ns:Dependencies/ns:TargetDeviceFamily/' | |
151 '@MinVersion)'): '10.0.14332.0', | |
152 ('string(/ns:Package/ns:Dependencies/ns:TargetDeviceFamily/' | |
153 '@MaxVersionTested)'): '12.0.0.0', | |
154 ('string(/ns:Package/ns:Applications/ns:Application/' | |
155 'uap:VisualElements/@Square150x150Logo)'): 'Assets\\logo_150.png', | |
156 ('string(/ns:Package/ns:Applications/ns:Application/' | |
157 'uap:VisualElements/@Square44x44Logo)'): 'Assets\\logo_44.png', | |
158 ('string(/ns:Package/ns:Applications/ns:Application/' | |
159 'uap:VisualElements/@Description)'): | |
160 'Adblock Plus is the most popular ad blocker ever, and also ' | |
161 'supports websites by not blocking unobstrusive ads by ' | |
162 'default (configurable).', | |
163 ('string(/ns:Package/ns:Applications/ns:Application/' | |
164 'uap:VisualElements/@BackgroundColor)'): 'red', | |
165 } | |
140 | 166 |
141 def test_create_devbuild_appx_manifest(metadata, files): | 167 devbuild = base.copy() |
142 manifest = packagerEdge.create_appx_manifest( | 168 devbuild.update({ |
143 {'metadata': metadata}, files, release_build=False, | 169 'string(/ns:Package/ns:Properties/ns:DisplayName)': 'devbuild-marker', |
144 ) | 170 'string(/ns:Package/ns:Applications/ns:Application/' |
145 assert 'devbuild-marker' in manifest | 171 'uap:VisualElements/@DisplayName)': 'devbuild-marker', |
172 ('string(/ns:Package/ns:Applications/ns:Application/ns:Extensions/' | |
173 'uap3:Extension/uap3:AppExtension/@Id)'): 'EdgeExtension', | |
174 'string(/ns:Package/ns:Applications/' | |
175 'ns:Application/ns:Extensions/uap3:Extension/' | |
176 'uap3:AppExtension/@DisplayName)': 'devbuild-marker', | |
177 }) | |
178 | |
179 release = base.copy() | |
180 release.update({ | |
181 'string(/ns:Package/ns:Properties/ns:DisplayName)': 'Adblock Plus', | |
182 ('string(/ns:Package/ns:Applications/ns:Application/' | |
183 'uap:VisualElements/@DisplayName)'): 'Adblock Plus', | |
184 ('string(/ns:Package/ns:Applications/ns:Application/ns:Extensions/' | |
185 'uap3:Extension/uap3:AppExtension/@Id)'): '1.0', | |
186 ('string(/ns:Package/ns:Applications/ns:Application/ns:Extensions/' | |
187 'uap3:Extension/uap3:AppExtension/@DisplayName)'): 'Adblock Plus', | |
188 }) | |
189 | |
190 for release_build, pairs in [[False, devbuild], [True, release]]: | |
Sebastian Noack
2016/12/21 15:54:15
Please use tuples for data that have structure (as
wspee
2017/01/02 14:16:19
Done.
| |
191 manifest = etree.fromstring(packagerEdge.create_appx_manifest( | |
192 {'metadata': metadata}, files, release_build=release_build)) | |
193 for expression, value in pairs.items(): | |
194 assert manifest.xpath(expression, namespaces=namespaces) == value | |
146 | 195 |
147 | 196 |
148 def test_move_files_to_extension(): | 197 def test_move_files_to_extension(): |
149 files = packager.Files(set(), set()) | 198 files = packager.Files(set(), set()) |
150 files['foo.xml'] = CHARS | 199 files['foo.xml'] = CHARS |
151 files['foo/bar.xml'] = CHARS | 200 files['foo/bar.xml'] = CHARS |
152 files['Extension/foo.xml'] = CHARS | 201 files['Extension/foo.xml'] = CHARS |
153 packagerEdge.move_files_to_extension(files) | 202 packagerEdge.move_files_to_extension(files) |
154 assert set(files.keys()) == { | 203 assert set(files.keys()) == { |
155 'Extension/foo.xml', | 204 'Extension/foo.xml', |
(...skipping 15 matching lines...) Expand all Loading... | |
171 assert 'devbuild-marker' not in appx.read('AppxManifest.xml') | 220 assert 'devbuild-marker' not in appx.read('AppxManifest.xml') |
172 assert appx.read('Assets/logo_44.png') == '44' | 221 assert appx.read('Assets/logo_44.png') == '44' |
173 assert appx.read('Extension/icons/abp-44.png') == '44' | 222 assert appx.read('Extension/icons/abp-44.png') == '44' |
174 | 223 |
175 | 224 |
176 def test_create_devbuild(tmpdir, srcdir): | 225 def test_create_devbuild(tmpdir, srcdir): |
177 out_file = str(tmpdir.join('abp.appx')) | 226 out_file = str(tmpdir.join('abp.appx')) |
178 packagerEdge.createBuild(str(srcdir), outFile=out_file, releaseBuild=False) | 227 packagerEdge.createBuild(str(srcdir), outFile=out_file, releaseBuild=False) |
179 appx = zipfile.ZipFile(out_file) | 228 appx = zipfile.ZipFile(out_file) |
180 assert 'devbuild-marker' in appx.read('AppxManifest.xml') | 229 assert 'devbuild-marker' in appx.read('AppxManifest.xml') |
OLD | NEW |