1#!/usr/bin/env vpython3 2 3# Copyright 2024 The Chromium Authors 4# Use of this source code is governed by a BSD-style license that can be 5# found in the LICENSE file. 6"""Tests of BundledTestRunner.""" 7 8import unittest 9 10from bundled_test_runner import _BundledTestRunner, TestCase 11 12# Test names should be self-explained, no point of adding function docstring. 13# pylint: disable=missing-function-docstring, protected-access 14 15 16class BundledTestRunnerTests(unittest.TestCase): 17 """Test class.""" 18 19 @staticmethod 20 def _default_test_case() -> TestCase: 21 return TestCase( 22 package='fuchsia-pkg://fuchsia.com/dart_runner_tests#meta/' + 23 'dart_runner_tests.cm') 24 25 def test_resolve_test_package_into_far(self): 26 runner = _BundledTestRunner( 27 'out/put', [BundledTestRunnerTests._default_test_case()], 28 'target-id', None, '/tmp/log', [], None) 29 self.assertEqual( 30 runner._package_deps, 31 {'dart_runner_tests': 'out/put/dart_runner_tests.far'}) 32 33 def test_dedupe_fars(self): 34 runner = _BundledTestRunner( 35 'out/put', [BundledTestRunnerTests._default_test_case()], 36 'target-id', None, '/tmp/log', ['dart_runner_tests.far'], None) 37 self.assertEqual( 38 runner._package_deps, 39 {'dart_runner_tests': 'out/put/dart_runner_tests.far'}) 40 41 def test_absolute_path(self): 42 runner = _BundledTestRunner( 43 'out/put', [BundledTestRunnerTests._default_test_case()], 44 'target-id', None, '/tmp/log', 45 ['/tmp/packages/dart_runner_tests.far'], None) 46 self.assertEqual( 47 runner._package_deps, 48 {'dart_runner_tests': '/tmp/packages/dart_runner_tests.far'}) 49 50 def test_different_cm(self): 51 runner = _BundledTestRunner('out/put', [ 52 TestCase( 53 package= 54 'fuchsia-pkg://fuchsia.com/dart_runner_tests#meta/meta.cm') 55 ], 'target-id', None, '/tmp/log', [], None) 56 self.assertEqual( 57 runner._package_deps, 58 {'dart_runner_tests': 'out/put/dart_runner_tests.far'}) 59 60 def test_join_relative_path(self): 61 runner = _BundledTestRunner( 62 'out/default', [BundledTestRunnerTests._default_test_case()], 63 'target-id', None, '/tmp/log', ['gen/dart_runner_tests.far'], None) 64 self.assertEqual( 65 runner._package_deps, 66 {'dart_runner_tests': 'out/default/gen/dart_runner_tests.far'}) 67 68 def test_current_dir_as_out_dir(self): 69 runner = _BundledTestRunner( 70 '.', [BundledTestRunnerTests._default_test_case()], 'target-id', 71 None, '/tmp/log', ['out/default/bin/dart_runner_tests.far'], None) 72 self.assertEqual( 73 runner._package_deps, 74 {'dart_runner_tests': './out/default/bin/dart_runner_tests.far'}) 75 76 def test_empty_out_dir(self): 77 runner = _BundledTestRunner( 78 '', [BundledTestRunnerTests._default_test_case()], 'target-id', 79 None, '/tmp/log', ['out/default/bin/dart_runner_tests.far'], None) 80 self.assertEqual( 81 runner._package_deps, 82 {'dart_runner_tests': 'out/default/bin/dart_runner_tests.far'}) 83 84 def test_none_out_dir(self): 85 with self.assertRaises(TypeError): 86 _BundledTestRunner(None, 87 [BundledTestRunnerTests._default_test_case()], 88 'target-id', None, '/tmp/log', 89 ['out/default/bin/dart_runner_tests.far'], None) 90 91 def test_conflict_fars(self): 92 with self.assertRaises(AssertionError): 93 _BundledTestRunner('', 94 [BundledTestRunnerTests._default_test_case()], 95 'target-id', None, '/tmp/log', [ 96 'out/default/bin/dart_runner_tests.far', 97 'not/out/default/bin/dart_runner_tests.far' 98 ], None) 99 100 101if __name__ == '__main__': 102 unittest.main() 103