94 lines
3.0 KiB
Python
Executable File
94 lines
3.0 KiB
Python
Executable File
#!/usr/bin/env vpython3
|
|
|
|
# Copyright 2021 The Chromium Authors
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
import os
|
|
from pyfakefs import fake_filesystem_unittest
|
|
import tempfile
|
|
import unittest
|
|
|
|
from generate_script import _parse_args
|
|
from generate_script import _generate_script
|
|
|
|
|
|
class Tests(fake_filesystem_unittest.TestCase):
|
|
def test_parse_args(self):
|
|
raw_args = [
|
|
'--script-path=./bin/run_foobar', '--exe-dir=.',
|
|
'--rust-test-executables=metadata.json'
|
|
]
|
|
parsed_args = _parse_args(raw_args)
|
|
self.assertEqual('./bin/run_foobar', parsed_args.script_path)
|
|
self.assertEqual('.', parsed_args.exe_dir)
|
|
self.assertEqual('metadata.json', parsed_args.rust_test_executables)
|
|
|
|
def test_generate_script(self):
|
|
lib_dir = os.path.dirname(__file__)
|
|
out_dir = os.path.join(lib_dir, '../../../out/rust')
|
|
args = type('', (), {})()
|
|
args.make_bat = False
|
|
args.script_path = os.path.join(out_dir, 'bin/run_foo_bar')
|
|
args.exe_dir = out_dir
|
|
|
|
# pylint: disable=unexpected-keyword-arg
|
|
with tempfile.NamedTemporaryFile(delete=False,
|
|
mode='w',
|
|
encoding='utf-8') as f:
|
|
filepath = f.name
|
|
f.write("foo\n")
|
|
f.write("bar\n")
|
|
try:
|
|
args.rust_test_executables = filepath
|
|
actual = _generate_script(args,
|
|
should_validate_if_exes_exist=False)
|
|
finally:
|
|
os.remove(filepath)
|
|
|
|
expected = '''
|
|
#!/bin/bash
|
|
env vpython3 "$(dirname $0)/../../../testing/scripts/rust/rust_main_program.py" \\
|
|
"--rust-test-executable=$(dirname $0)/../bar" \\
|
|
"--rust-test-executable=$(dirname $0)/../foo" \\
|
|
"$@"
|
|
'''.strip()
|
|
|
|
self.assertEqual(expected, actual)
|
|
|
|
def test_generate_bat(self):
|
|
lib_dir = os.path.dirname(__file__)
|
|
out_dir = os.path.join(lib_dir, '../../../out/rust')
|
|
args = type('', (), {})()
|
|
args.make_bat = True
|
|
args.script_path = os.path.join(out_dir, 'bin/run_foo_bar')
|
|
args.exe_dir = out_dir
|
|
|
|
# pylint: disable=unexpected-keyword-arg
|
|
with tempfile.NamedTemporaryFile(delete=False,
|
|
mode='w',
|
|
encoding='utf-8') as f:
|
|
filepath = f.name
|
|
f.write("foo\n")
|
|
f.write("bar\n")
|
|
try:
|
|
args.rust_test_executables = filepath
|
|
actual = _generate_script(args,
|
|
should_validate_if_exes_exist=False)
|
|
finally:
|
|
os.remove(filepath)
|
|
|
|
expected = '''
|
|
@echo off
|
|
vpython3 "%~dp0\\../../../testing/scripts/rust\\rust_main_program.py" ^
|
|
"--rust-test-executable=%~dp0\\..\\bar" ^
|
|
"--rust-test-executable=%~dp0\\..\\foo" ^
|
|
%*
|
|
'''.strip()
|
|
|
|
self.assertEqual(expected, actual)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|