-
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathprepare_android.py
228 lines (197 loc) · 10.2 KB
/
prepare_android.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
"""
Tests for prepare command in context of Android
"""
import os
import unittest
from core.osutils.command import run
from core.osutils.file import File
from core.osutils.folder import Folder
from core.settings.settings import ANDROID_RUNTIME_PATH, TNS_PATH, SUT_ROOT_FOLDER
from core.tns.tns import Tns
class PrepareAndroid(unittest.TestCase):
def setUp(self):
print ""
print "#####"
print self.id()
print "#####"
print ""
Folder.cleanup('./TNS_App')
def tearDown(self):
Folder.cleanup('./TNS_App')
def test_001_prepare_android(self):
Tns.create_app_platform_add(
app_name="TNS_App",
platform="android",
framework_path=ANDROID_RUNTIME_PATH)
output = run(TNS_PATH + " prepare android --path TNS_App")
assert "Project successfully prepared" in output
# Verify app and modules are processed and available in platform folder
assert File.exists(
'TNS_App/platforms/android/src/main/assets/app/main-view-model.js')
assert File.exists(
'TNS_App/platforms/android/src/main/assets/app/tns_modules/application/application.js')
assert not File.exists(
'TNS_App/platforms/android/src/main/assets/app/tns_modules/" + \
"application/application.android.js')
assert not File.exists(
'TNS_App/platforms/android/src/main/assets/app/tns_modules/" + \
"application/application.ios.js')
def test_002_prepare_android_inside_project(self):
Tns.create_app_platform_add(
app_name="TNS_App",
platform="android",
framework_path=ANDROID_RUNTIME_PATH)
current_dir = os.getcwd()
os.chdir(os.path.join(current_dir, "TNS_App"))
output = run(os.path.join("..", TNS_PATH) + " prepare android")
os.chdir(current_dir)
assert "Project successfully prepared" in output
# Verify app and modules are processed and available in platform folder
assert File.exists(
'TNS_App/platforms/android/src/main/assets/app/main-view-model.js')
assert File.exists(
'TNS_App/platforms/android/src/main/assets/app/tns_modules/application/application.js')
assert not File.exists(
'TNS_App/platforms/android/src/main/assets/app/tns_modules/' +
'application/application.android.js')
assert not File.exists(
'TNS_App/platforms/android/src/main/assets/app/tns_modules/application/application.ios.js')
def test_010_prepare_android_ng_project(self):
output = run(TNS_PATH + " create TNS_App --ng")
assert "successfully created" in output
Tns.platform_add(
platform="android",
path="TNS_App",
framework_path=ANDROID_RUNTIME_PATH)
Tns.prepare(platform="android", path="TNS_App")
assert Folder.exists(
'TNS_App/platforms/android/src/main/assets/app/tns_modules/angular2')
assert Folder.exists(
'TNS_App/platforms/android/src/main/assets/app/tns_modules/nativescript-angular')
def test_200_prepare_android_patform_not_added(self):
Tns.create_app(app_name="TNS_App")
output = run(TNS_PATH + " prepare android --path TNS_App")
assert "Copying template files..." in output
assert "Project successfully created." in output
assert "Project successfully prepared" in output
assert File.exists(
'TNS_App/platforms/android/src/main/assets/app/tns_modules/xml/xml.js')
def test_201_prepare_xml_error(self):
Tns.create_app(app_name="TNS_App")
File.replace("TNS_App/app/main-page.xml", "</Page>", "</Page")
output = run(TNS_PATH + " prepare android --path TNS_App")
assert "Copying template files..." in output
assert "Project successfully created." in output
assert "Project successfully prepared" in output
assert "main-page.xml has syntax errors." in output
assert "unclosed xml attribute" in output
def test_210_prepare_android_tns_core_modules(self):
Tns.create_app(
app_name="TNS_App",
copy_from=SUT_ROOT_FOLDER + "/QA-TestApps/tns-modules-app/app")
Tns.platform_add(
platform="android",
path="TNS_App",
framework_path=ANDROID_RUNTIME_PATH)
# Make a change in tns-core-modules to verify they are not overwritten.
File.replace(
"TNS_App/node_modules/tns-core-modules/application/application-common.js",
"(\"globals\");",
"(\"globals\"); // test")
# Verify tns-core-modules are copied to the native project, not app's
# tns_modules.
for i in range(1, 3):
print "prepare number: " + str(i)
output = run(TNS_PATH + " prepare android --path TNS_App")
assert "You have tns_modules dir in your app folder" in output
assert "Project successfully prepared" in output
output = run("cat TNS_App/app/tns_modules/package.json")
assert "\"version\": \"1.2.1\"," in output
output = run(
"cat TNS_App/node_modules/tns-core-modules/package.json")
assert "\"version\": \"1.2.1\"," not in output
output = run(
"cat TNS_App/node_modules/tns-core-modules/application/application-common.js")
assert "require(\"globals\"); // test" in output
output = run(
"cat TNS_App/platforms/android/src/main/assets/app/tns_modules/package.json")
assert "\"version\": \"1.2.1\"," not in output
output = run(
"cat TNS_App/platforms/android/src/main/assets/app/" +
"tns_modules/application/application-common.js")
assert "require(\"globals\"); // test" in output
def test_300_prepare_android_remove_old_files(self):
Tns.create_app_platform_add(
app_name="TNS_App",
platform="android",
framework_path=ANDROID_RUNTIME_PATH)
output = run(TNS_PATH + " prepare android --path TNS_App")
assert "Project successfully prepared" in output
assert File.exists(
'TNS_App/platforms/android/src/main/assets/app/app.js')
assert File.exists(
'TNS_App/platforms/android/src/main/assets/app/app.css')
assert File.exists(
'TNS_App/platforms/android/src/main/assets/app/main-page.xml')
run("mv TNS_App/app/app.js TNS_App/app/app-new.js")
run("mv TNS_App/app/app.css TNS_App/app/app-new.css")
run("mv TNS_App/app/main-page.xml TNS_App/app/main-page-new.xml")
output = run(TNS_PATH + " prepare android --path TNS_App")
assert "Project successfully prepared" in output
assert File.exists(
'TNS_App/platforms/android/src/main/assets/app/app-new.js')
assert File.exists(
'TNS_App/platforms/android/src/main/assets/app/app-new.css')
assert File.exists(
'TNS_App/platforms/android/src/main/assets/app/main-page-new.xml')
assert not File.exists(
'TNS_App/platforms/android/src/main/assets/app/app.js')
assert not File.exists(
'TNS_App/platforms/android/src/main/assets/app/app.css')
assert not File.exists(
'TNS_App/platforms/android/src/main/assets/app/main-page.xml')
def test_301_prepare_android_platform_specific_files(self):
Tns.create_app_platform_add(
app_name="TNS_App",
platform="android",
framework_path=ANDROID_RUNTIME_PATH)
output = run(TNS_PATH + " prepare android --path TNS_App")
assert "Project successfully prepared" in output
assert File.exists(
'TNS_App/platforms/android/src/main/assets/app/app.css')
run("cp TNS_App/app/app.js TNS_App/app/app.ios.js")
run("cp TNS_App/app/app.js TNS_App/app/app.android.js")
run("cp TNS_App/app/app.js TNS_App/app/appios.js")
run("cp TNS_App/app/app.js TNS_App/app/appandroid.js")
run("cp TNS_App/app/app.js TNS_App/app/ios.js")
run("cp TNS_App/app/app.js TNS_App/app/android.js")
run("cp TNS_App/app/app.css TNS_App/app/app.ios.css")
run("cp TNS_App/app/app.css TNS_App/app/app.android.css")
run("mv TNS_App/app/app.js TNS_App/app/appNew.js")
run("mv TNS_App/app/app.css TNS_App/app/appNew.css")
output = run(TNS_PATH + " prepare android --path TNS_App")
assert "Project successfully prepared" in output
assert File.exists(
'TNS_App/platforms/android/src/main/assets/app/app.css')
assert File.exists(
'TNS_App/platforms/android/src/main/assets/app/app.js')
assert File.exists(
'TNS_App/platforms/android/src/main/assets/app/appandroid.js')
assert File.exists(
'TNS_App/platforms/android/src/main/assets/app/appios.js')
assert File.exists(
'TNS_App/platforms/android/src/main/assets/app/android.js')
assert File.exists(
'TNS_App/platforms/android/src/main/assets/app/ios.js')
assert not File.exists(
'TNS_App/platforms/android/src/main/assets/app/app.ios.css')
assert not File.exists(
'TNS_App/platforms/android/src/main/assets/app/app.android.css')
def test_400_prepare_missing_platform(self):
Tns.create_app(app_name="TNS_App")
output = run(TNS_PATH + " prepare --path TNS_App")
assert "You need to provide all the required parameters." in output
def test_401_prepare_invalid_platform(self):
Tns.create_app(app_name="TNS_App")
output = run(TNS_PATH + " prepare windows --path TNS_App")
assert "Invalid platform windows. Valid platforms are ios or android." in output