| # Copyright 2017 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Utility functions for tests. |
| |
| This includes a few useful functions shared among unit and functional tests. |
| """ |
| |
| from __future__ import print_function |
| |
| import os |
| import re |
| |
| # We are looking for KEY="VALUE", or KEY= |
| RE_KEY_VALUE = re.compile('(?P<key>[A-Z_]+)=("(?P<value>.*)")?$') |
| |
| def ReadVersions(fname): |
| """Read the start of the supplied script to get the version information. |
| |
| This picks up various shell variable assignments from the script and |
| returns them so their values can be checked. |
| |
| Args: |
| fname: Filename of script file. |
| |
| Returns: |
| Dict with: |
| key: Shell variable. |
| value: Value of that shell variable. |
| """ |
| with open(fname) as fd: |
| lines = fd.read(1000).splitlines()[:30] |
| # Use strip() where needed since some lines are indented. |
| prefixes = ['TARGET', 'IMAGE', 'SIGNATURE'] |
| lines = [line.strip() for line in lines |
| if line.strip().split('_')[0] in prefixes or |
| line.startswith('UNIBUILD')] |
| versions = {} |
| for line in lines: |
| m = RE_KEY_VALUE.match(line) |
| value = m.group('value') |
| versions[m.group('key')] = value if value else '' |
| return versions |
| |
| def MakeTestFiles(): |
| """Create test files that we need.""" |
| os.system('./make_test_files.sh') |