code: def run_porcupine(self, language, keyword, audio_file_name=None):
      args = [
          os.path.join(
              os.path.dirname(__file__), "../build/porcupine_demo_file"
          ),
          "-a",
          self._access_key,
          "-l",
          self._get_library_file(),
          "-m",
          self._get_model_path_by_language(language),
          "-k",
          self._get_keyword_path_by_language(language, keyword),
          "-t",
          "0.5",
          "-w",
          self._get_audio_file_by_language(language, audio_file_name),
      ]
      process = subprocess.Popen(
          args, stderr=subprocess.PIPE, stdout=subprocess.PIPE
      )
      stdout, stderr = process.communicate()
      self.assertEqual(process.poll(), 0)
      self.assertEqual(stderr.decode("utf-8"), "")
      self.assertTrue("detected at" in stdout.decode("utf-8"))
  
file_path: porcupine/demo/c/test/test_porcupine_c.py
imports: import os.path
  import subprocess
  import sys
  import unittest
  from parameterized import parameterized
  from test_util import *
label_desc: Use image node_id 6 for calling the PorcupineCTestCase obj's underlying member method code with example usage: obj.run_porcupine(language, keyword, audio_file_name) without return types