def test_walk(self): """Test the walk() function. """ # # Test onerror # e = MagicMock() err = HpssOSError('foobar') with patch('hpsspy.os._os.listdir') as ld: ld.side_effect = err w = walk('/home/b/bweaver', onerror=e) try: n = next(w) except StopIteration: pass ld.assert_called_with('/home/b/bweaver') e.assert_called_with(err) # # Test standard operation # d = MagicMock() d.isdir = True d.__str__.return_value = 'subdir' f = MagicMock() f.isdir = False with patch('hpsspy.os._os.listdir') as ld: with patch('hpsspy.os.path.islink') as i: i.return_value = False ld.side_effect = [[d, f], []] w = walk('/home/b/bweaver') n = next(w) self.assertEqual(n, ('/home/b/bweaver', [d], [f])) ld.assert_called_with('/home/b/bweaver') n = next(w) self.assertEqual(n, ('/home/b/bweaver/subdir', [], [])) i.assert_called_with('/home/b/bweaver/subdir') # # Test topdown operation # d = MagicMock() d.isdir = True d.__str__.return_value = 'subdir' f = MagicMock() f.isdir = False with patch('hpsspy.os._os.listdir') as ld: with patch('hpsspy.os.path.islink') as i: i.return_value = False ld.side_effect = [[d, f], []] w = walk('/home/b/bweaver', topdown=False) n = next(w) self.assertEqual(n, ('/home/b/bweaver/subdir', [], [])) i.assert_called_with('/home/b/bweaver/subdir') n = next(w) self.assertEqual(n, ('/home/b/bweaver', [d], [f])) ld.assert_called_with('/home/b/bweaver/subdir')
def test_HpssFile_isdir(self): """Test the isdir property on symbolic links. """ lspath = '/home/b/bweaver' with patch('hpsspy.os.stat') as s: m = MagicMock() m.isdir = True s.return_value = m f = HpssFile(lspath, 'l', 'rwxrwxrwx', 1, 'bweaver', 'bweaver', 21, 'Aug', 22, '2014', 'cosmo@ -> /nersc/projects/cosmo') self.assertTrue(f.islink) self.assertTrue(f.isdir) s.assert_called_with('/nersc/projects/cosmo') with patch('hpsspy.os.stat') as s: m = MagicMock() m.isdir = False s.return_value = m f = HpssFile(lspath, 'l', 'rwxrwxrwx', 1, 'bweaver', 'bweaver', 21, 'Aug', 22, '2014', 'cosmo@ -> cosmo.txt') self.assertTrue(f.islink) self.assertFalse(f.isdir) s.assert_called_with('/home/b/bweaver/cosmo.txt')