code: def test_get_source_files(self):
      pkg_dir, dist = self.create_dist()
      cmd = build_clib(dist)
  
      # "in 'libraries' option 'sources' must be present and must be
      # a list of source filenames
      cmd.libraries = [("name", {})]
      self.assertRaises(DistutilsSetupError, cmd.get_source_files)
  
      cmd.libraries = [("name", {"sources": 1})]
      self.assertRaises(DistutilsSetupError, cmd.get_source_files)
  
      cmd.libraries = [("name", {"sources": ["a", "b"]})]
      self.assertEqual(cmd.get_source_files(), ["a", "b"])
  
      cmd.libraries = [("name", {"sources": ("a", "b")})]
      self.assertEqual(cmd.get_source_files(), ["a", "b"])
  
      cmd.libraries = [
          ("name", {"sources": ("a", "b")}),
          ("name2", {"sources": ["c", "d"]}),
      ]
      self.assertEqual(cmd.get_source_files(), ["a", "b", "c", "d"])
  
file_path: catboost/contrib/tools/python/src/Lib/distutils/tests/test_build_clib.py
imports: import unittest
  import os
  import sys
  from test.test_support import run_unittest
  from distutils.command.build_clib import build_clib
  from distutils.errors import DistutilsSetupError
  from distutils.tests import support
  from distutils.spawn import find_executable
label_desc: Use image node_id 2 for calling the BuildCLibTestCase obj's underlying member method code with example usage: obj.test_get_source_files() without return types