xref: /aosp_15_r20/external/angle/build/fuchsia/test/bundled_test_runner_unittests.py (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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