コード例 #1
0
ファイル: disk_search_test.py プロジェクト: yoyonel/conan
 def setUp(self):
     folder = temp_folder()
     paths = SimplePaths(folder)
     search_adapter = DiskSearchAdapter()
     self.search_manager = DiskSearchManager(paths, search_adapter)
     os.chdir(paths.store)
     self.paths = paths
コード例 #2
0
ファイル: command.py プロジェクト: xlong88/conan
def get_command():
    def instance_remote_manager(client_cache):
        requester = requests.Session()
        requester.proxies = client_cache.conan_config.proxies
        # Verify client version against remotes
        version_checker_requester = VersionCheckerRequester(
            requester, Version(CLIENT_VERSION),
            Version(MIN_SERVER_COMPATIBLE_VERSION), out)
        # To handle remote connections
        rest_api_client = RestApiClient(out,
                                        requester=version_checker_requester)
        # To store user and token
        localdb = LocalDB(client_cache.localdb)
        # Wraps RestApiClient to add authentication support (same interface)
        auth_manager = ConanApiAuthManager(rest_api_client, user_io, localdb)
        # Handle remote connections
        remote_manager = RemoteManager(client_cache, auth_manager, out)
        return remote_manager

    use_color = get_env("CONAN_COLOR_DISPLAY", 1)
    if use_color and hasattr(sys.stdout, "isatty") and sys.stdout.isatty():
        import colorama
        colorama.init()
        color = True
    else:
        color = False
    out = ConanOutput(sys.stdout, color)
    user_io = UserIO(out=out)

    user_folder = os.getenv("CONAN_USER_HOME", conan_expand_user("~"))

    try:
        # To capture exceptions in conan.conf parsing
        client_cache = ClientCache(user_folder, None, out)
        # obtain a temp ConanManager instance to execute the migrations
        remote_manager = instance_remote_manager(client_cache)

        # Get a DiskSearchManager
        search_adapter = DiskSearchAdapter()
        search_manager = DiskSearchManager(client_cache, search_adapter)
        manager = ConanManager(client_cache, user_io, ConanRunner(),
                               remote_manager, search_manager)

        client_cache = migrate_and_get_client_cache(user_folder, out, manager)
    except Exception as e:
        out.error(str(e))
        sys.exit(True)

    # Get the new command instance after migrations have been done
    remote_manager = instance_remote_manager(client_cache)

    # Get a search manager
    search_adapter = DiskSearchAdapter()
    search_manager = DiskSearchManager(client_cache, search_adapter)
    command = Command(client_cache, user_io, ConanRunner(), remote_manager,
                      search_manager)
    return command
コード例 #3
0
ファイル: server_launcher.py プロジェクト: yoyonel/conan
    def __init__(self):
        user_folder = conan_expand_user("~")

        server_config = migrate_and_get_server_config(user_folder)

        authorizer = BasicAuthorizer(server_config.read_permissions,
                                     server_config.write_permissions)
        authenticator = BasicAuthenticator(dict(server_config.users))

        credentials_manager = JWTCredentialsManager(
            server_config.jwt_secret, server_config.jwt_expire_time)

        updown_auth_manager = JWTUpDownAuthManager(
            server_config.updown_secret, server_config.authorize_timeout)

        file_manager = get_file_manager(
            server_config, updown_auth_manager=updown_auth_manager)

        search_adapter = DiskSearchAdapter()
        search_manager = DiskSearchManager(
            SimplePaths(server_config.disk_storage_path), search_adapter)
        self.ra = ConanServer(server_config.port, server_config.ssl_enabled,
                              credentials_manager, updown_auth_manager,
                              authorizer, authenticator, file_manager,
                              search_manager, Version(SERVER_VERSION),
                              Version(MIN_CLIENT_COMPATIBLE_VERSION))
