Esempio n. 1
0
    def test_returns_on_failures(self):
        test_server = TestServer([("*/*@*/*", "*")], [("*/*@*/*", "*")])
        servers = {"default": test_server}

        class Response(object):
            ok = None
            status_code = None
            charset = None
            text = ""
            headers = {}

            def __init__(self, ok, status_code):
                self.ok = ok
                self.status_code = status_code

        class BuggyRequester(object):
            def __init__(self, *args, **kwargs):
                pass

            def get(self, *args, **kwargs):
                return Response(False, 404)

        client2 = TestClient(servers=servers, requester_class=BuggyRequester)
        conan_ref = ConanFileReference.loads("Hello/1.2.1@frodo/stable")
        registry = RemoteRegistry(client2.client_cache.registry, client2.out)
        installer = ConanProxy(client2.paths,
                               client2.user_io.out,
                               client2.remote_manager,
                               registry=registry)

        with self.assertRaises(NotFoundException):
            installer.get_recipe(conan_ref, False, False, None,
                                 ActionRecorder())

        class BuggyRequester2(BuggyRequester):
            def get(self, *args, **kwargs):
                return Response(False, 500)

        client2 = TestClient(servers=servers, requester_class=BuggyRequester2)
        registry = RemoteRegistry(client2.client_cache.registry, client2.out)
        installer = ConanProxy(client2.paths,
                               client2.user_io.out,
                               client2.remote_manager,
                               registry=registry)

        try:
            installer.get_recipe(conan_ref, False, False, None,
                                 ActionRecorder())
        except NotFoundException:
            self.assertFalse(True)  # Shouldn't capture here
        except ConanException:
            pass
Esempio n. 2
0
    def add_remove_update_test(self):
        f = os.path.join(temp_folder(), "aux_file")
        registry = RemoteRegistry(f, TestBufferConanOutput())

        # Add
        registry.add("local", "http://localhost:9300")
        self.assertEqual(registry.remotes,
                         [("conan.io", "https://server.conan.io"),
                          ("local", "http://localhost:9300")])
        # Add
        registry.add("new", "new_url")
        self.assertEqual(registry.remotes,
                         [("conan.io", "https://server.conan.io"),
                          ("local", "http://localhost:9300"),
                          ("new", "new_url")])
        with self.assertRaises(ConanException):
            registry.add("new", "new_url")
        # Update
        registry.update("new", "other_url")
        self.assertEqual(registry.remotes,
                         [("conan.io", "https://server.conan.io"),
                          ("local", "http://localhost:9300"),
                          ("new", "other_url")])
        with self.assertRaises(ConanException):
            registry.update("new2", "new_url")

        # Remove
        registry.remove("local")
        self.assertEqual(registry.remotes,
                         [("conan.io", "https://server.conan.io"),
                          ("new", "other_url")])
        with self.assertRaises(ConanException):
            registry.remove("new2")
Esempio n. 3
0
    def add_remove_update_test(self):
        f = os.path.join(temp_folder(), "aux_file")
        save(f, dump_registry(default_remotes, {}, {}))
        registry = RemoteRegistry(f, TestBufferConanOutput())

        # Add
        registry.remotes.add("local", "http://localhost:9300")
        self.assertEqual(registry.remotes.list, [("conan-center", "https://conan.bintray.com", True),
                                            ("local", "http://localhost:9300", True)])
        # Add
        registry.remotes.add("new", "new_url", False)
        self.assertEqual(registry.remotes.list, [("conan-center", "https://conan.bintray.com", True),
                                            ("local", "http://localhost:9300", True),
                                            ("new", "new_url", False)])
        with self.assertRaises(ConanException):
            registry.remotes.add("new", "new_url")
        # Update
        registry.remotes.update("new", "other_url")
        self.assertEqual(registry.remotes.list, [("conan-center", "https://conan.bintray.com", True),
                                            ("local", "http://localhost:9300", True),
                                            ("new", "other_url", True)])
        with self.assertRaises(ConanException):
            registry.remotes.update("new2", "new_url")

        registry.remotes.update("new", "other_url", False)
        self.assertEqual(registry.remotes.list, [("conan-center", "https://conan.bintray.com", True),
                                            ("local", "http://localhost:9300", True),
                                            ("new", "other_url", False)])

        # Remove
        registry.remotes.remove("local")
        self.assertEqual(registry.remotes.list, [("conan-center", "https://conan.bintray.com", True),
                                            ("new", "other_url", False)])
        with self.assertRaises(ConanException):
            registry.remotes.remove("new2")
