def __init__(self, args, command): """ :type args: any :type command: str """ super(EnvironmentConfig, self).__init__(args, command) self.local = args.local is True if args.tox is True or args.tox is False or args.tox is None: self.tox = args.tox is True self.tox_args = 0 self.python = args.python if 'python' in args else None # type: str else: self.tox = True self.tox_args = 1 self.python = args.tox # type: str self.docker = docker_qualify_image(args.docker) # type: str self.docker_raw = args.docker # type: str self.remote = args.remote # type: str self.docker_privileged = args.docker_privileged if 'docker_privileged' in args else False # type: bool self.docker_pull = args.docker_pull if 'docker_pull' in args else False # type: bool self.docker_keep_git = args.docker_keep_git if 'docker_keep_git' in args else False # type: bool self.docker_seccomp = args.docker_seccomp if 'docker_seccomp' in args else None # type: str self.docker_memory = args.docker_memory if 'docker_memory' in args else None if self.docker_seccomp is None: self.docker_seccomp = get_docker_completion().get( self.docker_raw, {}).get('seccomp', 'default') self.tox_sitepackages = args.tox_sitepackages # type: bool self.remote_stage = args.remote_stage # type: str self.remote_provider = args.remote_provider # type: str self.remote_aws_region = args.remote_aws_region # type: str self.remote_terminate = args.remote_terminate # type: str if self.remote_provider == 'default': self.remote_provider = None self.requirements = args.requirements # type: bool if self.python == 'default': self.python = None self.python_version = self.python or '.'.join( str(i) for i in sys.version_info[:2]) self.python_interpreter = args.python_interpreter self.delegate = self.tox or self.docker or self.remote self.delegate_args = [] # type: list[str] if self.delegate: self.requirements = True self.inject_httptester = args.inject_httptester if 'inject_httptester' in args else False # type: bool self.httptester = docker_qualify_image( args.httptester if 'httptester' in args else '') # type: str
def complete_docker(prefix, parsed_args, **_): """ :type prefix: unicode :type parsed_args: any :rtype: list[str] """ del parsed_args images = sorted(get_docker_completion().keys()) return [i for i in images if i.startswith(prefix)]
def get_integration_docker_filter(args, targets): """ :type args: IntegrationConfig :type targets: tuple[IntegrationTarget] :rtype: list[str] """ exclude = [] common_integration_filter(args, targets, exclude) skip = 'skip/docker/' skipped = [target.name for target in targets if skip in target.aliases] if skipped: exclude.append(skip) display.warning('Excluding tests marked "%s" which cannot run under docker: %s' % (skip.rstrip('/'), ', '.join(skipped))) if not args.docker_privileged: skip = 'needs/privileged/' skipped = [target.name for target in targets if skip in target.aliases] if skipped: exclude.append(skip) display.warning('Excluding tests marked "%s" which require --docker-privileged to run under docker: %s' % (skip.rstrip('/'), ', '.join(skipped))) python_version = 2 # images are expected to default to python 2 unless otherwise specified python_version = int(get_docker_completion().get(args.docker_raw).get('python', str(python_version))) if args.python: # specifying a numeric --python option overrides the default python if args.python.startswith('3'): python_version = 3 elif args.python.startswith('2'): python_version = 2 skip = 'skip/python%d/' % python_version skipped = [target.name for target in targets if skip in target.aliases] if skipped: exclude.append(skip) display.warning('Excluding tests marked "%s" which are not supported on python %d: %s' % (skip.rstrip('/'), python_version, ', '.join(skipped))) return exclude
def __init__(self, args, command): """ :type args: any :type command: str """ super(EnvironmentConfig, self).__init__(args, command) self.local = args.local is True if args.tox is True or args.tox is False or args.tox is None: self.tox = args.tox is True self.tox_args = 0 self.python = args.python if 'python' in args else None # type: str else: self.tox = True self.tox_args = 1 self.python = args.tox # type: str self.docker = docker_qualify_image(args.docker) # type: str self.docker_raw = args.docker # type: str self.remote = args.remote # type: str self.docker_privileged = args.docker_privileged if 'docker_privileged' in args else False # type: bool self.docker_pull = args.docker_pull if 'docker_pull' in args else False # type: bool self.docker_keep_git = args.docker_keep_git if 'docker_keep_git' in args else False # type: bool self.docker_seccomp = args.docker_seccomp if 'docker_seccomp' in args else None # type: str self.docker_memory = args.docker_memory if 'docker_memory' in args else None if self.docker_seccomp is None: self.docker_seccomp = get_docker_completion().get( self.docker_raw, {}).get('seccomp', 'default') self.tox_sitepackages = args.tox_sitepackages # type: bool self.remote_stage = args.remote_stage # type: str self.remote_provider = args.remote_provider # type: str self.remote_aws_region = args.remote_aws_region # type: str self.remote_terminate = args.remote_terminate # type: str if self.remote_provider == 'default': self.remote_provider = None self.requirements = args.requirements # type: bool if self.python == 'default': self.python = None actual_major_minor = '.'.join(str(i) for i in sys.version_info[:2]) self.python_version = self.python or actual_major_minor self.python_interpreter = args.python_interpreter self.delegate = self.tox or self.docker or self.remote self.delegate_args = [] # type: t.List[str] if self.delegate: self.requirements = True self.inject_httptester = args.inject_httptester if 'inject_httptester' in args else False # type: bool self.httptester = docker_qualify_image( args.httptester if 'httptester' in args else '') # type: str if args.check_python and args.check_python != actual_major_minor: raise ApplicationError( 'Running under Python %s instead of Python %s as expected.' % (actual_major_minor, args.check_python)) if self.docker_keep_git: def git_callback( files): # type: (t.List[t.Tuple[str, str]]) -> None """Add files from the content root .git directory to the payload file list.""" for dirpath, _dirnames, filenames in os.walk( os.path.join(data_context().content.root, '.git')): paths = [ os.path.join(dirpath, filename) for filename in filenames ] files.extend((path, os.path.relpath(path, data_context().content.root)) for path in paths) data_context().register_payload_callback(git_callback)