コード例 #4
0
    def __init__(self, base_path=None, read_permissions=None,
                 write_permissions=None, users=None, base_url=None, plugins=None,
                 server_version=None,
                 min_client_compatible_version=None):

        plugins = plugins or []
        if not base_path:
            base_path = temp_folder()

        if not os.path.exists(base_path):
            raise Exception("Base path not exist! %s")

        # Define storage_folder, if not, it will be readed from conf file and pointed to real user home
        storage_folder = os.path.join(base_path, ".conan_server", "data")
        mkdir(storage_folder)

        server_config = migrate_and_get_server_config(base_path, storage_folder)

        if TestServerLauncher.port == 0:
            TestServerLauncher.port = server_config.port

        # Encode and Decode signature for Upload and Download service
        updown_auth_manager = JWTUpDownAuthManager(server_config.updown_secret,
                                                   server_config.authorize_timeout)
        self.file_manager = get_file_manager(server_config, public_url=base_url,
                                             updown_auth_manager=updown_auth_manager)

        search_adapter = DiskSearchAdapter()
        self.search_manager = DiskSearchManager(SimplePaths(server_config.disk_storage_path), search_adapter)
        # Prepare some test users
        if not read_permissions:
            read_permissions = server_config.read_permissions
            read_permissions.append(("private_library/1.0.0@private_user/testing", "*"))
            read_permissions.append(("*/*@*/*", "*"))

        if not write_permissions:
            write_permissions = server_config.write_permissions

        if not users:
            users = dict(server_config.users)

        users[TESTING_REMOTE_PRIVATE_USER] = TESTING_REMOTE_PRIVATE_PASS

        authorizer = BasicAuthorizer(read_permissions, write_permissions)
        authenticator = BasicAuthenticator(users)
        credentials_manager = JWTCredentialsManager(server_config.jwt_secret,
                                                    server_config.jwt_expire_time)

        logger.debug("Storage path: %s" % storage_folder)
        self.port = TestServerLauncher.port
        TestServerLauncher.port += 1
        self.ra = ConanServer(self.port, False, credentials_manager, updown_auth_manager,
                              authorizer, authenticator, self.file_manager, self.search_manager, 
                              server_version, min_client_compatible_version)
        for plugin in plugins:
            self.ra.api_v1.install(plugin)
コード例 #5
0
ファイル: disk_search_test.py プロジェクト: yoyonel/conan
    def case_insensitive_test(self):
        root_folder2 = "sdl/1.5/lasote/stable"
        conan_ref2 = ConanFileReference.loads("sdl/1.5@lasote/stable")
        os.makedirs("%s/%s" % (root_folder2, EXPORT_FOLDER))

        root_folder3 = "assimp/0.14/phil/testing"
        conan_ref3 = ConanFileReference.loads("assimp/0.14@phil/testing")
        os.makedirs("%s/%s" % (root_folder3, EXPORT_FOLDER))

        root_folder4 = "sdl/2.10/lasote/stable"
        conan_ref4 = ConanFileReference.loads("sdl/2.10@lasote/stable")
        os.makedirs("%s/%s" % (root_folder4, EXPORT_FOLDER))

        root_folder5 = "SDL_fake/1.10/lasote/testing"
        conan_ref5 = ConanFileReference.loads("SDL_fake/1.10@lasote/testing")
        os.makedirs("%s/%s" % (root_folder5, EXPORT_FOLDER))
        # Case insensitive searches
        search_adapter = DiskSearchAdapter()
        search_manager = DiskSearchManager(self.paths, search_adapter)

        reg_conans = sorted([str(_reg) for _reg in search_manager.search("*")])
        self.assertEqual(reg_conans, [
            str(conan_ref5),
            str(conan_ref3),
            str(conan_ref2),
            str(conan_ref4)
        ])

        reg_conans = sorted(
            [str(_reg) for _reg in search_manager.search(pattern="sdl*")])
        self.assertEqual(reg_conans,
                         [str(conan_ref5),
                          str(conan_ref2),
                          str(conan_ref4)])

        # Case sensitive search
        self.assertEqual(
            str(search_manager.search(pattern="SDL*", ignorecase=False)[0]),
            str(conan_ref5))