Esempio n. 4
0
    def _install(self, references):
        self._output.info("Installing build requires: [%s]" %
                          ", ".join(str(r) for r in references))
        conanfile = self._loader.load_virtual(
            references, None, scope_options=False)  # No need current path

        # FIXME: Forced update=True, build_mode, Where to define it?
        update = False

        local_search = None if update else self._search_manager
        resolver = RequireResolver(self._output, local_search,
                                   self._remote_proxy)
        graph_builder = DepsGraphBuilder(self._remote_proxy, self._output,
                                         self._loader, resolver)
        deps_graph = graph_builder.load(conanfile)

        registry = RemoteRegistry(self._client_cache.registry, self._output)
        Printer(self._output).print_graph(deps_graph, registry)

        # Make sure we recursively do not propagate the "*" pattern
        build_requires = copy.copy(self)
        build_requires._build_requires = self._build_requires.copy()
        build_requires._build_requires.pop("*", None)
        build_requires._build_requires.pop("&!", None)

        installer = ConanInstaller(self._client_cache, self._output,
                                   self._remote_proxy, build_requires)
        installer.install(deps_graph, self._build_modes, self._current_path)
        self._output.info("Installed build requires: [%s]" %
                          ", ".join(str(r) for r in references))
        return deps_graph
Esempio n. 5
0
    def _get_graph(self, reference, current_path, remote, options, settings,
                   filename, update, check_updates, manifest_manager, scopes,
                   package_settings, env, package_env):

        loader = self._loader(current_path, settings, package_settings,
                              options, scopes, env, package_env)
        # Not check for updates for info command, it'll be checked when dep graph is built

        remote_proxy = ConanProxy(self._client_cache,
                                  self._user_io,
                                  self._remote_manager,
                                  remote,
                                  update=update,
                                  check_updates=check_updates,
                                  manifest_manager=manifest_manager)

        if isinstance(reference, ConanFileReference):
            project_reference = None
            conanfile = loader.load_virtual(reference, current_path)
            is_txt = True
        else:
            conanfile_path = reference
            project_reference = "PROJECT"
            output = ScopedOutput(project_reference, self._user_io.out)
            try:
                if filename and filename.endswith(".txt"):
                    raise NotFoundException("")
                conan_file_path = os.path.join(conanfile_path, filename
                                               or CONANFILE)
                conanfile = loader.load_conan(conan_file_path,
                                              output,
                                              consumer=True)
                is_txt = False
                if conanfile.name is not None and conanfile.version is not None:
                    project_reference = "%s/%s@" % (conanfile.name,
                                                    conanfile.version)
                    project_reference += "PROJECT"
            except NotFoundException:  # Load requirements.txt
                conan_path = os.path.join(conanfile_path, filename
                                          or CONANFILE_TXT)
                conanfile = loader.load_conan_txt(conan_path, output)
                is_txt = True
        # build deps graph and install it
        local_search = None if update else self._search_manager
        resolver = RequireResolver(self._user_io.out, local_search,
                                   remote_proxy)
        builder = DepsGraphBuilder(remote_proxy, self._user_io.out, loader,
                                   resolver)
        deps_graph = builder.load(None, conanfile)
        # These lines are so the conaninfo stores the correct complete info
        if is_txt:
            conanfile.info.settings = loader._settings.values
        conanfile.info.full_settings = loader._settings.values
        conanfile.info.scope = self._current_scopes
        conanfile.cpp_info = CppInfo(current_path)
        conanfile.env_info = EnvInfo(current_path)
        registry = RemoteRegistry(self._client_cache.registry,
                                  self._user_io.out)
        return (builder, deps_graph, project_reference, registry, conanfile,
                remote_proxy, loader)
