Gilles Peskine | 2fcf04f | 2019-06-14 18:23:03 +0200 | [diff] [blame] | 1 | #!/usr/bin/env python3 |
| 2 | """Run the Mbed TLS demo scripts. |
| 3 | """ |
| 4 | import glob |
| 5 | import subprocess |
| 6 | import sys |
| 7 | |
| 8 | def run_demo(demo): |
| 9 | """Run the specified demo script. Return True if it succeeds.""" |
| 10 | returncode = subprocess.call([demo]) |
| 11 | return returncode == 0 |
| 12 | |
| 13 | def 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 Peskine | 198d87a | 2020-04-26 22:33:48 +0200 | [diff] [blame^] | 21 | success = run_demo(demo) |
| 22 | if not success: |
Gilles Peskine | 2fcf04f | 2019-06-14 18:23:03 +0200 | [diff] [blame] | 23 | 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 | |
| 32 | def 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 Peskine | 198d87a | 2020-04-26 22:33:48 +0200 | [diff] [blame^] | 40 | def main(): |
| 41 | success = run_all_demos() |
| 42 | sys.exit(0 if success else 1) |
| 43 | |
Gilles Peskine | 2fcf04f | 2019-06-14 18:23:03 +0200 | [diff] [blame] | 44 | if __name__ == '__main__': |
Gilles Peskine | 198d87a | 2020-04-26 22:33:48 +0200 | [diff] [blame^] | 45 | main() |