コード例 #6
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.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.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()
コード例 #7
0
ファイル: disk_search_test.py プロジェクト: yoyonel/conan
class SearchTest(unittest.TestCase):
    def setUp(self):
        folder = temp_folder()
        paths = SimplePaths(folder)
        search_adapter = DiskSearchAdapter()
        self.search_manager = DiskSearchManager(paths, search_adapter)
        os.chdir(paths.store)
        self.paths = paths

    def basic_test2(self):
        conan_ref1 = ConanFileReference.loads("opencv/2.4.10@lasote/testing")
        root_folder = str(conan_ref1).replace("@", "/")
        artifacts = ["a", "b", "c"]
        reg1 = "%s/%s" % (root_folder, EXPORT_FOLDER)
        os.makedirs(reg1)
        for artif_id in artifacts:
            build1 = "%s/%s/%s" % (root_folder, BUILD_FOLDER, artif_id)
            artif1 = "%s/%s/%s" % (root_folder, PACKAGES_FOLDER, artif_id)
            os.makedirs(build1)
            info = ConanInfo().loads("[settings]\n[options]")
            save(os.path.join(artif1, CONANINFO), info.dumps())

        packages = self.search_manager.search_packages(conan_ref1, "")
        all_artif = [_artif for _artif in sorted(packages)]
        self.assertEqual(all_artif, artifacts)

    def pattern_test(self):
        refs = [
            "opencv/2.4.%s@lasote/testing" % ref for ref in ("1", "2", "3")
        ]
        refs = [ConanFileReference.loads(ref) for ref in refs]
        for ref in refs:
            root_folder = str(ref).replace("@", "/")
            reg1 = "%s/%s" % (root_folder, EXPORT_FOLDER)
            os.makedirs(reg1)

        recipes = self.search_manager.search("opencv/*@lasote/testing")
        self.assertEqual(recipes, refs)

    def case_insensitive_test(self):
        root_folder2 = "sdl/1.5/lasote/stable"
        conan_ref2 = ConanFileReference.loads("sdl/1.5@lasote/stable")
        os.makedirs("%s/%s" % (root_folder2, EXPORT_FOLDER))

        root_folder3 = "assimp/0.14/phil/testing"
        conan_ref3 = ConanFileReference.loads("assimp/0.14@phil/testing")
        os.makedirs("%s/%s" % (root_folder3, EXPORT_FOLDER))

        root_folder4 = "sdl/2.10/lasote/stable"
        conan_ref4 = ConanFileReference.loads("sdl/2.10@lasote/stable")
        os.makedirs("%s/%s" % (root_folder4, EXPORT_FOLDER))

        root_folder5 = "SDL_fake/1.10/lasote/testing"
        conan_ref5 = ConanFileReference.loads("SDL_fake/1.10@lasote/testing")
        os.makedirs("%s/%s" % (root_folder5, EXPORT_FOLDER))
        # Case insensitive searches
        search_adapter = DiskSearchAdapter()
        search_manager = DiskSearchManager(self.paths, search_adapter)

        reg_conans = sorted([str(_reg) for _reg in search_manager.search("*")])
        self.assertEqual(reg_conans, [
            str(conan_ref5),
            str(conan_ref3),
            str(conan_ref2),
            str(conan_ref4)
        ])

        reg_conans = sorted(
            [str(_reg) for _reg in search_manager.search(pattern="sdl*")])
        self.assertEqual(reg_conans,
                         [str(conan_ref5),
                          str(conan_ref2),
                          str(conan_ref4)])

        # Case sensitive search
        self.assertEqual(
            str(search_manager.search(pattern="SDL*", ignorecase=False)[0]),
            str(conan_ref5))
コード例 #8
0
ファイル: paths_test.py プロジェクト: lasote/conan
    def basic_test2(self):
        folder = temp_folder()
        paths = SimplePaths(folder)
        search_adapter = DiskSearchAdapter()
        search_manager = DiskSearchManager(paths, search_adapter)

        os.chdir(paths.store)

        root_folder1 = "opencv/2.4.10/lasote/testing"
        conan_ref1 = ConanFileReference.loads("opencv/2.4.10@lasote/testing")

        artif_id1 = "awqfwf44we5f425fw"
        artif_id2 = "b5wc4q5frg45rgv1g"
        artif_id3 = "cf838regrg783g453"

        reg1 = "%s/%s" % (root_folder1, EXPORT_FOLDER)
        build1 = "%s/%s/%s" % (root_folder1, BUILD_FOLDER, artif_id1)
        artif1 = "%s/%s/%s" % (root_folder1, PACKAGES_FOLDER, artif_id1)
        artif2 = "%s/%s/%s" % (root_folder1, PACKAGES_FOLDER, artif_id2)
        artif3 = "%s/%s/%s" % (root_folder1, PACKAGES_FOLDER, artif_id3)
        os.makedirs(reg1)
        os.makedirs(build1)
        os.makedirs(artif1)
        os.makedirs(artif2)
        os.makedirs(artif3)

        for package_path in [artif1, artif2, artif3]:
            info = ConanInfo().loads("[settings]\n[options]")
            save(os.path.join(paths.store, package_path, CONANINFO),
                 info.dumps())

        packages = search_manager.search_packages(conan_ref1, "")
        all_artif = [_artif for _artif in sorted(packages)]
        self.assertEqual(all_artif, [artif_id1, artif_id2, artif_id3])

        root_folder2 = "sdl/1.5/lasote/stable"
        conan_ref2 = ConanFileReference.loads("sdl/1.5@lasote/stable")
        os.makedirs("%s/%s" % (root_folder2, EXPORT_FOLDER))

        root_folder3 = "assimp/0.14/phil/testing"
        conan_ref3 = ConanFileReference.loads("assimp/0.14@phil/testing")
        os.makedirs("%s/%s" % (root_folder3, EXPORT_FOLDER))

        root_folder4 = "sdl/2.10/lasote/stable"
        conan_ref4 = ConanFileReference.loads("sdl/2.10@lasote/stable")
        os.makedirs("%s/%s" % (root_folder4, EXPORT_FOLDER))

        root_folder5 = "SDL_fake/1.10/lasote/testing"
        conan_ref5 = ConanFileReference.loads("SDL_fake/1.10@lasote/testing")
        os.makedirs("%s/%s" % (root_folder5, EXPORT_FOLDER))

        # Case insensitive searches
        search_adapter = DiskSearchAdapter()
        search_manager = DiskSearchManager(paths, search_adapter)

        reg_conans = sorted([str(_reg) for _reg in search_manager.search("*")])
        self.assertEqual(reg_conans, [str(conan_ref5),
                                      str(conan_ref3),
                                      str(conan_ref1),
                                      str(conan_ref2),
                                      str(conan_ref4)])

        reg_conans = sorted([str(_reg) for _reg in search_manager.search(pattern="sdl*")])
        self.assertEqual(reg_conans, [str(conan_ref5), str(conan_ref2), str(conan_ref4)])

        # Case sensitive search
        self.assertEqual(str(search_manager.search(pattern="SDL*", ignorecase=False)[0]),
                         str(conan_ref5))