Esempio n. 6
0
 def _check(self, install_path):
     settings_path = self.client.client_cache.settings_path
     self.assertEqual(load(settings_path).splitlines(), settings_yml.splitlines())
     registry_path = self.client.client_cache.registry
     registry = RemoteRegistry(registry_path, TestBufferConanOutput())
     self.assertEqual(registry.remotes,
                      [Remote("myrepo1", "https://myrepourl.net", False),
                       Remote("my-repo-2", "https://myrepo2.com", True),
                       ])
     self.assertEqual(registry.refs, {"MyPkg/0.1@user/channel": "my-repo-2"})
     self.assertEqual(sorted(os.listdir(self.client.client_cache.profiles_path)),
                      sorted(["default", "linux", "windows"]))
     self.assertEqual(load(os.path.join(self.client.client_cache.profiles_path, "linux")).splitlines(),
                      linux_profile.splitlines())
     self.assertEqual(load(os.path.join(self.client.client_cache.profiles_path, "windows")).splitlines(),
                      win_profile.splitlines())
     conan_conf = ConanClientConfigParser(self.client.client_cache.conan_conf_path)
     self.assertEqual(conan_conf.get_item("log.run_to_output"), "False")
     self.assertEqual(conan_conf.get_item("log.run_to_file"), "False")
     self.assertEqual(conan_conf.get_item("log.level"), "10")
     self.assertEqual(conan_conf.get_item("general.compression_level"), "6")
     self.assertEqual(conan_conf.get_item("general.sysrequires_sudo"), "True")
     self.assertEqual(conan_conf.get_item("general.cpu_count"), "1")
     self.assertEqual(conan_conf.get_item("general.config_install"), install_path)
     self.assertEqual(conan_conf.get_item("proxies.no_proxy"), "mylocalhost")
     self.assertEqual(conan_conf.get_item("proxies.https"), "None")
     self.assertEqual(conan_conf.get_item("proxies.http"), "http://*****:*****@10.10.1.10:3128/")
     self.assertEqual("#Custom pylint",
                      load(os.path.join(self.client.client_cache.conan_folder, "pylintrc")))
Esempio n. 7
0
    def __init__(self, base_folder=None, current_folder=None,
                 servers=None, users=None, client_version=CLIENT_VERSION,
                 min_server_compatible_version=MIN_SERVER_COMPATIBLE_VERSION):
        """
        storage_folder: Local storage path
        current_folder: Current execution folder
        servers: dict of {remote_name: TestServer}
        logins is a list of (user, password) for auto input in order
        if required==> [("lasote", "mypass"), ("other", "otherpass")]
        """
        self.users = users or {"default":
                               [(TESTING_REMOTE_PRIVATE_USER, TESTING_REMOTE_PRIVATE_PASS)]}
        self.servers = servers or {}

        self.client_version = Version(str(client_version))
        self.min_server_compatible_version = Version(str(min_server_compatible_version))

        self.base_folder = base_folder or temp_folder()
        # Define storage_folder, if not, it will be read from conf file & pointed to real user home
        self.storage_folder = os.path.join(self.base_folder, ".conan", "data")
        self.paths = ConanPaths(self.base_folder, self.storage_folder,
                                TestBufferConanOutput())
        self.default_settings(get_env("CONAN_COMPILER", "gcc"),
                              get_env("CONAN_COMPILER_VERSION", "4.8"),
                              get_env("CONAN_LIBCXX", "libstdc++"))

        self.init_dynamic_vars()

        save(self.paths.registry, "")
        registry = RemoteRegistry(self.paths.registry, TestBufferConanOutput())
        for name, server in self.servers.items():
            registry.add(name, server.fake_url)

        logger.debug("Client storage = %s" % self.storage_folder)
        self.current_folder = current_folder or temp_folder()
Esempio n. 8
0
    def search_packages(self, reference=None, remote=None, query=None, outdated=False):
        """ Return the single information saved in conan.vars about all the packages
            or the packages which match with a pattern

            Attributes:
                pattern = string to match packages
                remote = search on another origin to get packages info
                packages_pattern = String query with binary
                                   packages properties: "arch=x86 AND os=Windows"
        """
        if remote:
            remote = RemoteRegistry(self._client_cache.registry, self._user_io).remote(remote)
            packages_props = self._remote_manager.search_packages(remote, reference, query)
            ordered_packages = OrderedDict(sorted(packages_props.items()))
            manifest = self._remote_manager.get_conan_digest(reference, remote)
            recipe_hash = manifest.summary_hash
        else:
            searcher = DiskSearchManager(self._client_cache)
            packages_props = searcher.search_packages(reference, query)
            ordered_packages = OrderedDict(sorted(packages_props.items()))
            try:
                recipe_hash = self._client_cache.load_manifest(reference).summary_hash
            except IOError:  # It could not exist in local
                recipe_hash = None
        if outdated and recipe_hash:
            ordered_packages = filter_outdated(ordered_packages, recipe_hash)
        return ordered_packages, reference, recipe_hash, query
