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