(self)
| 3219 | "no home directory on VxWorks") |
| 3220 | @needs_posix |
| 3221 | def test_expanduser_posix(self): |
| 3222 | P = self.cls |
| 3223 | import_helper.import_module('pwd') |
| 3224 | import pwd |
| 3225 | pwdent = pwd.getpwuid(os.getuid()) |
| 3226 | username = pwdent.pw_name |
| 3227 | userhome = pwdent.pw_dir.rstrip('/') or '/' |
| 3228 | # Find arbitrary different user (if exists). |
| 3229 | for pwdent in pwd.getpwall(): |
| 3230 | othername = pwdent.pw_name |
| 3231 | otherhome = pwdent.pw_dir.rstrip('/') |
| 3232 | if othername != username and otherhome: |
| 3233 | break |
| 3234 | else: |
| 3235 | othername = username |
| 3236 | otherhome = userhome |
| 3237 | |
| 3238 | fakename = 'fakeuser' |
| 3239 | # This user can theoretically exist on a test runner. Create unique name: |
| 3240 | try: |
| 3241 | while pwd.getpwnam(fakename): |
| 3242 | fakename += '1' |
| 3243 | except KeyError: |
| 3244 | pass # Non-existent name found |
| 3245 | |
| 3246 | p1 = P('~/Documents') |
| 3247 | p2 = P(f'~{username}/Documents') |
| 3248 | p3 = P(f'~{othername}/Documents') |
| 3249 | p4 = P(f'../~{username}/Documents') |
| 3250 | p5 = P(f'/~{username}/Documents') |
| 3251 | p6 = P('') |
| 3252 | p7 = P(f'~{fakename}/Documents') |
| 3253 | |
| 3254 | with os_helper.EnvironmentVarGuard() as env: |
| 3255 | env.unset('HOME') |
| 3256 | |
| 3257 | self.assertEqual(p1.expanduser(), P(userhome) / 'Documents') |
| 3258 | self.assertEqual(p2.expanduser(), P(userhome) / 'Documents') |
| 3259 | self.assertEqual(p3.expanduser(), P(otherhome) / 'Documents') |
| 3260 | self.assertEqual(p4.expanduser(), p4) |
| 3261 | self.assertEqual(p5.expanduser(), p5) |
| 3262 | self.assertEqual(p6.expanduser(), p6) |
| 3263 | self.assertRaises(RuntimeError, p7.expanduser) |
| 3264 | |
| 3265 | env['HOME'] = '/tmp' |
| 3266 | self.assertEqual(p1.expanduser(), P('/tmp/Documents')) |
| 3267 | self.assertEqual(p2.expanduser(), P(userhome) / 'Documents') |
| 3268 | self.assertEqual(p3.expanduser(), P(otherhome) / 'Documents') |
| 3269 | self.assertEqual(p4.expanduser(), p4) |
| 3270 | self.assertEqual(p5.expanduser(), p5) |
| 3271 | self.assertEqual(p6.expanduser(), p6) |
| 3272 | self.assertRaises(RuntimeError, p7.expanduser) |
| 3273 | |
| 3274 | @unittest.skipIf(sys.platform != "darwin", |
| 3275 | "Bad file descriptor in /dev/fd affects only macOS") |
nothing calls this directly
no test coverage detected