Esempio n. 9
0
    def retro_compatibility_test(self):
        f = os.path.join(temp_folder(), "aux_file")
        save(f, """conan.io https://server.conan.io
""")  # Without SSL parameter
        registry = RemoteRegistry(f, TestBufferConanOutput())
        self.assertEqual(registry.remotes,
                         [("conan.io", "https://server.conan.io", True)])
Esempio n. 10
0
 def info(self, deps_graph, graph_updates_info, only, remote, package_filter, show_paths, project_reference):
     registry = RemoteRegistry(self.client_cache.registry, self.user_io.out)
     Printer(self.user_io.out).print_info(deps_graph, project_reference,
                                          only, registry, graph_updates_info=graph_updates_info,
                                          remote=remote, node_times=self._read_dates(deps_graph),
                                          path_resolver=self.client_cache, package_filter=package_filter,
                                          show_paths=show_paths)
Esempio n. 11
0
    def insert_test(self):
        f = os.path.join(temp_folder(), "aux_file")
        save(f, """
{
 "remotes": [
  {
   "url": "https://server.conan.io", 
   "verify_ssl": true, 
   "name": "conan.io"
  }
 ], 
 "references": {}
}
""")
        registry = RemoteRegistry(f, TestBufferConanOutput())
        registry.remotes.add("repo1", "url1", True, insert=0)
        self.assertEqual(registry.remotes.list, [("repo1", "url1", True),
                                            ("conan.io", "https://server.conan.io", True)])
        registry.remotes.add("repo2", "url2", True, insert=1)
        self.assertEqual(registry.remotes.list, [("repo1", "url1", True),
                                            ("repo2", "url2", True),
                                            ("conan.io", "https://server.conan.io", True)])
        registry.remotes.add("repo3", "url3", True, insert=5)
        self.assertEqual(registry.remotes.list, [("repo1", "url1", True),
                                            ("repo2", "url2", True),
                                            ("conan.io", "https://server.conan.io", True),
                                            ("repo3", "url3", True)])
Esempio n. 12
0
 def _get_registry():
     f = os.path.join(temp_folder(), "aux_file")
     remotes, refs = load_registry_txt(
         "conan.io https://server.conan.io True\n"
         "conan.io2 https://server2.conan.io True\n")
     reg = dump_registry(remotes, refs, {})
     save(f, reg)
     return RemoteRegistry(f, TestBufferConanOutput())
Esempio n. 13
0
    def remote(self, *args):
        """ manage remotes
        """
        parser = argparse.ArgumentParser(description=self.remote.__doc__,
                                         prog="conan remote")
        subparsers = parser.add_subparsers(dest='subcommand',
                                           help='sub-command help')

        # create the parser for the "a" command
        subparsers.add_parser('list', help='list current remotes')
        parser_add = subparsers.add_parser('add', help='add a remote')
        parser_add.add_argument('remote', help='name of the remote')
        parser_add.add_argument('url', help='url of the remote')
        parser_rm = subparsers.add_parser('remove', help='remove a remote')
        parser_rm.add_argument('remote', help='name of the remote')
        parser_upd = subparsers.add_parser('update',
                                           help='update the remote url')
        parser_upd.add_argument('remote', help='name of the remote')
        parser_upd.add_argument('url', help='url')
        subparsers.add_parser(
            'list_ref',
            help='list the package recipes and its associated remotes')
        parser_padd = subparsers.add_parser(
            'add_ref', help="associate a recipe's reference to a remote")
        parser_padd.add_argument('reference', help='package recipe reference')
        parser_padd.add_argument('remote', help='name of the remote')
        parser_prm = subparsers.add_parser(
            'remove_ref',
            help="dissociate a recipe's reference and its remote")
        parser_prm.add_argument('reference', help='package recipe reference')
        parser_pupd = subparsers.add_parser(
            'update_ref',
            help="update the remote associated "
            "with a package recipe")
        parser_pupd.add_argument('reference', help='package recipe reference')
        parser_pupd.add_argument('remote', help='name of the remote')
        args = parser.parse_args(*args)

        registry = RemoteRegistry(self._conan_paths.registry,
                                  self._user_io.out)
        if args.subcommand == "list":
            for r in registry.remotes:
                self._user_io.out.info("%s: %s" % (r.name, r.url))
        elif args.subcommand == "add":
            registry.add(args.remote, args.url)
        elif args.subcommand == "remove":
            registry.remove(args.remote)
        elif args.subcommand == "update":
            registry.update(args.remote, args.url)
        elif args.subcommand == "list_ref":
            for ref, remote in registry.refs.items():
                self._user_io.out.info("%s: %s" % (ref, remote))
        elif args.subcommand == "add_ref":
            registry.add_ref(args.reference, args.remote)
        elif args.subcommand == "remove_ref":
            registry.remove_ref(args.reference)
        elif args.subcommand == "update_ref":
            registry.update_ref(args.reference, args.remote)
