from __future__ import absolute_import, unicode_literals, print_function
import os
import tempfile
import unittest
import shutil
from door43_tools.manifest_handler import MetaData, Manifest
from door43_tools.preprocessors import TsObsMarkdownPreprocessor
from general_tools.file_utils import unzip, add_contents_to_zip
[docs]class TestPreprocessor(unittest.TestCase):
resources_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'resources')
[docs] def setUp(self):
"""Runs before each test."""
self.out_dir = ''
self.temp_dir = ""
[docs] def tearDown(self):
"""Runs after each test."""
# delete temp files
if os.path.isdir(self.out_dir):
shutil.rmtree(self.out_dir, ignore_errors=True)
if os.path.isdir(self.temp_dir):
shutil.rmtree(self.temp_dir, ignore_errors=True)
[docs] def test_TsObsMarkdownPreprocessorComplete(self):
#given
file_name = 'raw_sources/aab_obs_text_obs.zip'
repo_name = 'aab_obs_text_obs'
manifest, repo_dir, self.temp_dir = self.extractObsFiles(file_name, repo_name)
# when
folder = self.runTsObsMarkdownPreprocessor(manifest, repo_dir)
#then
self.verifyTransform(folder)
[docs] def test_TsObsMarkdownPreprocessorMissingChapter(self):
#given
file_name = 'raw_sources/aab_obs_text_obs-missing_chapter_01.zip'
repo_name = 'aab_obs_text_obs'
missing_chapters = [1]
manifest, repo_dir, self.temp_dir = self.extractObsFiles(file_name, repo_name)
# when
folder = self.runTsObsMarkdownPreprocessor(manifest, repo_dir)
#then
self.verifyTransform(folder, missing_chapters)
[docs] def runTsObsMarkdownPreprocessor(self, manifest, repo_dir):
self.out_dir = tempfile.mkdtemp(prefix='output_')
compiler = TsObsMarkdownPreprocessor(manifest, repo_dir, self.out_dir)
compiler.run()
return self.out_dir
# def test_PackageResource(self):
#
# #given
# resource = 'converted_projects'
# repo_name = 'aab_obs_text_obs-complete'
#
# # when
# zip_file = self.packageResource(resource, repo_name)
#
# #then
# print(zip_file)
@classmethod
[docs] def createZipFile(self, zip_filename, destination_folder, source_folder):
zip_filepath = os.path.join(destination_folder, zip_filename)
add_contents_to_zip(zip_filepath, source_folder)
return zip_filepath
[docs] def packageResource(self, resource, repo_name):
source_folder = os.path.join(TestPreprocessor.resources_dir, resource, repo_name)
self.temp_dir = tempfile.mkdtemp(prefix='repo_')
zip_filepath = TestPreprocessor.createZipFile(repo_name + ".zip", self.temp_dir, source_folder)
return zip_filepath
@classmethod