xref: /aosp_15_r20/external/pigweed/pw_cli_analytics/py/analytics_test.py (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1# Copyright 2024 The Pigweed Authors
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4# use this file except in compliance with the License. You may obtain a copy of
5# the License at
6#
7#     https://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations under
13# the License.
14"""Tests for pw_cli_analytics.analytics."""
15
16import getpass
17import os.path
18import unittest
19
20from pw_cli_analytics import analytics
21
22# pylint: disable=no-member
23
24
25class TestRemoveUsername(unittest.TestCase):
26    """Tests for analytics.remove_username."""
27
28    def setUp(self):
29        self.home = '/home/username'
30        self.username = 'username'
31
32    def remove_username(self, arg: str) -> str:
33        return analytics.remove_username(
34            arg,
35            username=self.username,
36            home=self.home,
37        )
38
39    def test_remove_home_complete(self):
40        self.assertEqual(self.remove_username(self.home), '$HOME')
41
42    def test_remove_home(self):
43        self.assertEqual(
44            self.remove_username(f'{self.home}/foo/bar'),
45            '$HOME/foo/bar',
46        )
47
48    def test_remove_username_complete(self):
49        self.assertEqual(self.remove_username(self.username), '$USERNAME')
50
51    def test_remove_username(self):
52        self.assertEqual(
53            self.remove_username(f'foo-{self.username}-bar'),
54            'foo-$USERNAME-bar',
55        )
56
57    def test_noop_foobar(self):
58        self.assertEqual(
59            self.remove_username('foo-bar'),
60            'foo-bar',
61        )
62
63    def test_noop_usernamenospaceafter(self):
64        self.assertEqual(
65            self.remove_username(f'{self.username}nospaceafter'),
66            f'{self.username}nospaceafter',
67        )
68
69    def test_windows_remove_home_complete(self):
70        self.home = r'C:\users\username'
71        self.assertEqual(
72            self.remove_username(self.home),
73            '$HOME',
74        )
75
76    def test_windows_remove_home(self):
77        self.home = r'C:\users\username'
78        self.assertEqual(
79            self.remove_username(rf'{self.home}\foo\bar'),
80            r'$HOME\foo\bar',
81        )
82
83
84class TestRemoveUsernameEnviron(unittest.TestCase):
85    """Tests for analytics.remove_username."""
86
87    def setUp(self):
88        self.username = getpass.getuser()
89        self.home = os.path.expanduser('~')
90
91    def remove_username(self, arg: str) -> str:
92        return analytics.remove_username(
93            arg,
94            username=self.username,
95            home=self.home,
96        )
97
98    def test_remove_home_complete(self):
99        self.assertEqual(self.remove_username(self.home), '$HOME')
100
101    def test_remove_home(self):
102        self.assertEqual(
103            self.remove_username(os.path.join(self.home, 'foo', 'bar')),
104            os.path.join('$HOME', 'foo', 'bar'),
105        )
106
107    def test_remove_username_complete(self):
108        self.assertEqual(self.remove_username(self.username), '$USERNAME')
109
110    def test_remove_username(self):
111        self.assertEqual(
112            self.remove_username(f'foo-{self.username}-bar'),
113            'foo-$USERNAME-bar',
114        )
115
116
117if __name__ == '__main__':
118    unittest.main()
119