-
Notifications
You must be signed in to change notification settings - Fork 37
/
Shared_Keywords.robot
199 lines (165 loc) · 7.78 KB
/
Shared_Keywords.robot
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
*** Settings ***
Documentation A shared set of common keywords for stuart operations and git operations
#
# Copyright (c), Microsoft Corporation
# SPDX-License-Identifier: BSD-2-Clause-Patent
Library Process
Library OperatingSystem
# Suite Setup
*** Variables ***
#Test output location
${TEST_OUTPUT} ${TEST_OUTPUT_BASE}
*** Keywords ***
### list comparison helper ###
Confirm same contents
[Arguments] ${actual} ${expected}
@{epkgs}= Split String ${expected} ,
@{apkgs}= Split String ${actual} ,
FOR ${a} IN @{apkgs}
Should Contain ${expected} ${a}
END
FOR ${b} IN @{epkgs}
Should Contain ${actual} ${b}
END
### Git operations ###
Clone the git repo
[Arguments] ${git_url} ${ws_name}
Log To console cloning ${git_url} to ${TEST_OUTPUT}
${result}= Run Process git.exe clone ${git_url} ${ws_name}
... cwd=${TEST_OUTPUT} stdout=stdout.txt stderr=stderr.txt
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
${result}= Run Process git fetch --all --prune
... cwd=${TEST_OUTPUT}${/}${ws_name} stdout=stdout.txt stderr=stderr.txt
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Reset git repo to default branch
[Arguments] ${ws} ${default_branch_name}
# checkout remote tag for origin/<default branch>
${result}= Run Process git checkout origin/${default_branch_name}
... cwd=${ws} stdout=stdout.txt stderr=stderr.txt
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
# clean non ignored files quietly to avoid log overflow
${result}= Run Process git clean -qfd cwd=${ws}
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
# reset to restore files
${result}= Run Process git reset --hard
... cwd=${ws} stdout=stdout.txt stderr=stderr.txt
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Get default branch from remote
[Arguments] ${ws}
# Set origin head to auto
${result}= Run Process git remote set-head origin --auto
... cwd=${ws}
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
# get the head
${result}= Run Process git rev-parse --abbrev-ref origin/HEAD
... cwd=${ws}
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
# Strip off origin/ from the branch because all other commands
# add the remote name.
${branch}= Get Substring ${result.stdout} 7
[Return] ${branch}
Make new branch
[Arguments] ${name} ${ws}
${result}= Run Process git checkout -b ${name}
... cwd=${ws} shell=True
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Delete branch
[Arguments] ${name} ${to_branch} ${ws}
Run Keyword Switch branch ${to_branch} ${ws}
${result}= Run Process git branch -D ${name}
... cwd=${ws} shell=True
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Switch branch
[Arguments] ${name} ${ws}
${result}= Run Process git checkout ${name}
... cwd=${ws} shell=True
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Stage changed file
[Arguments] ${file_path} ${ws}
${result}= Run Process git add ${file_path}
... cwd=${ws} shell=True
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Commit changes
[Arguments] ${msg} ${ws}
${result}= Run Process git commit -m ${msg}
... cwd=${ws} shell=True
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
### Stuart operations ###
Stuart setup
[Arguments] ${setting_file} ${arch} ${target} ${packages} ${tool_chain} ${ws}
Log to console Stuart Setup
${result}= Run Process stuart_setup
... -c ${setting_file} -a ${arch} TOOL_CHAIN_TAG\=${tool_chain} -t ${target} -p ${packages} TARGET\=${target}
... cwd=${ws} stdout=stdout.txt stderr=stderr.txt
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Stuart ci setup
[Arguments] ${setting_file} ${arch} ${target} ${packages} ${tool_chain} ${ws}
Log to console Stuart CI Setup
${result}= Run Process stuart_ci_setup
... -c ${setting_file} -a ${arch} TOOL_CHAIN_TAG\=${tool_chain} -t ${target} -p ${packages} TARGET\=${target}
... cwd=${ws} stdout=stdout.txt stderr=stderr.txt
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Stuart update
[Arguments] ${setting_file} ${arch} ${target} ${packages} ${tool_chain} ${ws}
Log to console Stuart Update
${result}= Run Process stuart_update
... -c ${setting_file} -a ${arch} TOOL_CHAIN_TAG\=${tool_chain} -t ${target} -p ${packages} TARGET\=${target}
... cwd=${ws} stdout=stdout.txt stderr=stderr.txt
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Stuart platform build
[Arguments] ${setting_file} ${arch} ${target} ${tool_chain} ${ws}
Log to console Stuart Build
${result}= Run Process stuart_build
... -c ${setting_file} -a ${arch} TOOL_CHAIN_TAG\=${tool_chain} TARGET\=${target}
... cwd=${ws} stdout=stdout.txt stderr=stderr.txt
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Stuart platform run
[Arguments] ${setting_file} ${arch} ${target} ${tool_chain} ${additional_flags} ${ws}
Log to console Stuart Build Run
${result}= Run Process stuart_build
... -c ${setting_file} -a ${arch} TOOL_CHAIN_TAG\=${tool_chain} TARGET\=${target} --FlashOnly ${additional_flags}
... cwd=${ws} stdout=stdout.txt stderr=stderr.txt
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Stuart CI build
[Arguments] ${setting_file} ${archs} ${targets} ${packages} ${tool_chain} ${ws}
Log to console Stuart CI Build
${result}= Run Process stuart_ci_build
... -c ${setting_file} -a ${archs} -t ${targets} -p ${packages} TOOL_CHAIN_TAG\=${tool_chain}
... cwd=${ws} stdout=stdout.txt stderr=stderr.txt
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Stuart pr evaluation
[Documentation] Run Pr Eval
[Arguments] ${setting_file} ${packages} ${base_ref} ${other_build_flags} ${ws}
${result}= Run Process stuart_pr_eval
... -c ${setting_file} -p ${packages} --pr-target origin/${base_ref}
... --output-csv-format-string {pkgcsv}
... cwd=${ws} stdout=stdout.txt stderr=stderr.txt
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Return From Keyword ${result.stdout}
### Edk2 BaseTools Build operations ###
Build BaseTools
[Arguments] ${tool_chain} ${ws}
Log to console Compile basetools
${result}= Run Process python
... BaseTools/Edk2ToolsBuild.py -t ${tool_chain}
... cwd=${ws} shell=True stdout=stdout.txt stderr=stderr.txt
Log Many stdout: ${result.stdout} stderr: ${result.stderr}
Should Be Equal As Integers ${result.rc} 0