Esempio n. 14
0
    def __init__(self,
                 base_folder=None,
                 current_folder=None,
                 servers=None,
                 users=None,
                 client_version=CLIENT_VERSION,
                 min_server_compatible_version=MIN_SERVER_COMPATIBLE_VERSION,
                 requester_class=None,
                 runner=None,
                 path_with_spaces=True):
        """
        storage_folder: Local storage path
        current_folder: Current execution folder
        servers: dict of {remote_name: TestServer}
        logins is a list of (user, password) for auto input in order
        if required==> [("lasote", "mypass"), ("other", "otherpass")]
        """
        self.all_output = ""  # For debugging purpose, append all the run outputs
        self.users = users or {
            "default":
            [(TESTING_REMOTE_PRIVATE_USER, TESTING_REMOTE_PRIVATE_PASS)]
        }
        self.servers = servers or {}

        self.client_version = Version(str(client_version))
        self.min_server_compatible_version = Version(
            str(min_server_compatible_version))

        self.base_folder = base_folder or temp_folder(path_with_spaces)
        # Define storage_folder, if not, it will be read from conf file & pointed to real user home
        self.storage_folder = os.path.join(self.base_folder, ".conan", "data")
        self.client_cache = ClientCache(self.base_folder, self.storage_folder,
                                        TestBufferConanOutput())

        search_adapter = DiskSearchAdapter()
        self.search_manager = DiskSearchManager(self.client_cache,
                                                search_adapter)

        self._default_settings(get_env("CONAN_COMPILER", "gcc"),
                               get_env("CONAN_COMPILER_VERSION", "4.8"),
                               get_env("CONAN_LIBCXX", "libstdc++"))

        self.requester_class = requester_class
        self.conan_runner = runner

        self.init_dynamic_vars()

        save(self.client_cache.registry, "")
        registry = RemoteRegistry(self.client_cache.registry,
                                  TestBufferConanOutput())
        for name, server in self.servers.items():
            if isinstance(server, TestServer):
                registry.add(name, server.fake_url)
            else:
                registry.add(name, server)

        logger.debug("Client storage = %s" % self.storage_folder)
        self.current_folder = current_folder or temp_folder(path_with_spaces)
Esempio n. 15
0
 def update_servers(self, servers):
     self.servers = servers or {}
     save(self.client_cache.registry, "")
     registry = RemoteRegistry(self.client_cache.registry, TestBufferConanOutput())
     for name, server in self.servers.items():
         if isinstance(server, TestServer):
             registry.add(name, server.fake_url)
         else:
             registry.add(name, server)
Esempio n. 16
0
 def info(self, deps_graph, only, package_filter, show_paths):
     registry = RemoteRegistry(self.client_cache.registry, self.user_io.out)
     Printer(self.user_io.out).print_info(
         deps_graph,
         only,
         registry,
         node_times=self._read_dates(deps_graph),
         path_resolver=self.client_cache,
         package_filter=package_filter,
         show_paths=show_paths)
