code: def test_watches_through_relative_symlinks(
      self, origin_dir, site_dir
  ):
      docs_dir = Path(origin_dir, "docs")
      with change_dir(docs_dir):
          try:
              Path(docs_dir, "README.md").symlink_to(
                  Path("..", "README.md")
              )
          except NotImplementedError:  # PyPy on Windows
              self.skipTest("Creating symlinks not supported")
  
      started_building = threading.Event()
  
      with testing_server(docs_dir, started_building.set) as server:
          server.watch(docs_dir)
          time.sleep(0.01)
  
          Path(origin_dir, "README.md").write_text("edited")
          self.assertTrue(started_building.wait(timeout=10))
  
imports: import contextlib
  import email
  import io
  import sys
  import threading
  import time
  import unittest
  from pathlib import Path
  from unittest import mock
  from mkdocs.livereload import LiveReloadServer
  from mkdocs.tests.base import change_dir, tempdir
label_desc: Use image node_id 27 for calling the BuildTests obj's underlying member method code with example usage: obj.test_watches_through_relative_symlinks(origin_dir, site_dir) without return types