|
| 1 | +import pytest |
| 2 | + |
1 | 3 | from conan.test.assets.genconanfile import GenConanfile
|
2 | 4 | from conan.test.utils.tools import TestClient
|
3 | 5 |
|
@@ -68,3 +70,33 @@ def _game_conanfile(version, reverse=False):
|
68 | 70 | c.run("install --requires=engine/1.0 --requires=ai/1.0", assert_error=True)
|
69 | 71 | assert "Conflict between math/1.0.1 and math/1.0 in the graph"
|
70 | 72 | assert "Conflict originates from ai/1.0"
|
| 73 | + |
| 74 | + |
| 75 | +@pytest.mark.parametrize("version_range", [True, False]) |
| 76 | +def test_conflict_user(version_range): |
| 77 | + # https://github.com/conan-io/conan/issues/17875 |
| 78 | + v = "[^1.0]" if version_range else "1.0" |
| 79 | + c = TestClient(light=True) |
| 80 | + c.save({"dep/conanfile.py": GenConanfile("dep", "1.0"), |
| 81 | + "pkg/conanfile.py": GenConanfile("pkg", "1.0").with_requires(f"dep/{v}@user1"), |
| 82 | + "app/conanfile.py": GenConanfile("app", "1.0").with_requires(f"pkg/{v}@user1", |
| 83 | + f"dep/{v}@user2")}) |
| 84 | + c.run("create dep --user=user1") |
| 85 | + c.run("create dep --user=user2") |
| 86 | + c.run("create pkg --user=user1") |
| 87 | + c.run("install app", assert_error=True) |
| 88 | + assert f"Version conflict: Conflict between dep/{v}@user1 and dep/{v}@user2" in c.out |
| 89 | + |
| 90 | + |
| 91 | +def test_conflict_user_order(): |
| 92 | + # https://github.com/conan-io/conan/issues/17875 |
| 93 | + c = TestClient(light=True) |
| 94 | + c.save({"dep/conanfile.py": GenConanfile("dep", "1.0"), |
| 95 | + "pkg/conanfile.py": GenConanfile("pkg", "1.0").with_requires("dep/1.0@user1"), |
| 96 | + "app/conanfile.py": GenConanfile("app", "1.0").with_requires("pkg/1.0@user1", |
| 97 | + "dep/[>=1.0]@user2")}) |
| 98 | + c.run("create dep --user=user1") |
| 99 | + c.run("create dep --user=user2") |
| 100 | + c.run("create pkg --user=user1") |
| 101 | + c.run("install app", assert_error=True) |
| 102 | + assert "ERROR: Version conflict: Conflict between dep/1.0@user1 and dep/[>=1.0]@user2" in c.out |
0 commit comments