blob: c8e39966506d81c9b4425e0c232451c4f76619df [file] [log] [blame]
Gilles Peskine2fcf04f2019-06-14 18:23:03 +02001#!/usr/bin/env python3
2"""Run the Mbed TLS demo scripts.
3"""
4import glob
5import subprocess
6import sys
7
8def run_demo(demo):
9 """Run the specified demo script. Return True if it succeeds."""
10 returncode = subprocess.call([demo])
11 return returncode == 0
12
13def run_demos(demos):
14 """Run the specified demos and print summary information about failures.
15
16 Return True if all demos passed and False if a demo fails.
17 """
18 failures = []
19 for demo in demos:
20 print('#### {} ####'.format(demo))
Gilles Peskine198d87a2020-04-26 22:33:48 +020021 success = run_demo(demo)
22 if not success:
Gilles Peskine2fcf04f2019-06-14 18:23:03 +020023 failures.append(demo)
24 print('{}: FAIL'.format(demo))
25 print('')
26 successes = len(demos) - len(failures)
27 print('{}/{} demos passed'.format(successes, len(demos)))
28 if failures:
29 print('Failures:', *failures)
30 return not failures
31
32def run_all_demos():
33 """Run all the available demos.
34
35 Return True if all demos passed and False if a demo fails.
36 """
37 all_demos = glob.glob('programs/*/*_demo.sh')
38 return run_demos(all_demos)
39
Gilles Peskine198d87a2020-04-26 22:33:48 +020040def main():
41 success = run_all_demos()
42 sys.exit(0 if success else 1)
43
Gilles Peskine2fcf04f2019-06-14 18:23:03 +020044if __name__ == '__main__':
Gilles Peskine198d87a2020-04-26 22:33:48 +020045 main()