0
|
1 |
#
|
|
2 |
# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
|
|
3 |
# All rights reserved.
|
|
4 |
# This component and the accompanying materials are made available
|
|
5 |
# under the terms of "Eclipse Public License v1.0"
|
|
6 |
# which accompanies this distribution, and is available
|
|
7 |
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
|
|
8 |
#
|
|
9 |
# Initial Contributors:
|
|
10 |
# Nokia Corporation - initial contribution.
|
|
11 |
#
|
|
12 |
# Contributors:
|
|
13 |
#
|
|
14 |
# Description:
|
|
15 |
#
|
|
16 |
|
|
17 |
"""
|
|
18 |
Test the CPF configuration
|
|
19 |
"""
|
|
20 |
import unittest
|
|
21 |
import string
|
|
22 |
import sys,os, shutil
|
|
23 |
import __init__
|
|
24 |
|
|
25 |
from cone.public import exceptions, api
|
|
26 |
from cone.core import *
|
|
27 |
from testautomation.base_testcase import BaseTestCase
|
|
28 |
from cone.confml import model
|
|
29 |
|
|
30 |
ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
|
|
31 |
temp_dir = os.path.join(ROOT_PATH, "temp/project_on_zipstorage")
|
|
32 |
datazip = os.path.join(ROOT_PATH,"testdata/test_project.cpf")
|
|
33 |
|
|
34 |
class TestConeProjectOpenZip(unittest.TestCase):
|
|
35 |
def test_open_project(self):
|
|
36 |
fs = api.Storage.open(datazip,"r")
|
|
37 |
p = api.Project(fs)
|
|
38 |
self.assertTrue(p)
|
|
39 |
|
|
40 |
def test_open_project_of_non_storage(self):
|
|
41 |
fs = ""
|
|
42 |
try:
|
|
43 |
p = api.Project(fs)
|
|
44 |
self.fail("Opening on top of non storage succeeds!!")
|
|
45 |
except exceptions.StorageException:
|
|
46 |
self.assertTrue(True)
|
|
47 |
|
|
48 |
|
|
49 |
class TestConeProjectMethodsReadZip(unittest.TestCase):
|
|
50 |
def setUp(self):
|
|
51 |
fs = api.Storage.open(datazip,"r")
|
|
52 |
self.project = api.Project(fs)
|
|
53 |
|
|
54 |
def test_list_configurations(self):
|
|
55 |
confs = self.project.list_configurations()
|
|
56 |
self.assertEquals(
|
|
57 |
sorted(confs),
|
|
58 |
["root1.confml",
|
|
59 |
"root2.confml",
|
|
60 |
"root3.confml",
|
|
61 |
"root4.confml",
|
|
62 |
"root5.confml"])
|
|
63 |
|
|
64 |
def test_get_configuration(self):
|
|
65 |
conf = self.project.get_configuration("/root5.confml")
|
|
66 |
self.assertTrue(conf)
|
|
67 |
self.assertTrue(isinstance(conf,api.ConfigurationProxy))
|
|
68 |
|
|
69 |
def test_get_configuration_non_existing(self):
|
|
70 |
try:
|
|
71 |
conf = self.project.get_configuration("foo")
|
|
72 |
self.fail("Opening non existing configuration succeeds!")
|
|
73 |
except exceptions.NotFound,e:
|
|
74 |
self.assertTrue(True)
|
|
75 |
|
|
76 |
def test_get_configuration_and_list_layers(self):
|
|
77 |
conf = self.project.get_configuration("root5.confml")
|
|
78 |
layers = conf.list_configurations()
|
|
79 |
self.assertEquals(
|
|
80 |
layers,
|
|
81 |
['Layer1/root.confml',
|
|
82 |
'Layer2/root.confml',
|
|
83 |
'Layer3/root.confml',
|
|
84 |
'Layer4/root.confml',
|
|
85 |
'Layer5/root.confml'])
|
|
86 |
|
|
87 |
def test_get_configuration_and_get_layer(self):
|
|
88 |
conf = self.project.get_configuration("root5.confml")
|
|
89 |
layer1 = conf.get_configuration('Layer1/root.confml')
|
|
90 |
self.assertTrue(layer1)
|
|
91 |
self.assertTrue(isinstance(layer1,api.ConfigurationProxy))
|
|
92 |
|
|
93 |
def test_get_configuration_and_get_layer_path(self):
|
|
94 |
conf = self.project.get_configuration("root5.confml")
|
|
95 |
layer1 = conf.get_configuration('Layer1/root.confml')
|
|
96 |
self.assertEquals(layer1.get_path(),'Layer1/root.confml')
|
|
97 |
|
|
98 |
def test_get_configuration_and_get_layer_and_get_layer_resources(self):
|
|
99 |
conf = self.project.get_configuration("root5.confml")
|
|
100 |
layer1 = conf.get_configuration('Layer1/root.confml')
|
|
101 |
files = layer1.list_resources()
|
|
102 |
self.assertTrue('Layer1/root.confml' in files)
|
|
103 |
self.assertTrue('Layer1/confml/feature1.confml' in files)
|
|
104 |
self.assertTrue('Layer1/implml/feature1_12341001.crml' in files)
|
|
105 |
self.assertTrue('Layer1/content/default_file.txt' in files)
|
|
106 |
|
|
107 |
def test_get_configuration_and_get_layer_and_get_a_layer_resource(self):
|
|
108 |
conf = self.project.get_configuration("root5.confml")
|
|
109 |
layer1 = conf.get_configuration('Layer1/root.confml')
|
|
110 |
res = layer1.get_resource('implml/feature1_12341001.crml')
|
|
111 |
self.assertTrue(res)
|
|
112 |
|
|
113 |
def test_get_configuration_and_list_all_configuration_resources(self):
|
|
114 |
conf = self.project.get_configuration("root5.confml")
|
|
115 |
resources = conf.list_resources()
|
|
116 |
self.assertTrue('root5.confml' in resources)
|
|
117 |
self.assertTrue('Layer1/root.confml' in resources)
|
|
118 |
self.assertTrue('Layer2/root.confml' in resources)
|
|
119 |
self.assertTrue('Layer3/root.confml' in resources)
|
|
120 |
self.assertTrue('Layer4/root.confml' in resources)
|
|
121 |
self.assertTrue('Layer5/root.confml' in resources)
|
|
122 |
self.assertTrue('Layer1/confml/feature1.confml' in resources)
|
|
123 |
self.assertTrue('Layer1/implml/feature1_12341001.crml' in resources)
|
|
124 |
self.assertTrue('Layer1/content/default_file.txt' in resources)
|
|
125 |
self.assertTrue('Layer2/content/layer2_file.txt' in resources)
|
|
126 |
|
|
127 |
class TestConeProjectMethodsWriteZip(BaseTestCase):
|
|
128 |
def setUp(self):
|
|
129 |
if not os.path.exists(temp_dir):
|
|
130 |
os.makedirs(temp_dir)
|
|
131 |
|
|
132 |
def test_create_configuration(self):
|
|
133 |
tempzip = os.path.normpath(os.path.join(temp_dir, "temp1.zip"))
|
|
134 |
self.remove_if_exists(tempzip)
|
|
135 |
|
|
136 |
prj = None
|
|
137 |
conf = None
|
|
138 |
try:
|
|
139 |
prj = api.Project(api.Storage.open(tempzip,"w"))
|
|
140 |
conf = prj.create_configuration("dummy.confml")
|
|
141 |
conf.set_name("dummy")
|
|
142 |
self.assertTrue(conf)
|
|
143 |
self.assertEquals(conf.get_name(),'dummy')
|
|
144 |
self.assertTrue(isinstance(conf,api.Configuration))
|
|
145 |
finally:
|
|
146 |
if conf != None: conf.close()
|
|
147 |
if prj != None: prj.close()
|
|
148 |
|
|
149 |
def test_create_close_open_configuration(self):
|
|
150 |
tempzip_orig = os.path.normpath(os.path.join(temp_dir, "temp2_orig.zip"))
|
|
151 |
tempzip_copy = os.path.normpath(os.path.join(temp_dir, "temp2_copy.zip"))
|
|
152 |
self.remove_if_exists([tempzip_orig, tempzip_copy])
|
|
153 |
|
|
154 |
prj = api.Project(api.Storage.open(tempzip_orig,"w"))
|
|
155 |
conf = prj.create_configuration("dummy2.confml")
|
|
156 |
conf.set_name("dummy")
|
|
157 |
prop1 = model.ConfmlMetaProperty('owner', 'teemu rytkonen', 'http://www.s60.com/xml/confml/2')
|
|
158 |
prop2 = model.ConfmlMetaProperty('purpose', 'for testing', 'http://www.s60.com/xml/confml/2')
|
|
159 |
conf.meta = model.ConfmlMeta([prop1, prop2])
|
|
160 |
conf.desc = "Testing to see a configuration created"
|
|
161 |
conf.create_configuration("test/path/to/somewhere/r.confml")
|
|
162 |
conf.create_configuration("test/path/to/elsewhere/r.confml")
|
|
163 |
conf.save()
|
|
164 |
prj.save()
|
|
165 |
prj.close()
|
|
166 |
|
|
167 |
# Make a copy of the created zip file
|
|
168 |
shutil.copy2(tempzip_orig, tempzip_copy)
|
|
169 |
# If everything has been closed properly, the original zip file
|
|
170 |
# should now be removable
|
|
171 |
os.remove(tempzip_orig)
|
|
172 |
|
|
173 |
# Read back data from the copy
|
|
174 |
prj = api.Project(api.Storage.open(tempzip_copy,"r"))
|
|
175 |
conf2 = prj.get_configuration("dummy2.confml")
|
|
176 |
self.assertEquals(conf.get_name(),conf2.get_name())
|
|
177 |
self.assertEquals(conf.meta,conf2.meta)
|
|
178 |
self.assertEquals(conf.desc,conf2.desc)
|
|
179 |
self.assertEquals(conf.list_configurations(),conf2.list_configurations())
|
|
180 |
|
|
181 |
if __name__ == '__main__':
|
|
182 |
unittest.main()
|