code: def test_make_tree_info_complete(self):
      task = _Task(param=1, sub=_SubTask(param=2))
  
      # check after sub task runs
      gokart.build(task, reset_register=False)
      tree = make_task_info_as_tree_str(task)
      expected = r"""
  └─-\(COMPLETE\) _Task\[[a-z0-9]*\]
     └─-\(COMPLETE\) _SubTask\[[a-z0-9]*\]$"""
      self.assertRegex(tree, expected)
  
imports: import unittest
  from unittest.mock import patch
  import luigi
  import luigi.mock
  from luigi.mock import MockFileSystem, MockTarget
  import gokart
  from gokart.tree.task_info import dump_task_info_table, dump_task_info_tree, make_task_info_as_tree_str, make_task_info_tree
label_desc: Use image node_id 4 for calling the TestInfo obj's underlying member method code with example usage: obj.test_make_tree_info_complete() without return types