code: def test_dataset_with_subdirs(self):
      tmp_dir, _, _ = self.create_dataset()
  
      with self.subTest("no read rights files"):
          for subdir, dirs, files in os.walk(tmp_dir):
              for filename in files:
                  filepath = os.path.join(subdir, filename)
                  os.chmod(filepath, 0o000)
          dataset = LightlyDataset(input_dir=tmp_dir)
          self.assertGreater(len(dataset.get_filenames()), 0)
          with self.assertRaises(PermissionError):
              for _ in dataset:
                  pass
  
      with self.subTest("no read rights subfolders"):
          for subdir, dirs, files in os.walk(tmp_dir):
              os.chmod(subdir, 0o000)
          with self.assertRaises(PermissionError):
              dataset = LightlyDataset(input_dir=tmp_dir)
  
      with self.subTest("no read rights root"):
          os.chmod(tmp_dir, 0o000)
          with self.assertRaises(PermissionError):
              dataset = LightlyDataset(input_dir=tmp_dir)
  
imports: import os
  import shutil
  import tempfile
  import unittest
  from typing import List, Tuple
  import numpy
  import torchvision
  from PIL.Image import Image
  from lightly.data import LightlyDataset
  from lightly.data._utils import check_images
label_desc: Use image node_id 20 for calling the TestLightlyDataset obj's underlying member method code with example usage: obj.test_dataset_with_subdirs() without return types