Esempio n. 17
0
 def authenticate(self, name, password, remote=None):
     registry = RemoteRegistry(self._client_cache.registry, self._user_io.out)
     if not remote:
         remote = registry.default_remote
     else:
         remote = registry.remote(remote)
     if password == "":
         name, password = self._user_io.request_login(remote_name=remote.name,
                                                      username=name)
     self._remote_manager.authenticate(remote, name, password)
Esempio n. 18
0
 def __init__(self, paths, user_io, remote_manager, remote_name,
              update=False, check_updates=False, check_integrity=False):
     self._paths = paths
     self._out = user_io.out
     self._remote_manager = remote_manager
     self._registry = RemoteRegistry(self._paths.registry, self._out)
     self._remote_name = remote_name
     self._update = update
     self._check_updates = check_updates or update  # Update forces check
     self._check_integrity = check_integrity
Esempio n. 19
0
 def __init__(self, client_cache, user_io, remote_manager, remote_name,
              update=False, check_updates=False, manifest_manager=False):
     self._client_cache = client_cache
     self._out = user_io.out
     self._remote_manager = remote_manager
     self._registry = RemoteRegistry(self._client_cache.registry, self._out)
     self._remote_name = remote_name
     self._update = update
     self._check_updates = check_updates or update  # Update forces check
     self._manifest_manager = manifest_manager
Esempio n. 20
0
File: user.py Progetto: rukgar/conan
def user_set(client_cache, output, user, remote_name=None):
    localdb = LocalDB(client_cache.localdb)
    registry = RemoteRegistry(client_cache.registry, output)
    if not remote_name:
        remote = registry.default_remote
    else:
        remote = registry.remote(remote_name)

    if user.lower() == "none":
        user = None
    update_localdb(localdb, user, None, remote, output)
Esempio n. 21
0
    def __init__(self, client_cache, user_io, runner, remote_manager,
                 _settings_preprocessor, interactive=True):
        assert isinstance(user_io, UserIO)
        assert isinstance(client_cache, ClientCache)
        self._client_cache = client_cache
        self._user_io = user_io
        self._runner = runner
        self._remote_manager = remote_manager
        self._settings_preprocessor = _settings_preprocessor
        self._registry = RemoteRegistry(self._client_cache.registry, self._user_io.out)

        if not interactive:
            self._user_io.disable_input()
Esempio n. 22
0
    def refs_test(self):
        f = os.path.join(temp_folder(), "aux_file")
        registry = RemoteRegistry(f, TestBufferConanOutput())
        ref = ConanFileReference.loads("MyLib/0.1@lasote/stable")

        remotes = registry.remotes
        registry.set_ref(ref, remotes[0])
        remote = registry.get_ref(ref)
        self.assertEqual(remote, remotes[0])

        registry.set_ref(ref, remotes[0])
        remote = registry.get_ref(ref)
        self.assertEqual(remote, remotes[0])
Esempio n. 23
0
    def refs_test(self):
        f = os.path.join(temp_folder(), "aux_file")
        save(f, dump_registry(default_remotes, {}, {}))
        registry = RemoteRegistry(f, TestBufferConanOutput())
        ref = ConanFileReference.loads("MyLib/0.1@lasote/stable")

        remotes = registry.remotes.list
        registry.refs.set(ref, remotes[0].name)
        remote = registry.refs.get(ref)
        self.assertEqual(remote, remotes[0])

        registry.refs.set(ref, remotes[0].name)
        remote = registry.refs.get(ref)
        self.assertEqual(remote, remotes[0])
Esempio n. 24
0
 def __init__(self,
              paths,
              user_io,
              remote_manager,
              remote_name,
              update=False,
              check_updates=True):
     self._paths = paths
     self._out = user_io.out
     self._remote_manager = remote_manager
     self._registry = RemoteRegistry(self._paths.registry, self._out)
     self._remote_name = remote_name
     self._update = update
     self._check_updates = check_updates
Esempio n. 25
0
    def to_json_migration_test(self):
        tmp = temp_folder()
        conf_dir = os.path.join(tmp, ".conan")
        f = os.path.join(conf_dir, "registry.txt")
        save(f, """conan.io https://server.conan.io True

lib/1.0@conan/stable conan.io
other/1.0@lasote/testing conan.io        
""")
        client = TestClient(base_folder=tmp, servers=False)
        new_path = client.client_cache.registry
        registry = RemoteRegistry(new_path, TestBufferConanOutput())
        self.assertEqual(registry.remotes.list, [("conan.io", "https://server.conan.io", True)])
        self.assertEqual(registry.refs.list, {'lib/1.0@conan/stable': 'conan.io',
                                              'other/1.0@lasote/testing': 'conan.io'})
