Esempio n. 1
0
    def test_install(self):
        tracer = ActionRecorder()
        tracer.recipe_fetched_from_cache(self.ref1)
        tracer.package_downloaded(self.pref1, "http://drl.com")
        tracer.recipe_downloaded(self.ref2, "http://drl.com")
        tracer.package_install_error(self.pref2,
                                     INSTALL_ERROR_MISSING,
                                     "no package found",
                                     remote_name="https://drl.com")

        tracer.recipe_fetched_from_cache(self.ref3)
        tracer.package_built(self.pref3)
        tracer.add_recipe_being_developed(self.ref1)

        install_info = tracer.get_info(False)
        self.assertTrue(install_info["error"])

        first_installed = install_info["installed"][0]

        self.assertNotIn("cache", first_installed["recipe"])
        self.assertFalse(first_installed["recipe"]["dependency"])
        self.assertFalse(first_installed["recipe"]["downloaded"])
        self.assertIsNone(first_installed["recipe"]["error"])
        self.assertEqual(str(first_installed["recipe"]["id"]),
                         "lib1/1.0@conan/stable")

        self.assertNotIn("cache", first_installed["recipe"])
        self.assertTrue(first_installed["packages"][0]["downloaded"])
        self.assertIsNone(first_installed["packages"][0]["error"])
        self.assertEqual(first_installed["packages"][0]["remote"],
                         'http://drl.com')
        self.assertEqual(str(first_installed["packages"][0]["id"]), "1")

        second_installed = install_info["installed"][1]
        self.assertNotIn("cache", first_installed["recipe"])
        self.assertTrue(second_installed["recipe"]["dependency"])
        self.assertTrue(second_installed["recipe"]["downloaded"])
        self.assertIsNone(second_installed["recipe"]["error"])
        self.assertEqual(str(second_installed["recipe"]["id"]),
                         "lib2/1.0@conan/stable")

        self.assertNotIn("cache", first_installed["packages"][0])
        self.assertEqual(
            second_installed["packages"][0]["error"], {
                'type': 'missing',
                'description': 'no package found',
                'remote': 'https://drl.com'
            })
        self.assertEqual(second_installed["packages"][0]["remote"],
                         'https://drl.com')
        self.assertEqual(str(second_installed["packages"][0]["id"]), "2")

        third_installed = install_info["installed"][2]
        self.assertTrue(third_installed["recipe"]["dependency"])
        self.assertNotIn("cache", first_installed["packages"][0])
        self.assertFalse(third_installed["packages"][0]["error"])
        self.assertTrue(third_installed["packages"][0]["built"])
        self.assertIsNone(third_installed["packages"][0]["remote"])
        self.assertEqual(str(third_installed["packages"][0]["id"]), "3")
Esempio n. 2
0
 def incomplete_process_test(self):
     tracer = ActionRecorder()
     tracer.recipe_install_error(self.ref1, INSTALL_ERROR_NETWORK, "SSL wtf", "http://drl.com")
     tracer.add_recipe_being_developed(self.ref1)
     install_info = tracer.get_info()
     self.assertTrue(install_info["error"])
     self.assertEquals(install_info["installed"][0]["packages"], [])
     self.assertEquals(install_info["installed"][0]["recipe"]["dependency"], False)
Esempio n. 3
0
 def incomplete_process_test(self):
     tracer = ActionRecorder()
     tracer.recipe_install_error(self.ref1, INSTALL_ERROR_NETWORK, "SSL wtf", "http://drl.com")
     tracer.add_recipe_being_developed(self.ref1)
     install_info = tracer.get_info()
     self.assertTrue(install_info["error"])
     self.assertEquals(install_info["installed"][0]["packages"], [])
     self.assertEquals(install_info["installed"][0]["recipe"]["dependency"], False)
