|
|
|
"""Tests of the patatools-cache command."""
|
|
|
|
|
|
|
|
# pylint: disable=too-few-public-methods
|
|
|
|
|
|
|
|
import os
|
|
|
|
import shutil
|
|
|
|
import unittest
|
|
|
|
|
|
|
|
from patacrep.files import chdir
|
|
|
|
from patacrep.tools.__main__ import main as tools_main
|
|
|
|
from patacrep.tools.cache.__main__ import main as cache_main
|
|
|
|
from patacrep.songbook.__main__ import main as songbook_main
|
|
|
|
|
|
|
|
from .. import logging_reduced
|
|
|
|
|
|
|
|
CACHEDIR = os.path.join(os.path.dirname(__file__), "test_cache_datadir", ".cache")
|
|
|
|
|
|
|
|
class TestCache(unittest.TestCase):
|
|
|
|
"""Test of the "patatools cache" subcommand"""
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
"""Remove cache."""
|
|
|
|
self._remove_cache()
|
|
|
|
self.assertFalse(os.path.exists(CACHEDIR))
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
"""Remove cache."""
|
|
|
|
self._remove_cache()
|
|
|
|
self.assertFalse(os.path.exists(CACHEDIR))
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def _remove_cache():
|
|
|
|
"""Delete cache."""
|
|
|
|
shutil.rmtree(CACHEDIR, ignore_errors=True)
|
|
|
|
|
|
|
|
def _system(self, main, args):
|
|
|
|
with chdir(os.path.dirname(__file__)):
|
|
|
|
try:
|
|
|
|
main(args)
|
|
|
|
except SystemExit as systemexit:
|
|
|
|
self.assertEqual(systemexit.code, 0)
|
|
|
|
|
|
|
|
def test_clean_exists(self):
|
|
|
|
"""Test of the "patatools cache clean" subcommand"""
|
|
|
|
for main, args in [
|
|
|
|
(tools_main, ["patatools", "cache", "clean", "test_cache.yaml"]),
|
|
|
|
(cache_main, ["patatools-cache", "clean", "test_cache.yaml"]),
|
|
|
|
]:
|
|
|
|
with self.subTest(main=main, args=args):
|
|
|
|
# First compilation. Ensure that cache exists afterwards
|
|
|
|
with logging_reduced('patacrep.build'):
|
|
|
|
self._system(
|
|
|
|
songbook_main,
|
|
|
|
["songbook", "--steps", "tex,clean", "test_cache.yaml"]
|
|
|
|
)
|
|
|
|
self.assertTrue(os.path.exists(CACHEDIR))
|
|
|
|
|
|
|
|
# Clean cache
|
|
|
|
with logging_reduced('patatools.cache'):
|
|
|
|
self._system(main, args)
|
|
|
|
|
|
|
|
# Ensure that cache does not exist
|
|
|
|
self.assertFalse(os.path.exists(CACHEDIR))
|
|
|
|
|
|
|
|
def test_clean_not_exists(self):
|
|
|
|
"""Test of the "patatools cache clean" subcommand"""
|
|
|
|
# Clean non-existent cache
|
|
|
|
for main, args in [
|
|
|
|
(tools_main, ["patatools", "cache", "clean", "test_cache.yaml"]),
|
|
|
|
(cache_main, ["patatools-cache", "clean", "test_cache.yaml"]),
|
|
|
|
]:
|
|
|
|
with self.subTest(main=main, args=args):
|
|
|
|
# Clean cache
|
|
|
|
with logging_reduced('patatools.cache'):
|
|
|
|
self._system(main, args)
|