| """ |
| Copyright © 2024 Google, Inc. |
| |
| Permission is hereby granted, free of charge, to any person obtaining a |
| copy of this software and associated documentation files (the "Software"), |
| to deal in the Software without restriction, including without limitation |
| the rights to use, copy, modify, merge, publish, distribute, sublicense, |
| and/or sell copies of the Software, and to permit persons to whom the |
| Software is furnished to do so, subject to the following conditions: |
| |
| The above copyright notice and this permission notice (including the next |
| paragraph) shall be included in all copies or substantial portions of the |
| Software. |
| |
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
| THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| SOFTWARE. |
| """ |
| |
| import unittest |
| from pathlib import Path |
| |
| import meson_to_hermetic.meson_impl as impl |
| |
| abs_toml_path = Path(__file__).parent.resolve() / 'test_toml_files' |
| |
| |
| class TestConfigParsing(unittest.TestCase): |
| """ |
| Contains methods that directly parse project config files |
| I.E. *.toml files |
| """ |
| |
| def test_load_dependencies(self): |
| expected = { |
| 'test_dep': { |
| 'test_target': 1 |
| }, |
| 'test_dep_two': { |
| 'test_target': 1 |
| }, |
| } |
| path = str(abs_toml_path / 'load_dependencies.toml') |
| impl.load_dependencies(path) |
| self.assertEqual(impl.external_dep, expected) |
| |
| def test_empty_dependencies(self): |
| expected = {} |
| path = str(abs_toml_path / 'empty_dependencies.toml') |
| impl.load_dependencies(path) |
| self.assertEqual(impl.external_dep, expected) |
| |
| |
| class TestMesonAPI(unittest.TestCase): |
| def test_dependency(self): |
| path = str(abs_toml_path / 'load_dependencies.toml') |
| # { |
| # 'test_dep': { |
| # 'test_target': 1 |
| # }, |
| # 'test_dep_two': { |
| # 'test_target': 1 |
| # }, |
| # } |
| impl.load_dependencies(path) |
| |
| dep = impl.dependency('test_dep') |
| expected = impl.Dependency( |
| 'test_dep', |
| targets=[ |
| impl.DependencyTarget('test_target', impl.DependencyTargetType.SHARED_LIBRARY) |
| ], |
| version='', |
| found=True, |
| ) |
| |
| self.assertEqual( |
| dep.name, |
| expected.name |
| ) |
| self.assertEqual( |
| dep.found(), |
| expected.found() |
| ) |
| self.assertEqual( |
| len(dep.targets), |
| len(expected.targets), |
| ) |
| for index, target in enumerate(dep.targets): |
| expected_target = expected.targets[index] |
| self.assertEqual( |
| target.target_name, |
| expected_target.target_name, |
| ) |
| self.assertEqual( |
| target.target_type, |
| expected_target.target_type, |
| ) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |