|
| 1 | +import os |
| 2 | +import unittest |
| 3 | + |
| 4 | +from coala_quickstart.info_extractors.RequirementsInfoExtractor import ( |
| 5 | + RequirementsInfoExtractor) |
| 6 | +from coala_quickstart.info_extraction.Information import ( |
| 7 | + ProjectDependencyInfo, VersionInfo) |
| 8 | +from tests.TestUtilities import generate_files |
| 9 | + |
| 10 | + |
| 11 | +test_file = """ |
| 12 | +# This is the file to test requirements extractor. |
| 13 | +# It should not parse this line. |
| 14 | +Babel<=2.3.4 |
| 15 | +Flask==0.11.1 # Everything after # must be ignored. |
| 16 | +Django>=1.5 # This is a comment. |
| 17 | +Jinja~2.9.6 |
| 18 | +# Neither this. |
| 19 | +""" |
| 20 | + |
| 21 | + |
| 22 | +class RequirementsInfoExtractorTest(unittest.TestCase): |
| 23 | + def setUp(self): |
| 24 | + self.current_dir = os.getcwd() |
| 25 | + |
| 26 | + def test_extracted_information(self): |
| 27 | + |
| 28 | + with generate_files( |
| 29 | + ['requirements'], |
| 30 | + [test_file], |
| 31 | + self.current_dir) as gen_file: |
| 32 | + |
| 33 | + self.uut = RequirementsInfoExtractor( |
| 34 | + ['requirements'], |
| 35 | + self.current_dir) |
| 36 | + extracted_info = self.uut.extract_information() |
| 37 | + extracted_info = extracted_info[ |
| 38 | + os.path.normcase('requirements') |
| 39 | + ] |
| 40 | + |
| 41 | + information_types = extracted_info.keys() |
| 42 | + self.assertIn("ProjectDependencyInfo", information_types) |
| 43 | + dep_info = extracted_info['ProjectDependencyInfo'] |
| 44 | + self.assertEqual(len(dep_info), 4) |
| 45 | + |
| 46 | + requirements_list = [('Babel', '<=2.3.4'), |
| 47 | + ('Flask', '==0.11.1'), |
| 48 | + ('Django', '>=1.5'), |
| 49 | + ('Jinja', '~2.9.6'), ] |
| 50 | + |
| 51 | + deps = [(dep.value, dep.version.value) for dep in dep_info] |
| 52 | + self.assertNotIn(('ignore_this', '<=2.4'), deps) |
| 53 | + |
| 54 | + for requirement in requirements_list: |
| 55 | + self.assertIn(requirement, deps) |
0 commit comments