code: def test_supports_external_link(self):
      task_log_reader = TaskLogReader()
  
      # Short circuit if log_handler doesn't include ExternalLoggingMixin
      task_log_reader.log_handler = mock.MagicMock()
      mock_prop = mock.PropertyMock()
      mock_prop.return_value = False
      type(
          task_log_reader.log_handler
      ).supports_external_link = mock_prop
      assert not task_log_reader.supports_external_link
      mock_prop.assert_not_called()
  
      # Otherwise, defer to the log_handlers supports_external_link
      task_log_reader.log_handler = mock.MagicMock(
          spec=ExternalLoggingMixin
      )
      type(
          task_log_reader.log_handler
      ).supports_external_link = mock_prop
      assert not task_log_reader.supports_external_link
      mock_prop.assert_called_once()
  
      mock_prop.return_value = True
      assert task_log_reader.supports_external_link
  
imports: from __future__ import annotations
  import copy
  import datetime
  import logging
  import os
  import sys
  import tempfile
  from typing import TYPE_CHECKING
  from unittest import mock
  import pendulum
  import pytest
  from airflow import settings
  from airflow.config_templates.airflow_local_settings import DEFAULT_LOGGING_CONFIG
  from airflow.models.tasklog import LogTemplate
  from airflow.operators.python import PythonOperator
  from airflow.timetables.base import DataInterval
  from airflow.utils import timezone
  from airflow.utils.log.log_reader import TaskLogReader
  from airflow.utils.log.logging_mixin import ExternalLoggingMixin
  from airflow.utils.state import TaskInstanceState
  from airflow.utils.types import DagRunType
  from tests.test_utils.config import conf_vars
  from tests.test_utils.db import clear_db_dags, clear_db_runs
label_desc: Use image node_id 12 for calling the TestLogView obj's underlying member method code with example usage: obj.test_supports_external_link() without return types