]>
Commit | Line | Data |
---|---|---|
1 | version: 3.0.1.{build} | |
2 | image: Visual Studio 2017 | |
3 | clone_folder: C:\ProxSpace\pm3 | |
4 | init: | |
5 | - ps: >- | |
6 | $psversiontable | |
7 | ||
8 | #Get-ChildItem Env: | |
9 | ||
10 | ||
11 | $releasename="" | |
12 | ||
13 | $env:APPVEYOR_REPO_COMMIT_SHORT = $env:APPVEYOR_REPO_COMMIT.Substring(0, 8) | |
14 | ||
15 | if ($env:appveyor_repo_tag -match "true"){ | |
16 | $releasename=$env:APPVEYOR_REPO_TAG_NAME + "/" | |
17 | } | |
18 | ||
19 | $releasename+=$env:APPVEYOR_BUILD_VERSION + " [" + $env:APPVEYOR_REPO_COMMIT_SHORT + "]" | |
20 | ||
21 | ||
22 | Write-Host "repository: $env:appveyor_repo_name branch:$env:APPVEYOR_REPO_BRANCH release: $releasename" -ForegroundColor Yellow | |
23 | ||
24 | Add-AppveyorMessage -Message "[$env:APPVEYOR_REPO_COMMIT_SHORT]$env:appveyor_repo_name($env:APPVEYOR_REPO_BRANCH)" -Category Information -Details "repository: $env:appveyor_repo_name branch: $env:APPVEYOR_REPO_BRANCH release: $releasename" | |
25 | ||
26 | ||
27 | iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) | |
28 | clone_script: | |
29 | - ps: >- | |
30 | Write-Host "Removing ProxSpace..." -NoNewLine | |
31 | ||
32 | cd \ | |
33 | ||
34 | Remove-Item -Recurse -Force -Path c:\ProxSpace\* | |
35 | ||
36 | Write-Host "[ OK ]" -ForegroundColor Green | |
37 | ||
38 | ||
39 | Write-Host "Git clone ProxSpace..." -NoNewLine | |
40 | ||
41 | git clone -q https://github.com/Gator96100/ProxSpace c:\ProxSpace | |
42 | ||
43 | Write-Host "[ OK ]" -ForegroundColor Green | |
44 | ||
45 | ||
46 | Write-Host "Removing pm3 dir..." -NoNewLine | |
47 | ||
48 | Remove-Item -Recurse -Force -Path c:\ProxSpace\pm3\* | |
49 | ||
50 | Write-Host "[ OK ]" -ForegroundColor Green | |
51 | ||
52 | ||
53 | Write-Host "Cloning repository <$env:appveyor_repo_name> to $env:appveyor_build_folder ..." -NoNewLine | |
54 | ||
55 | if(-not $env:appveyor_pull_request_number) { | |
56 | git clone -q --branch=$env:appveyor_repo_branch https://github.com/$env:appveyor_repo_name.git $env:appveyor_build_folder | |
57 | cd $env:appveyor_build_folder | |
58 | git checkout -qf $env:appveyor_repo_commit | |
59 | } else { | |
60 | git clone -q https://github.com/$env:appveyor_repo_name.git $env:appveyor_build_folder | |
61 | cd $env:appveyor_build_folder | |
62 | git fetch -q origin +refs/pull/$env:appveyor_pull_request_number/merge: | |
63 | git checkout -qf FETCH_HEAD | |
64 | } | |
65 | ||
66 | Write-Host "[ OK ]" -ForegroundColor Green | |
67 | ||
68 | ||
69 | Write-Host "Fill msys\etc\fstab file..." -NoNewLine | |
70 | ||
71 | New-Item c:\ProxSpace\msys\etc\fstab -type file -force -value "#Win32_Path Mount_Point`nc:\ProxSpace\devkitARM /devkitARM`nc:\ProxSpace\Qt\5.6 /qt `nc:\ProxSpace\pm3 /pm3`n" | |
72 | ||
73 | Write-Host "[ OK ]" -ForegroundColor Green | |
74 | install: | |
75 | - ps: >- | |
76 | function Exec-External { | |
77 | param( | |
78 | [Parameter(Position=0,Mandatory=1)][scriptblock] $command | |
79 | ) | |
80 | & $command | |
81 | if ($LASTEXITCODE -ne 0) { | |
82 | throw ("Command returned non-zero error-code ${LASTEXITCODE}: $command") | |
83 | } | |
84 | } | |
85 | build_script: | |
86 | - ps: >- | |
87 | $env:Path = "C:\ProxSpace\msys\bin;$env:Path" | |
88 | ||
89 | ||
90 | #make | |
91 | ||
92 | bash -lc -i "pwd;make all" | |
93 | ||
94 | ||
95 | #some checks | |
96 | ||
97 | if(!(Test-Path C:\ProxSpace\pm3\client\proxmark3.exe)){ | |
98 | ||
99 | throw "Main file proxmark3.exe not exists." | |
100 | ||
101 | } | |
102 | ||
103 | if(!(Test-Path C:\ProxSpace\pm3\armsrc\obj\fullimage.elf)){ | |
104 | ||
105 | throw "ARM file fullimage.elf not exists." | |
106 | ||
107 | } | |
108 | ||
109 | if(!(Test-Path C:\ProxSpace\pm3\client\hardnested\tables\*.bin.z)){ | |
110 | ||
111 | throw "Files in hardnested\tables not exists." | |
112 | ||
113 | } | |
114 | ||
115 | ||
116 | #copy | |
117 | ||
118 | Write-Host "Copy release files..." -NoNewLine -ForegroundColor Yellow | |
119 | ||
120 | New-Item -ItemType Directory -Force -Path C:\ProxSpace\Release | |
121 | ||
122 | Copy-Item C:\ProxSpace\pm3\client\*.exe C:\ProxSpace\Release | |
123 | ||
124 | New-Item -ItemType Directory -Force -Path C:\ProxSpace\Release\arm | |
125 | ||
126 | Copy-Item C:\ProxSpace\pm3\armsrc\obj\*.elf C:\ProxSpace\Release\arm | |
127 | ||
128 | Copy-Item C:\ProxSpace\pm3\bootrom\obj\*.elf C:\ProxSpace\Release\arm | |
129 | ||
130 | New-Item -ItemType Directory -Force -Path C:\ProxSpace\Release\scripts | |
131 | ||
132 | Copy-Item C:\ProxSpace\pm3\client\scripts\*.lua C:\ProxSpace\Release\scripts | |
133 | ||
134 | New-Item -ItemType Directory -Force -Path C:\ProxSpace\Release\hardnested\tables | |
135 | ||
136 | Copy-Item C:\ProxSpace\pm3\client\hardnested\*.bin C:\ProxSpace\Release\hardnested | |
137 | ||
138 | Copy-Item C:\ProxSpace\pm3\client\hardnested\tables\*.bin.z C:\ProxSpace\Release\hardnested\tables | |
139 | ||
140 | Write-Host "[ OK ]" -ForegroundColor Green | |
141 | ||
142 | ||
143 | #archive and push | |
144 | ||
145 | $releasename="" | |
146 | ||
147 | if ($env:appveyor_repo_tag -match "true"){ | |
148 | ||
149 | $releasename=$env:APPVEYOR_REPO_TAG_NAME + "/" | |
150 | ||
151 | } | |
152 | ||
153 | $releasename+=$env:APPVEYOR_BUILD_VERSION + " [" + $env:APPVEYOR_REPO_COMMIT.Substring(0, 7) + "]" | |
154 | ||
155 | ||
156 | Write-Host "Archive and publish release files ($releasename)..." -NoNewLine -ForegroundColor Yellow | |
157 | ||
158 | cd C:\ProxSpace | |
159 | ||
160 | 7z a release.zip C:\ProxSpace\Release | |
161 | ||
162 | Push-AppveyorArtifact release.zip -DeploymentName "$releasename" | |
163 | ||
164 | Write-Host "[ OK ]" -ForegroundColor Green | |
165 | ||
166 | ||
167 | Write-Host "Builded..." -ForegroundColor Yellow | |
168 | test_script: | |
169 | - ps: >- | |
170 | $env:Path = "C:\ProxSpace\msys\bin;$env:Path" | |
171 | ||
172 | cd c:\ProxSpace\pm3 | |
173 | ||
174 | ||
175 | $global:TestsPassed=$true | |
176 | ||
177 | ||
178 | Function ExecTest($Name, $File, $Cmd, $CheckResult) { | |
179 | ||
180 | #--- begin Job | |
181 | ||
182 | $Job = Start-Job -ScriptBlock { | |
183 | [bool]$res=$false | |
184 | $TestTime=[System.Environment]::TickCount | |
185 | $env:Path = "C:\ProxSpace\msys\bin;$env:Path" | |
186 | Set-Location $using:PWD | |
187 | ||
188 | $sb=[scriptblock]::Create("$using:Cmd") | |
189 | #execute scriptblock | |
190 | Write-host "Test [$using:Name] job: $using:Cmd" | |
191 | $Cond=&$sb | |
192 | ||
193 | if ($Cond -eq $null){ | |
194 | } ElseIf($using:CheckResult -ne $null) { | |
195 | [String]$searchstr="" | |
196 | if ($Cond -is [Object]){ | |
197 | ForEach($line in $Cond){ | |
198 | Write-host $line -ForegroundColor Gray | |
199 | $searchstr += $line | |
200 | } | |
201 | }else{ | |
202 | Write-host "$Cond" -ForegroundColor Gray | |
203 | $searchstr = $Cond | |
204 | } | |
205 | If($searchstr -like "*$using:CheckResult*") { | |
206 | $res=$true | |
207 | } | |
208 | $Cond="*$using:CheckResult*" | |
209 | } Else { | |
210 | If (!($Cond -is [bool] -or $Cond -is [byte] -or $Cond -is [int16] -or $Cond -is [int32] -or $Cond -is [int64] -or $Cond -is [float])){ | |
211 | if ($Cond -is "String" -and $Cond -like "*passed*"){ | |
212 | $res= $true | |
213 | } | |
214 | if ($Cond -is "String" -and $Cond -like "*true*"){ | |
215 | $res= $true | |
216 | } | |
217 | } Else { | |
218 | $res=$Cond | |
219 | } | |
220 | } | |
221 | ||
222 | If ($res) { | |
223 | Write-host "Result[$using:Name]: $Cond" -ForegroundColor Green | |
224 | Add-AppveyorTest -Name "$using:Name" -Framework NUnit -Filename "$using:File" -Outcome Passed -Duration "$([System.Environment]::TickCount-$TestTime)" | |
225 | }Else { | |
226 | Write-host "Result[$using:Name]: $Cond" -ForegroundColor Red | |
227 | Add-AppveyorTest -Name "$using:Name" -Framework NUnit -Filename "$using:File" -Outcome Failed -Duration "$([System.Environment]::TickCount-$TestTime)" -ErrorMessage "command:$using:Cmd`nresult:$Cond" | |
228 | } | |
229 | return $res | |
230 | } | |
231 | ||
232 | #--- end Job | |
233 | ||
234 | [bool]$res=$false | |
235 | # Wait 120 sec timeout for Job | |
236 | if(Wait-Job $Job -Timeout 120){ | |
237 | $Results = $Job | Receive-Job | |
238 | if($Results -like "true"){ | |
239 | $res=$true | |
240 | } | |
241 | } else { | |
242 | Write-host "Test [$Name] timeout" -ForegroundColor Red | |
243 | Add-AppveyorTest -Name "$Name" -Framework NUnit -Filename "$File" -Outcome Failed -Duration 40000 -ErrorMessage "timeout" | |
244 | } | |
245 | Remove-Job -Force $Job | |
246 | ||
247 | if(!$res){ | |
248 | $global:TestsPassed=$false | |
249 | } | |
250 | } | |
251 | ||
252 | ||
253 | Write-Host "Running tests..." -ForegroundColor Yellow | |
254 | ||
255 | ||
256 | #file test | |
257 | ||
258 | ExecTest "proxmark3 exists" "proxmark3.exe" {Test-Path C:\ProxSpace\Release\proxmark3.exe} | |
259 | ||
260 | ExecTest "arm image exists" "\arm\fullimage1.elf" {Test-Path C:\ProxSpace\Release\arm\fullimage.elf} | |
261 | ||
262 | ExecTest "bootrom exists" "bootrom.elf" {Test-Path C:\ProxSpace\Release\arm\bootrom.elf} | |
263 | ||
264 | ExecTest "hardnested tables exists" "hardnested" {Test-Path C:\ProxSpace\Release\hardnested\tables\*.z} | |
265 | ||
266 | ExecTest "release exists" "release.zip" {Test-Path C:\ProxSpace\release.zip} | |
267 | ||
268 | ||
269 | #proxmark logic tests | |
270 | ||
271 | ExecTest "proxmark help" "proxmark3 -h" {bash -lc 'cd ~/client;proxmark3 -h | grep -q Execute && echo Passed || echo Failed'} | |
272 | ||
273 | ExecTest "proxmark help hardnested" "proxmark3 -h" {bash -lc 'cd ~/client;proxmark3 -h | grep -q hardnested && echo Passed || echo Failed'} | |
274 | ||
275 | ||
276 | ExecTest "hf mf offline text" "hf mf" {bash -lc "cd ~/client;proxmark3 comx -c 'hf mf'"} "at_enc" | |
277 | ||
278 | ExecTest "hf mf hardnested" "hf mf hardnested" {bash -lc "cd ~/client;proxmark3 comx -c 'hf mf hardnested t 1 000000000000'"} "found:" | |
279 | ||
280 | ||
281 | #proxmark crypto tests | |
282 | ||
283 | ExecTest "hf emv test" "hf emv test" {bash -lc "cd ~/client;proxmark3 comx -c 'hf emv test'"} "Tests ?OK" | |
284 | ||
285 | ||
286 | if ($global:TestsPassed) { | |
287 | Write-Host "Tests [ OK ]" -ForegroundColor Green | |
288 | } else { | |
289 | Write-Host "Tests [ ERROR ]" -ForegroundColor Red | |
290 | throw "Tests error." | |
291 | } | |
292 | on_success: | |
293 | - ps: Write-Host "Build success..." -ForegroundColor Green | |
294 | on_failure: | |
295 | - ps: Write-Host "Build error." -ForegroundColor Red | |
296 | on_finish: | |
297 | - ps: $blockRdp = $false; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) |