Esempio n. 26
0
 def insert_test(self):
     f = os.path.join(temp_folder(), "aux_file")
     save(f, "conan.io https://server.conan.io True")
     registry = RemoteRegistry(f, TestBufferConanOutput())
     registry.add("repo1", "url1", True, insert=0)
     self.assertEqual(registry.remotes,
                      [("repo1", "url1", True),
                       ("conan.io", "https://server.conan.io", True)])
     registry.add("repo2", "url2", True, insert=1)
     self.assertEqual(registry.remotes,
                      [("repo1", "url1", True), ("repo2", "url2", True),
                       ("conan.io", "https://server.conan.io", True)])
     registry.add("repo3", "url3", True, insert=5)
     self.assertEqual(registry.remotes,
                      [("repo1", "url1", True), ("repo2", "url2", True),
                       ("conan.io", "https://server.conan.io", True),
                       ("repo3", "url3", True)])
Esempio n. 27
0
    def __init__(self, client_cache, user_io, runner, remote_manager, interactive=True):
        assert isinstance(user_io, UserIO)
        assert isinstance(client_cache, ClientCache)
        self._client_cache = client_cache
        self._user_io = user_io
        self._runner = runner
        self._remote_manager = remote_manager
        self._registry = RemoteRegistry(self._client_cache.registry, self._user_io.out)
        if not interactive:
            self._user_io.disable_input()

        self._proxy = ConanProxy(client_cache, self._user_io.out, remote_manager, registry=self._registry)
        resolver = RangeResolver(self._user_io.out, client_cache, self._proxy)
        python_requires = ConanPythonRequire(self._proxy, resolver)
        self._loader = ConanFileLoader(self._runner, self._user_io.out, python_requires)
        self._graph_manager = GraphManager(self._user_io.out, self._client_cache, self._registry,
                                           self._remote_manager, self._loader, self._proxy, resolver)
Esempio n. 28
0
File: user.py Progetto: rukgar/conan
def users_list(client_cache, output, remote_name=None):
    # List all users from required remotes
    registry = RemoteRegistry(client_cache.registry, output)
    if remote_name:
        remotes = [registry.remote(remote_name)]
    else:
        remotes = registry.remotes

    if not remotes:
        raise ConanException("No remotes defined")

    localdb = LocalDB(client_cache.localdb)
    result = []
    for remote in remotes:
        prev_user = localdb.get_username(remote.url)
        username = prev_user or "None (anonymous)"
        result.append((remote.name, username))
    return result
Esempio n. 29
0
    def search_recipes(self, pattern, remote=None, case_sensitive=False):
        ignorecase = not case_sensitive
        if not remote:
            return DiskSearchManager(self._client_cache).search_recipes(pattern, ignorecase)

        registry = RemoteRegistry(self._client_cache.registry, self._user_io.out)
        if remote == 'all':
            remotes = registry.remotes
            # We have to check if there is a remote called "all"
            # Deprecate: 2.0 can remove this check
            if 'all' not in (r.name for r in remotes):
                references = {}
                for remote in remotes:
                    result = self._remote_manager.search_recipes(remote, pattern, ignorecase)
                    if result:
                        references[remote.name] = result
                return references
        # single remote
        remote = registry.remote(remote)
        return self._remote_manager.search_recipes(remote, pattern, ignorecase)
Esempio n. 30
0
    def update_servers(self):

        save(self.client_cache.registry, dump_registry({}, {}, {}))

        registry = RemoteRegistry(self.client_cache.registry,
                                  TestBufferConanOutput())

        def add_server_to_registry(name, server):
            if isinstance(server, TestServer):
                registry.remotes.add(name, server.fake_url)
            else:
                registry.remotes.add(name, server)

        for name, server in self.servers.items():
            if name == "default":
                add_server_to_registry(name, server)

        for name, server in self.servers.items():
            if name != "default":
                add_server_to_registry(name, server)