blob: dd0ccb1dda5388c2ec0844a4eb91fd2ddd570d0f [file] [log] [blame]
#!/usr/bin/env python
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import unpack_pak
import tempfile
import os
import shutil
import unittest
_HERE_DIR = os.path.dirname(__file__)
class UnpackPakTest(unittest.TestCase):
def setUp(self):
self._out_folder = None
self._tmp_dirs = []
def tearDown(self):
for tmp_dir in self._tmp_dirs:
shutil.rmtree(tmp_dir)
def _setup_output_dirs(self):
tmp_dir = tempfile.mkdtemp(dir=_HERE_DIR)
self._tmp_dirs.append(tmp_dir)
self._root_output_dir = os.path.join(tmp_dir, 'gen', 'mywebui')
os.makedirs(self._root_output_dir)
self._unpak_dir = os.path.normpath(
os.path.join(self._root_output_dir, 'unpak')).replace('\\', '/')
def _read_unpacked_file(self, file_name):
assert self._unpak_dir
return open(os.path.join(self._unpak_dir, file_name), 'r').read()
def testMapFileLine(self):
self.assertTrue(unpack_pak.ParseLine(' {"path.js", IDR_PATH}'))
def testGzippedMapFileLine(self):
self.assertTrue(unpack_pak.ParseLine(' {"path.js", IDR_PATH, false}'))
self.assertTrue(unpack_pak.ParseLine(' {"path.js", IDR_PATH, true}'))
def testUnpackResource(self):
self._setup_output_dirs()
unpack_pak.UnpackResource(
os.path.join('gen', 'mywebui'), self._unpak_dir, [],
'sub_dir/some_element.js', 'alert(\'hello from element in sub_dir\');')
unpacked_contents = self._read_unpacked_file('sub_dir/some_element.js')
self.assertIn('hello from element in sub_dir', unpacked_contents)
def testUnpackGeneratedResource(self):
self._setup_output_dirs()
generated_resource_path = os.path.join(
'@out_folder@', 'gen', 'mywebui', 'sub_dir', 'some_element.js')
unpack_pak.UnpackResource(
os.path.join('gen', 'mywebui'), self._unpak_dir,
[], generated_resource_path,
'alert(\'hello from element in sub_dir\');')
unpacked_contents = self._read_unpacked_file('sub_dir/some_element.js')
self.assertIn('hello from element in sub_dir', unpacked_contents)
def testUnpackExcludedResource(self):
self._setup_output_dirs()
generated_shared_resource_path = os.path.join(
'@out_folder@', 'gen', 'shared', 'shared_element.js')
self.assertEqual(0, len(os.listdir(self._root_output_dir)))
unpack_pak.UnpackResource(
os.path.join('gen', 'mywebui'), self._unpak_dir,
['../shared/shared_element.js'], generated_shared_resource_path,
'alert(\'hello from shared element\');')
self.assertEqual(0, len(os.listdir(self._root_output_dir)))
if __name__ == '__main__':
unittest.main()