Ejemplo n.º 1
0
    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:])
Ejemplo n.º 2
0
    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:])