|
20 | 20 | from opentelemetry.instrumentation.dependencies import ( |
21 | 21 | DependencyConflict, |
22 | 22 | get_dependency_conflicts, |
| 23 | + get_dist_dependency_conflicts, |
23 | 24 | ) |
24 | 25 | from opentelemetry.test.test_base import TestBase |
| 26 | +from opentelemetry.util._importlib_metadata import Distribution |
25 | 27 |
|
26 | 28 |
|
27 | 29 | class TestDependencyConflicts(TestBase): |
@@ -62,3 +64,41 @@ def test_get_dependency_conflicts_mismatched_version(self): |
62 | 64 | str(conflict), |
63 | 65 | f'DependencyConflict: requested: "pytest == 5000" but found: "pytest {pytest.__version__}"', |
64 | 66 | ) |
| 67 | + |
| 68 | + def test_get_dist_dependency_conflicts(self): |
| 69 | + class MockDistribution(Distribution): |
| 70 | + def locate_file(self, path): |
| 71 | + pass |
| 72 | + |
| 73 | + def read_text(self, filename): |
| 74 | + pass |
| 75 | + |
| 76 | + @property |
| 77 | + def requires(self): |
| 78 | + return ['test-pkg ~= 1.0; extra == "instruments"'] |
| 79 | + |
| 80 | + dist = MockDistribution() |
| 81 | + |
| 82 | + conflict = get_dist_dependency_conflicts(dist) |
| 83 | + self.assertTrue(conflict is not None) |
| 84 | + self.assertTrue(isinstance(conflict, DependencyConflict)) |
| 85 | + self.assertEqual( |
| 86 | + str(conflict), |
| 87 | + 'DependencyConflict: requested: "test-pkg~=1.0; extra == "instruments"" but found: "None"', |
| 88 | + ) |
| 89 | + |
| 90 | + def test_get_dist_dependency_conflicts_requires_none(self): |
| 91 | + class MockDistribution(Distribution): |
| 92 | + def locate_file(self, path): |
| 93 | + pass |
| 94 | + |
| 95 | + def read_text(self, filename): |
| 96 | + pass |
| 97 | + |
| 98 | + @property |
| 99 | + def requires(self): |
| 100 | + return None |
| 101 | + |
| 102 | + dist = MockDistribution() |
| 103 | + conflict = get_dist_dependency_conflicts(dist) |
| 104 | + self.assertTrue(conflict is None) |
0 commit comments