コード例 #9
0
ファイル: paths_test.py プロジェクト: xlong88/conan
    def basic_test2(self):
        folder = temp_folder()
        paths = SimplePaths(folder)
        search_adapter = DiskSearchAdapter()
        search_manager = DiskSearchManager(paths, search_adapter)

        os.chdir(paths.store)

        root_folder1 = "opencv/2.4.10/lasote/testing"
        conan_ref1 = ConanFileReference.loads("opencv/2.4.10@lasote/testing")

        artif_id1 = "awqfwf44we5f425fw"
        artif_id2 = "b5wc4q5frg45rgv1g"
        artif_id3 = "cf838regrg783g453"

        reg1 = "%s/%s" % (root_folder1, EXPORT_FOLDER)
        build1 = "%s/%s/%s" % (root_folder1, BUILD_FOLDER, artif_id1)
        artif1 = "%s/%s/%s" % (root_folder1, PACKAGES_FOLDER, artif_id1)
        artif2 = "%s/%s/%s" % (root_folder1, PACKAGES_FOLDER, artif_id2)
        artif3 = "%s/%s/%s" % (root_folder1, PACKAGES_FOLDER, artif_id3)
        os.makedirs(reg1)
        os.makedirs(build1)
        os.makedirs(artif1)
        os.makedirs(artif2)
        os.makedirs(artif3)

        for package_path in [artif1, artif2, artif3]:
            info = ConanInfo().loads("[settings]\n[options]")
            save(os.path.join(paths.store, package_path, CONANINFO),
                 info.dumps())

        packages = search_manager.search_packages(conan_ref1, "")
        all_artif = [_artif for _artif in sorted(packages)]
        self.assertEqual(all_artif, [artif_id1, artif_id2, artif_id3])

        root_folder2 = "sdl/1.5/lasote/stable"
        conan_ref2 = ConanFileReference.loads("sdl/1.5@lasote/stable")
        os.makedirs("%s/%s" % (root_folder2, EXPORT_FOLDER))

        root_folder3 = "assimp/0.14/phil/testing"
        conan_ref3 = ConanFileReference.loads("assimp/0.14@phil/testing")
        os.makedirs("%s/%s" % (root_folder3, EXPORT_FOLDER))

        root_folder4 = "sdl/2.10/lasote/stable"
        conan_ref4 = ConanFileReference.loads("sdl/2.10@lasote/stable")
        os.makedirs("%s/%s" % (root_folder4, EXPORT_FOLDER))

        root_folder5 = "SDL_fake/1.10/lasote/testing"
        conan_ref5 = ConanFileReference.loads("SDL_fake/1.10@lasote/testing")
        os.makedirs("%s/%s" % (root_folder5, EXPORT_FOLDER))

        # Case insensitive searches
        search_adapter = DiskSearchAdapter()
        search_manager = DiskSearchManager(paths, search_adapter)

        reg_conans = sorted([str(_reg) for _reg in search_manager.search("*")])
        self.assertEqual(reg_conans, [
            str(conan_ref5),
            str(conan_ref3),
            str(conan_ref1),
            str(conan_ref2),
            str(conan_ref4)
        ])

        reg_conans = sorted(
            [str(_reg) for _reg in search_manager.search(pattern="sdl*")])
        self.assertEqual(reg_conans,
                         [str(conan_ref5),
                          str(conan_ref2),
                          str(conan_ref4)])

        # Case sensitive search
        self.assertEqual(
            str(search_manager.search(pattern="SDL*", ignorecase=False)[0]),
            str(conan_ref5))