def _diamond_test(self, install="install", use_cmake=True, cmake_targets=False): if not use_cmake and platform.system() == "SunOS": return # If is using sun-cc the gcc generator doesn't work self._export_upload("Hello0", "0.1", use_cmake=use_cmake, cmake_targets=cmake_targets) self._export_upload("Hello1", "0.1", ["Hello0/0.1@lasote/stable"], use_cmake=use_cmake, cmake_targets=cmake_targets) self._export_upload("Hello2", "0.1", ["Hello0/0.1@lasote/stable"], use_cmake=use_cmake, cmake_targets=cmake_targets) self._export_upload( "Hello3", "0.1", ["Hello1/0.1@lasote/stable", "Hello2/0.1@lasote/stable"], use_cmake=use_cmake, cmake_targets=cmake_targets) client = TestClient(servers=self.servers, users={"default": [("lasote", "mypass")]}, path_with_spaces=use_cmake) files3 = cpp_hello_conan_files("Hello4", "0.1", ["Hello3/0.1@lasote/stable"], use_cmake=use_cmake, cmake_targets=cmake_targets) # Add some stuff to base project conanfile to test further the individual # flags in build_info (txt, cmake) files content = files3[CONANFILE] content = content.replace("generators =", 'generators = "txt",') content = content.replace( "def build(self):", "def build(self):\n" " self.output.info('INCLUDE %s' " "% self.deps_cpp_info['Hello0'].include_paths)") files3[CONANFILE] = content client.save(files3) client.run("%s . --build missing" % install) if use_cmake: if cmake_targets: self.assertIn("Conan: Using cmake targets configuration", client.user_io.out) self.assertNotIn("Conan: Using cmake global configuration", client.user_io.out) else: self.assertIn("Conan: Using cmake global configuration", client.user_io.out) self.assertNotIn("Conan: Using cmake targets configuration", client.user_io.out) client.run("build .") self._check_individual_deps(client) command = os.sep.join([".", "bin", "say_hello"]) client.runner(command, cwd=client.current_folder) self.assertEqual([ 'Hello Hello4', 'Hello Hello3', 'Hello Hello1', 'Hello Hello0', 'Hello Hello2', 'Hello Hello0' ], str(client.user_io.out).splitlines()[-6:]) files3 = cpp_hello_conan_files("Hello4", "0.1", ["Hello3/0.1@lasote/stable"], language=1, use_cmake=use_cmake, cmake_targets=cmake_targets) files3[CONANFILE] = files3[CONANFILE].replace("generators =", 'generators = "txt",') wait_until_removed(client.current_folder) client.save(files3) client.run("%s . --build missing" % install) client.run("build .") client.runner(command, cwd=client.current_folder) self.assertEqual([ 'Hola Hello4', 'Hola Hello3', 'Hola Hello1', 'Hola Hello0', 'Hola Hello2', 'Hola Hello0' ], str(client.user_io.out).splitlines()[-6:]) # Try to upload and reuse the binaries client.run("upload Hello3/0.1@lasote/stable --all") self.assertEqual(str(client.user_io.out).count("Uploading package"), 2) client.run("upload Hello1/0.1@lasote/stable --all") self.assertEqual(str(client.user_io.out).count("Uploading package"), 2) client.run("upload Hello2/0.1@lasote/stable --all") self.assertEqual(str(client.user_io.out).count("Uploading package"), 2) client.run("upload Hello0/0.1@lasote/stable --all") self.assertEqual(str(client.user_io.out).count("Uploading package"), 2) client2 = TestClient(servers=self.servers, users={"default": [("lasote", "mypass")]}, path_with_spaces=use_cmake) files3 = cpp_hello_conan_files("Hello4", "0.1", ["Hello3/0.1@lasote/stable"], use_cmake=use_cmake, cmake_targets=cmake_targets) files3[CONANFILE] = files3[CONANFILE].replace("generators =", 'generators = "txt",') client2.save(files3) client2.run("%s . --build missing" % install) client2.run("build .") self.assertNotIn("libhello0.a", client2.user_io.out) self.assertNotIn("libhello1.a", client2.user_io.out) self.assertNotIn("libhello2.a", client2.user_io.out) self.assertNotIn("libhello3.a", client2.user_io.out) client2.runner(command, cwd=client2.current_folder) self.assertEqual([ 'Hello Hello4', 'Hello Hello3', 'Hello Hello1', 'Hello Hello0', 'Hello Hello2', 'Hello Hello0' ], str(client2.user_io.out).splitlines()[-6:]) files3 = cpp_hello_conan_files("Hello4", "0.1", ["Hello3/0.1@lasote/stable"], language=1, use_cmake=use_cmake, cmake_targets=cmake_targets) files3[CONANFILE] = files3[CONANFILE].replace("generators =", 'generators = "txt",') wait_until_removed(client2.current_folder) client2.save(files3) client2.run("%s . --build missing" % install) client2.run("build .") self.assertNotIn("libhello0.a", client2.user_io.out) self.assertNotIn("libhello1.a", client2.user_io.out) self.assertNotIn("libhello2.a", client2.user_io.out) self.assertNotIn("libhello3.a", client2.user_io.out) client2.runner(command, cwd=client2.current_folder) self.assertEqual([ 'Hola Hello4', 'Hola Hello3', 'Hola Hello1', 'Hola Hello0', 'Hola Hello2', 'Hola Hello0' ], str(client2.user_io.out).splitlines()[-6:])
def _diamond_test(self, install="install", use_cmake=True, cmake_targets=False): self._export_upload("Hello0", "0.1", use_cmake=use_cmake, cmake_targets=cmake_targets) self._export_upload("Hello1", "0.1", ["Hello0/0.1@lasote/stable"], use_cmake=use_cmake, cmake_targets=cmake_targets) self._export_upload("Hello2", "0.1", ["Hello0/0.1@lasote/stable"], use_cmake=use_cmake, cmake_targets=cmake_targets) self._export_upload("Hello3", "0.1", ["Hello1/0.1@lasote/stable", "Hello2/0.1@lasote/stable"], use_cmake=use_cmake, cmake_targets=cmake_targets) client = TestClient(servers=self.servers, users={"default": [("lasote", "mypass")]}) files3 = cpp_hello_conan_files("Hello4", "0.1", ["Hello3/0.1@lasote/stable"], use_cmake=use_cmake, cmake_targets=cmake_targets) # Add some stuff to base project conanfile to test further the individual # flags in build_info (txt, cmake) files content = files3[CONANFILE] content = content.replace("generators =", 'generators = "txt",') content = content.replace("def build(self):", "def build(self):\n" " self.output.info('INCLUDE %s' " "% self.deps_cpp_info['Hello0'].include_paths)") files3[CONANFILE] = content client.save(files3) client.run("%s . --build missing" % install) if use_cmake: if cmake_targets: self.assertIn("Conan: Using cmake targets configuration", client.user_io.out) self.assertNotIn("Conan: Using cmake global configuration", client.user_io.out) else: self.assertIn("Conan: Using cmake global configuration", client.user_io.out) self.assertNotIn("Conan: Using cmake targets configuration", client.user_io.out) client.run("build .") self._check_individual_deps(client) command = os.sep.join([".", "bin", "say_hello"]) client.runner(command, cwd=client.current_folder) self.assertEqual(['Hello Hello4', 'Hello Hello3', 'Hello Hello1', 'Hello Hello0', 'Hello Hello2', 'Hello Hello0'], str(client.user_io.out).splitlines()[-6:]) files3 = cpp_hello_conan_files("Hello4", "0.1", ["Hello3/0.1@lasote/stable"], language=1, use_cmake=use_cmake, cmake_targets=cmake_targets) files3[CONANFILE] = files3[CONANFILE].replace("generators =", 'generators = "txt",') wait_until_removed(client.current_folder) client.save(files3) client.run("%s . --build missing" % install) client.run("build .") client.runner(command, cwd=client.current_folder) self.assertEqual(['Hola Hello4', 'Hola Hello3', 'Hola Hello1', 'Hola Hello0', 'Hola Hello2', 'Hola Hello0'], str(client.user_io.out).splitlines()[-6:]) # Try to upload and reuse the binaries client.run("upload Hello3/0.1@lasote/stable --all") self.assertEqual(str(client.user_io.out).count("Uploading package"), 2) client.run("upload Hello1/0.1@lasote/stable --all") self.assertEqual(str(client.user_io.out).count("Uploading package"), 2) client.run("upload Hello2/0.1@lasote/stable --all") self.assertEqual(str(client.user_io.out).count("Uploading package"), 2) client.run("upload Hello0/0.1@lasote/stable --all") self.assertEqual(str(client.user_io.out).count("Uploading package"), 2) client2 = TestClient(servers=self.servers, users={"default": [("lasote", "mypass")]}) files3 = cpp_hello_conan_files("Hello4", "0.1", ["Hello3/0.1@lasote/stable"], use_cmake=use_cmake, cmake_targets=cmake_targets) files3[CONANFILE] = files3[CONANFILE].replace("generators =", 'generators = "txt",') client2.save(files3) client2.run("%s . --build missing" % install) client2.run("build .") self.assertNotIn("libhello0.a", client2.user_io.out) self.assertNotIn("libhello1.a", client2.user_io.out) self.assertNotIn("libhello2.a", client2.user_io.out) self.assertNotIn("libhello3.a", client2.user_io.out) client2.runner(command, cwd=client2.current_folder) self.assertEqual(['Hello Hello4', 'Hello Hello3', 'Hello Hello1', 'Hello Hello0', 'Hello Hello2', 'Hello Hello0'], str(client2.user_io.out).splitlines()[-6:]) files3 = cpp_hello_conan_files("Hello4", "0.1", ["Hello3/0.1@lasote/stable"], language=1, use_cmake=use_cmake, cmake_targets=cmake_targets) files3[CONANFILE] = files3[CONANFILE].replace("generators =", 'generators = "txt",') wait_until_removed(client2.current_folder) client2.save(files3) client2.run("%s . --build missing" % install) client2.run("build .") self.assertNotIn("libhello0.a", client2.user_io.out) self.assertNotIn("libhello1.a", client2.user_io.out) self.assertNotIn("libhello2.a", client2.user_io.out) self.assertNotIn("libhello3.a", client2.user_io.out) client2.runner(command, cwd=client2.current_folder) self.assertEqual(['Hola Hello4', 'Hola Hello3', 'Hola Hello1', 'Hola Hello0', 'Hola Hello2', 'Hola Hello0'], str(client2.user_io.out).splitlines()[-6:])