Esempio n. 4
0
    def create(self, conanfile_path, name=None, version=None, user=None, channel=None,
               profile_name=None, settings=None,
               options=None, env=None, test_folder=None, not_export=False,
               build_modes=None,
               keep_source=False, keep_build=False, verify=None,
               manifests=None, manifests_interactive=None,
               remote_name=None, update=False, cwd=None, test_build_folder=None):
        """
        API method to create a conan package

        :param test_folder: default None   - looks for default 'test' or 'test_package' folder),
                                    string - test_folder path
                                    False  - disabling tests
        """
        settings = settings or []
        options = options or []
        env = env or []

        try:
            cwd = cwd or os.getcwd()
            recorder = ActionRecorder()
            conanfile_path = _get_conanfile_path(conanfile_path, cwd, py=True)

            reference, conanfile = self._loader.load_export(conanfile_path, name, version, user,
                                                            channel)

            # Make sure keep_source is set for keep_build
            keep_source = keep_source or keep_build
            # Forcing an export!
            if not not_export:
                cmd_export(conanfile_path, conanfile, reference, keep_source, self._user_io.out,
                           self._client_cache, self._plugin_manager)

            if build_modes is None:  # Not specified, force build the tested library
                build_modes = [conanfile.name]

            manifests = _parse_manifests_arguments(verify, manifests, manifests_interactive, cwd)
            manifest_folder, manifest_interactive, manifest_verify = manifests
            profile = profile_from_args(profile_name, settings, options, env,
                                        cwd, self._client_cache)

            manager = self._init_manager(recorder)
            recorder.add_recipe_being_developed(reference)

            create(reference, manager, self._user_io, profile, remote_name, update, build_modes,
                   manifest_folder, manifest_verify, manifest_interactive, keep_build,
                   test_build_folder, test_folder, conanfile_path)

            return recorder.get_info()

        except ConanException as exc:
            recorder.error = True
            exc.info = recorder.get_info()
            raise
Esempio n. 5
0
    def test_install(self):
        tracer = ActionRecorder()
        tracer.recipe_fetched_from_cache(self.ref1)
        tracer.package_downloaded(self.ref_p1, "http://drl.com")
        tracer.recipe_downloaded(self.ref2, "http://drl.com")
        tracer.package_install_error(self.ref_p2, INSTALL_ERROR_MISSING, "no package found",
                                     remote="https://drl.com")

        tracer.recipe_fetched_from_cache(self.ref3)
        tracer.package_built(self.ref_p3)
        tracer.add_recipe_being_developed(self.ref1)

        install_info = tracer.get_info()
        self.assertTrue(install_info["error"])

        first_installed = install_info["installed"][0]

        self.assertTrue(first_installed["recipe"]["cache"])
        self.assertFalse(first_installed["recipe"]["dependency"])
        self.assertFalse(first_installed["recipe"]["downloaded"])
        self.assertIsNone(first_installed["recipe"]["error"])
        self.assertEquals(str(first_installed["recipe"]["id"]), "lib1/1.0@conan/stable")

        self.assertFalse(first_installed["packages"][0]["cache"])
        self.assertTrue(first_installed["packages"][0]["downloaded"])
        self.assertIsNone(first_installed["packages"][0]["error"])
        self.assertEquals(first_installed["packages"][0]["remote"], 'http://drl.com')
        self.assertEquals(str(first_installed["packages"][0]["id"]), "1")

        second_installed = install_info["installed"][1]
        self.assertFalse(second_installed["recipe"]["cache"])
        self.assertTrue(second_installed["recipe"]["dependency"])
        self.assertTrue(second_installed["recipe"]["downloaded"])
        self.assertIsNone(second_installed["recipe"]["error"])
        self.assertEquals(str(second_installed["recipe"]["id"]), "lib2/1.0@conan/stable")

        self.assertFalse(second_installed["packages"][0]["cache"])
        self.assertEquals(second_installed["packages"][0]["error"],
                          {'type': 'missing', 'description': 'no package found',
                           'remote': 'https://drl.com'})
        self.assertEquals(second_installed["packages"][0]["remote"], 'https://drl.com')
        self.assertEquals(str(second_installed["packages"][0]["id"]), "2")

        third_installed = install_info["installed"][2]
        self.assertTrue(third_installed["recipe"]["dependency"])
        self.assertFalse(third_installed["packages"][0]["cache"])
        self.assertFalse(third_installed["packages"][0]["error"])
        self.assertTrue(third_installed["packages"][0]["built"])
        self.assertIsNone(third_installed["packages"][0]["remote"])
        self.assertEquals(str(third_installed["packages"][0]["id"]), "3")