955b8f325c4caa333af1596f25aee67c7a90976b
[platform/framework/web/crosswalk.git] / src / native_client / build / package_version / package_info_test.py
1 #!/usr/bin/python
2 # Copyright (c) 2014 The Native Client Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 """Tests for package info."""
7
8 import json
9 import os
10 import unittest
11 import sys
12
13 sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))
14 import pynacl.working_directory
15
16 import archive_info
17 import package_info
18
19
20 class TestPackageInfo(unittest.TestCase):
21
22   def test_AddArchive(self):
23     # Check that we can successfully add an archive.
24     archive_name = 'test_archive'
25     archive_hash = 'test_archive_hash'
26     archive_url = 'test_archive_url'
27     tar_src_dir = 'test_archive_dir'
28     extract_dir = 'test_extraction_dir'
29
30     package = package_info.PackageInfo()
31     archive = archive_info.ArchiveInfo(name=archive_name,
32                                        hash=archive_hash,
33                                        url=archive_url,
34                                        tar_src_dir=tar_src_dir,
35                                        extract_dir=extract_dir)
36     package.AppendArchive(archive)
37
38     archive_list = package.GetArchiveList()
39
40     self.assertEqual(len(archive_list), 1)
41     archive_item = archive_list[0].GetArchiveData()
42     self.assertEqual(archive_item.name, archive_name)
43     self.assertEqual(archive_item.hash, archive_hash)
44     self.assertEqual(archive_item.url, archive_url)
45     self.assertEqual(archive_item.tar_src_dir, tar_src_dir)
46     self.assertEqual(archive_item.extract_dir, extract_dir)
47
48   def test_ClearArchiveListClearsEverything(self):
49     # Check that clear archive list actually clears everything
50     package1 = package_info.PackageInfo()
51     archive1 = archive_info.ArchiveInfo(name='name',
52                                         hash='hash',
53                                         url='url',
54                                         tar_src_dir='tar_src_dir',
55                                         extract_dir='extract_dir')
56     package1.AppendArchive(archive1)
57     package1.ClearArchiveList()
58
59     # Test to be sure the archive list is clear.
60     self.assertEqual(len(package1.GetArchiveList()), 0)
61
62     # Test to be sure the state is equal to an empty PackageInfo.
63     package2 = package_info.PackageInfo()
64     self.assertEqual(package1, package2)
65
66   def test_OrderIndependentEquality(self):
67     # Check that order does not matter when adding multiple archives.
68     arch_name1 = 'archive1.tar'
69     arch_name2 = 'archive2.tar'
70     arch_hash1 = 'archive_hash1'
71     arch_hash2 = 'archive_hash2'
72
73     package1 = package_info.PackageInfo()
74     package1.AppendArchive(archive_info.ArchiveInfo(name=arch_name1,
75                                                     hash=arch_hash1))
76     package1.AppendArchive(archive_info.ArchiveInfo(name=arch_name2,
77                                                     hash=arch_hash2))
78
79     package2 = package_info.PackageInfo()
80     package2.AppendArchive(archive_info.ArchiveInfo(name=arch_name2,
81                                                     hash=arch_hash2))
82     package2.AppendArchive(archive_info.ArchiveInfo(name=arch_name1,
83                                                     hash=arch_hash1))
84
85     self.assertEqual(len(package1.GetArchiveList()), 2)
86     self.assertEqual(len(package2.GetArchiveList()), 2)
87     self.assertEqual(package1, package2)
88
89   def test_PackageLoadJsonList(self):
90     # Check if we can successfully load a list of archive.
91     arch_name1 = 'archive_item1.tar'
92     arch_name2 = 'archive_item2.tar'
93     arch_hash1 = 'archive_item_hash1'
94     arch_hash2 = 'archive_item_hash2'
95
96     mast_package = package_info.PackageInfo()
97     mast_package.AppendArchive(archive_info.ArchiveInfo(name=arch_name1,
98                                                         hash=arch_hash1))
99     mast_package.AppendArchive(archive_info.ArchiveInfo(name=arch_name2,
100                                                         hash=arch_hash2))
101     json_data = mast_package.DumpPackageJson()
102
103     constructed_package = package_info.PackageInfo(json_data)
104     loaded_package = package_info.PackageInfo()
105     loaded_package.LoadPackageFile(json_data)
106
107     self.assertEqual(mast_package, constructed_package)
108     self.assertEqual(mast_package, loaded_package)
109
110   def test_PackageSaveLoadFile(self):
111     # Check if we can save/load a package file and retain it's values.
112     arch_name1 = 'archive_saveload1.tar'
113     arch_name2 = 'archive_saveload2.tar'
114     arch_hash1 = 'archive_saveload_hash1'
115     arch_hash2 = 'archive_saveload_hash2'
116
117     mast_package = package_info.PackageInfo()
118     mast_package.AppendArchive(archive_info.ArchiveInfo(name=arch_name1,
119                                                         hash=arch_hash1))
120     mast_package.AppendArchive(archive_info.ArchiveInfo(name=arch_name2,
121                                                         hash=arch_hash2))
122
123     with pynacl.working_directory.TemporaryWorkingDirectory() as work_dir:
124       package_file = os.path.join(work_dir, 'test_package.json')
125       mast_package.SavePackageFile(package_file)
126
127       constructed_package = package_info.PackageInfo(package_file)
128       loaded_package = package_info.PackageInfo()
129       loaded_package.LoadPackageFile(package_file)
130
131       self.assertEqual(mast_package, constructed_package)
132       self.assertEqual(mast_package, loaded_package)
133
134   def test_PackageJsonDumpLoad(self):
135     # Check if Json from DumpPackageJson() represents a package correctly.
136     arch_name1 = 'archive_json1.tar'
137     arch_name2 = 'archive_json2.tar'
138     arch_hash1 = 'archive_json_hash1'
139     arch_hash2 = 'archive_json_hash2'
140
141     mast_package = package_info.PackageInfo()
142     mast_package.AppendArchive(archive_info.ArchiveInfo(name=arch_name1,
143                                                         hash=arch_hash1))
144     mast_package.AppendArchive(archive_info.ArchiveInfo(name=arch_name2,
145                                                         hash=arch_hash2))
146
147     json_package = package_info.PackageInfo(mast_package.DumpPackageJson())
148     self.assertEqual(mast_package, json_package)
149
150
151 if __name__ == '__main__':
152   unittest.main()