mirror of
https://github.com/ditkrg/todo-to-issue-action.git
synced 2026-01-23 06:16:43 +00:00
test: add test to exercise main's process_diff()
Reads the diff file to generate a simulated filesystem, inserts the URL comments into these new files, and then parses the output to confirms that all of the issues that were expected to be created were created.
This commit is contained in:
parent
80b555cdce
commit
590a050199
59
tests/test_process_diff.py
Normal file
59
tests/test_process_diff.py
Normal file
@ -0,0 +1,59 @@
|
||||
import json
|
||||
import os
|
||||
import unittest
|
||||
import tempfile
|
||||
import subprocess
|
||||
import io
|
||||
|
||||
from TodoParser import TodoParser
|
||||
from main import process_diff
|
||||
|
||||
|
||||
class IssueUrlInsertionTest(unittest.TestCase):
|
||||
orig_cwd = None
|
||||
tempdir = None
|
||||
diff_file = None
|
||||
parser = None
|
||||
|
||||
def setUp(self):
|
||||
# get current working directory
|
||||
self.orig_cwd = os.getcwd()
|
||||
|
||||
# Create temporary directory to hold simulated filesystem.
|
||||
self.tempdir = tempfile.TemporaryDirectory()
|
||||
|
||||
# run patch against the diff file to generate the simulated filesystem
|
||||
subprocess.run(['patch', '-d', self.tempdir.name,
|
||||
'-i', f'{os.getcwd()}/tests/test_new.diff'],
|
||||
stdout=subprocess.DEVNULL,
|
||||
stderr=subprocess.DEVNULL,
|
||||
check=True)
|
||||
|
||||
self.diff_file = open('tests/test_new.diff', 'r')
|
||||
self.parser = TodoParser()
|
||||
with open('syntax.json', 'r') as syntax_json:
|
||||
self.parser.syntax_dict = json.load(syntax_json)
|
||||
|
||||
# change to the simulated filesystem directory
|
||||
os.chdir(self.tempdir.name)
|
||||
|
||||
# this test can take a while and, as far as TodoParser is concerned,
|
||||
# redundant with the tests of test_todo_parser, so enable the means
|
||||
# to skip it if desired
|
||||
@unittest.skipIf(os.getenv('SKIP_PROCESS_DIFF_TEST', 'false') == 'true',
|
||||
"Skipping because 'SKIP_PROCESS_DIFF_TEST' is 'true'")
|
||||
def test_url_insertion(self):
|
||||
# create object to hold output
|
||||
output = io.StringIO()
|
||||
# process the diffs
|
||||
process_diff(diff=self.diff_file, insert_issue_urls=True, parser=self.parser, output=output)
|
||||
# make sure the number of issue URL comments inserted is as expected
|
||||
self.assertEqual(output.getvalue().count('Issue created: #None @ N/A'), 82)
|
||||
|
||||
def tearDown(self):
|
||||
# return to original working directory to ensure we don't mess up other tests
|
||||
os.chdir(self.orig_cwd)
|
||||
|
||||
# explicitly cleanup to avoid warning being printed about implicit cleanup
|
||||
self.tempdir.cleanup()
|
||||
self.tempdir = None
|
||||
Loading…
Reference in New Issue
Block a user