17db96d56Sopenharmony_ci"""Tests for the pdeps script in the Tools directory."""
27db96d56Sopenharmony_ci
37db96d56Sopenharmony_ciimport os
47db96d56Sopenharmony_ciimport unittest
57db96d56Sopenharmony_ciimport tempfile
67db96d56Sopenharmony_ci
77db96d56Sopenharmony_cifrom test.test_tools import skip_if_missing, import_tool
87db96d56Sopenharmony_ci
97db96d56Sopenharmony_ciskip_if_missing()
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_ci
127db96d56Sopenharmony_ciclass PdepsTests(unittest.TestCase):
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_ci    @classmethod
157db96d56Sopenharmony_ci    def setUpClass(self):
167db96d56Sopenharmony_ci        self.pdeps = import_tool('pdeps')
177db96d56Sopenharmony_ci
187db96d56Sopenharmony_ci    def test_process_errors(self):
197db96d56Sopenharmony_ci        # Issue #14492: m_import.match(line) can be None.
207db96d56Sopenharmony_ci        with tempfile.TemporaryDirectory() as tmpdir:
217db96d56Sopenharmony_ci            fn = os.path.join(tmpdir, 'foo')
227db96d56Sopenharmony_ci            with open(fn, 'w', encoding='utf-8') as stream:
237db96d56Sopenharmony_ci                stream.write("#!/this/will/fail")
247db96d56Sopenharmony_ci            self.pdeps.process(fn, {})
257db96d56Sopenharmony_ci
267db96d56Sopenharmony_ci    def test_inverse_attribute_error(self):
277db96d56Sopenharmony_ci        # Issue #14492: this used to fail with an AttributeError.
287db96d56Sopenharmony_ci        self.pdeps.inverse({'a': []})
297db96d56Sopenharmony_ci
307db96d56Sopenharmony_ci
317db96d56Sopenharmony_ciif __name__ == '__main__':
327db96d56Sopenharmony_ci    unittest.main()
33