#!/usr/bin/env vpython3
# Copyright 2022 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Unittests for plugin_util.py."""

import os
import sys
import unittest

# if the current directory is in scripts (pwd), then we need to
# add plugin in order to import from that directory
if os.path.split(os.path.dirname(__file__))[1] != 'plugin':
  sys.path.append(
    os.path.join(os.path.abspath(os.path.dirname(__file__)), 'plugin')
  )
from plugin_constants import VIDEO_RECORDER_PLUGIN_OPTIONS
from test_plugins import VideoRecorderPlugin, FileCopyPlugin
import plugin_utils

TEST_DEVICE_ID = 'device id'
TEST_OUT_DIR = 'out/dir'


class UnitTest(unittest.TestCase):
  def test_get_video_plugin_from_args(self):
    plugins = plugin_utils.init_plugins_from_args(
      TEST_OUT_DIR,
      video_plugin_option=VIDEO_RECORDER_PLUGIN_OPTIONS.failed_only.name,
    )
    self.assertIsInstance(plugins[0], VideoRecorderPlugin)

  def test_no_plugin_specified_from_args(self):
    plugins = plugin_utils.init_plugins_from_args(TEST_OUT_DIR)
    self.assertTrue(len(plugins) == 0)

  def test_get_clang_coverage_plugin_from_args(self):
    plugins = plugin_utils.init_plugins_from_args(
      TEST_OUT_DIR, use_clang_coverage=True
    )
    self.assertIsInstance(plugins[0], FileCopyPlugin)
    self.assertEqual(plugins[0].glob_pattern, 'data/*.profraw')


if __name__ == '__main__':
  unittest.main()
