def update_pkg_test(self): server = TestServer() client = TestClient(servers={"default": server}, users={"default": [("lasote", "mypass")]}) conanfile = """from conans import ConanFile class HelloReuseConan(ConanFile): def package_info(self): self.output.info("PACKAGE_INFO {}") """ client.save({"conanfile.py": conanfile.format("1.1")}) client.run("create . Pkg/1.1@lasote/testing") client.save({"conanfile.py": conanfile.format("1.2")}) client.run("create . Pkg/1.2@lasote/testing") client.run("upload Pkg* -r=default --all --confirm") consumer = """from conans import ConanFile class HelloReuseConan(ConanFile): requires = "Pkg/[~1]@lasote/testing" """ client.save({"conanfile.py": consumer}) client.run("install .") # Resolves to local package self.assertIn("Pkg/1.2@lasote/testing: Already installed!", client.out) self.assertIn("Pkg/1.2@lasote/testing: PACKAGE_INFO 1.2", client.out) # modify remote 1.2 client2 = TestClient(servers={"default": server}, users={"default": [("lasote", "mypass")]}) client2.save({"conanfile.py": conanfile.format("*1.2*")}) client2.run("create . Pkg/1.2@lasote/testing") # Make sure timestamp increases, in some machines in testing, it can fail due to same timestamp inc_recipe_manifest_timestamp(client2.client_cache, "Pkg/1.2@lasote/testing", 1) inc_package_manifest_timestamp( client2.client_cache, "Pkg/1.2@lasote/testing:5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9", 1) client2.run("upload Pkg* -r=default --all --confirm") client.run("install .") # Resolves to local package self.assertIn("Pkg/1.2@lasote/testing: Already installed!", client.out) self.assertIn("Pkg/1.2@lasote/testing: PACKAGE_INFO 1.2", client.out) client.run("install . --update") # Resolves to local package self.assertIn("Pkg/1.2@lasote/testing: Package installed", client.out) self.assertNotIn("Pkg/1.2@lasote/testing: PACKAGE_INFO 1.2", client.out) self.assertIn("Pkg/1.2@lasote/testing: PACKAGE_INFO *1.2*", client.out)
def test_recipe_updates(self): servers = OrderedDict() servers["server1"] = TestServer() servers["server2"] = TestServer() servers["server3"] = TestServer() client = TestClient(servers=servers, users={"server1": [("lasote", "mypass")], "server2": [("lasote", "mypass")], "server3": [("lasote", "mypass")]}) conanfile = """from conans import ConanFile from conans.tools import load class Pkg(ConanFile): exports_sources = "*.data" def package(self): self.copy("*") def package_info(self): self.output.info("%s") self.output.info("DATA: {}".format(load("data.data"))) """ for server in (1, 2, 3): server_name = "Server%s!" % server client.save({"conanfile.py": conanfile % server_name, "data.data": "MyData%s" % server}) client.run("create . Pkg/0.1@lasote/testing") inc_recipe_manifest_timestamp(client.client_cache, "Pkg/0.1@lasote/testing", (server-1)*20) inc_package_manifest_timestamp(client.client_cache, "Pkg/0.1@lasote/testing:5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9", (server-1)*20) client.run("upload Pkg* -r=server%s --confirm --all" % server) # Fresh install from server1 client.run("remove * -f") client.run("install Pkg/0.1@lasote/testing -r=server1") self.assertIn("Pkg/0.1@lasote/testing: Server1!", client.out) self.assertIn("Pkg/0.1@lasote/testing: DATA: MyData1", client.out) self.assertIn("Pkg/0.1@lasote/testing from 'server1' - Downloaded", client.out) self.assertIn("Pkg/0.1@lasote/testing:5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 - Download", client.out) # install without updates client.run("install Pkg/0.1@lasote/testing -r=server2") self.assertIn("Pkg/0.1@lasote/testing from 'server1' - Cache", client.out) self.assertIn("Pkg/0.1@lasote/testing:5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 - Cache", client.out) self.assertIn("Pkg/0.1@lasote/testing: Server1!", client.out) self.assertIn("Pkg/0.1@lasote/testing: DATA: MyData1", client.out) # Update from server2 client.run("install Pkg/0.1@lasote/testing -r=server2 --update") self.assertIn("Pkg/0.1@lasote/testing from 'server2' - Updated", client.out) self.assertIn("Pkg/0.1@lasote/testing:5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 - Update", client.out) self.assertIn("Pkg/0.1@lasote/testing: Retrieving package 5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9" " from remote 'server2' ", client.out) self.assertIn("Pkg/0.1@lasote/testing: Server2!", client.out) self.assertIn("Pkg/0.1@lasote/testing: DATA: MyData2", client.out) client.run("remote list_ref") self.assertIn("Pkg/0.1@lasote/testing: server2", client.out) # Update from server3 client.run("install Pkg/0.1@lasote/testing -r=server3 --update") self.assertIn("Pkg/0.1@lasote/testing from 'server3' - Updated", client.out) self.assertIn("Pkg/0.1@lasote/testing:5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 - Update", client.out) self.assertIn("Pkg/0.1@lasote/testing: Retrieving package " "5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 from remote 'server3' ", client.out) self.assertIn("Pkg/0.1@lasote/testing: Server3!", client.out) client.run("remote list_ref") self.assertIn("Pkg/0.1@lasote/testing: server3", client.out)