class_docstr: Test class for output tests.
docstr: Clean up after tests.
docstr_tok: ["Clean","up","after","tests","."]
code: def tearDownClass(cls):
      """Clean up after tests."""
      for suffix in [
          "learning_curve",
          "summary",
          "fancy_xval",
          "warning_multiple_featuresets",
      ]:
          for dir_path in [train_dir, test_dir]:
              unlink(dir_path / f"test_{suffix}.jsonlines")
  
          config_files = [
              f"test_{suffix}.cfg",
              f"test_{suffix}_with_metrics.cfg",
              f"test_{suffix}_with_objectives.cfg",
              f"test_{suffix}_feature_hasher.cfg",
              f"test_{suffix}_feature_hasher_with_metrics.cfg",
          ]
          for cf in config_files:
              unlink(config_dir / cf)
  
          for output_file in chain(
              output_dir.glob(f"test_{suffix}_*"),
              output_dir.glob(f"test_{suffix}.log"),
          ):
              unlink(output_file)
  
      for suffix in VALID_TASKS:
          config_files = [f"test_cv_results_{suffix}.cfg"]
          for cf in config_files:
              unlink(config_dir / cf)
  
      for path in [
          config_dir / "test_send_warnings_to_log.cfg",
          "test_current_directory.model",
          train_dir / "test_learning_curve1.jsonlines",
          train_dir / "test_learning_curve2.jsonlines",
      ]:
          unlink(path)
  
      remove_jsonlines_feature_files(train_dir)
  
      # adding all the suffix independent output patterns here that are
      # not f'test_{SUFFIX}_*'
      clean_up_output_file_name_patterns = [
          "test_majority_class_custom_learner_*",
          "test_send_warnings_to_log*",
          "test_grid_search_cv_results_*.*",
          "test_check_override_learning_curve_min_examples*",
      ]
      for file_name_pattern in clean_up_output_file_name_patterns:
          for output_file in output_dir.glob(file_name_pattern):
              unlink(output_file)
  
imports: import csv
  import json
  import re
  import unittest
  import warnings
  from ast import literal_eval
  from collections import defaultdict
  from itertools import chain, product
  from pathlib import Path
  from unittest.mock import Mock, patch
  import numpy
  import pandas
  from numpy.testing import assert_almost_equal, assert_array_almost_equal, assert_array_equal
  from sklearn.model_selection import ShuffleSplit, learning_curve
  from sklearn.naive_bayes import MultinomialNB
  from skll.data import FeatureSet, NDJReader, NDJWriter, Reader
  from skll.experiments import run_configuration
  from skll.experiments.output import _compute_ylimits_for_featureset
  from skll.learner import Learner
  from skll.utils.constants import VALID_TASKS
  from skll.utils.logging import close_and_remove_logger_handlers, get_skll_logger
  from skll.utils.testing import backward_compatibility_dir, config_dir, create_jsonlines_feature_files, fill_in_config_options, fill_in_config_paths, fill_in_config_paths_for_single_file, make_classification_data, make_digits_data, make_regression_data, other_dir, output_dir, remove_jsonlines_feature_files, test_dir, tests_dir, train_dir, unlink
label_desc: Use image node_id 2 for calling the TestOutput obj's underlying member method code with example usage: obj.tearDownClass(cls) without return types