def __init__(self, config, level=None): BufferingHandler.__init__(self, 1000) self.config = config self.old_handlers = [] # set my formatter fmt = datefmt = None if config.logging_format: fmt = config.logging_format else: fmt = '%(levelname)s:%(name)s:%(message)s' if config.logging_datefmt: datefmt = config.logging_datefmt fmt = logging.Formatter(fmt, datefmt) self.setFormatter(fmt) # figure the level we're logging at if level is not None: self.level = level elif config.logging_level: self.level = getattr(logging, config.logging_level.upper(), None) if self.level is None: raise ConfigError('Invalid log level: "%s"' % config.logging_level) else: self.level = logging.NOTSET # construct my filter if config.logging_filter: self.addFilter(RecordFilter(config.logging_filter))
def setup_paths(self): # pylint: disable=too-many-branches, too-many-statements if self.config.paths: if self.config.verbose: print("Supplied path:", \ ", ".join('"%s"' % path for path in self.config.paths)) first_path = self.config.paths[0] if hasattr(first_path, "filename"): # -- BETTER: isinstance(first_path, FileLocation): first_path = first_path.filename base_dir = first_path if base_dir.startswith("@"): # -- USE: behave @features.txt base_dir = base_dir[1:] file_locations = self.feature_locations() if file_locations: base_dir = os.path.dirname(file_locations[0].filename) base_dir = os.path.abspath(base_dir) # supplied path might be to a feature file if os.path.isfile(base_dir): if self.config.verbose: print("Primary path is to a file so using its directory") base_dir = os.path.dirname(base_dir) else: if self.config.verbose: print('Using default path "./features"') base_dir = os.path.abspath("features") # Get the root. This is not guaranteed to be "/" because Windows. root_dir = path_getrootdir(base_dir) new_base_dir = base_dir steps_dir = self.config.steps_dir environment_file = self.config.environment_file while True: if self.config.verbose: print("Trying base directory:", new_base_dir) if os.path.isdir(os.path.join(new_base_dir, steps_dir)): break if os.path.isfile(os.path.join(new_base_dir, environment_file)): break if new_base_dir == root_dir: break new_base_dir = os.path.dirname(new_base_dir) if new_base_dir == root_dir: if self.config.verbose: if not self.config.paths: print('ERROR: Could not find "%s" directory. '\ 'Please specify where to find your features.' % \ steps_dir) else: print('ERROR: Could not find "%s" directory in your '\ 'specified path "%s"' % (steps_dir, base_dir)) message = 'No %s directory in %r' % (steps_dir, base_dir) raise ConfigError(message) base_dir = new_base_dir self.config.base_dir = base_dir for dirpath, dirnames, filenames in os.walk(base_dir): if [fn for fn in filenames if fn.endswith(".feature")]: break else: if self.config.verbose: if not self.config.paths: print('ERROR: Could not find any "<name>.feature" files. '\ 'Please specify where to find your features.') else: print('ERROR: Could not find any "<name>.feature" files '\ 'in your specified path "%s"' % base_dir) raise ConfigError('No feature files in %r' % base_dir) self.base_dir = base_dir self.path_manager.add(base_dir) if not self.config.paths: self.config.paths = [base_dir] if base_dir != os.getcwd(): self.path_manager.add(os.getcwd())
def setup_paths(self): if self.config.paths: if self.config.verbose: print(('Supplied path:', ', '.join('"%s"' % path for path in self.config.paths))) first_path = self.config.paths[0] if hasattr(first_path, "filename"): # -- BETTER: isinstance(first_path, FileLocation): first_path = first_path.filename base_dir = first_path if base_dir.startswith('@'): # -- USE: behave @features.txt base_dir = base_dir[1:] file_locations = self.feature_locations() if file_locations: base_dir = os.path.dirname(file_locations[0].filename) base_dir = os.path.abspath(base_dir) # supplied path might be to a feature file if os.path.isfile(base_dir): if self.config.verbose: print('Primary path is to a file so using its directory') base_dir = os.path.dirname(base_dir) else: if self.config.verbose: print('Using default path "./features"') base_dir = os.path.abspath('features') # Get the root. This is not guaranteed to be '/' because Windows. root_dir = path_getrootdir(base_dir) new_base_dir = base_dir while True: if self.config.verbose: print(('Trying base directory:', new_base_dir)) if os.path.isdir(os.path.join(new_base_dir, 'steps')): break if os.path.isfile(os.path.join(new_base_dir, 'environment')): break if new_base_dir == root_dir: break new_base_dir = os.path.dirname(new_base_dir) if new_base_dir == root_dir: if self.config.verbose: if not self.config.paths: print('ERROR: Could not find "steps" directory. Please specify where to find your features.') else: print(('ERROR: Could not find "steps" directory in your specified path "%s"' % base_dir)) raise ConfigError('No steps directory in "%s"' % base_dir) base_dir = new_base_dir self.config.base_dir = base_dir for dirpath, dirnames, filenames in os.walk(base_dir): if [fn for fn in filenames if fn.endswith('.feature')]: break else: if self.config.verbose: if not self.config.paths: print('ERROR: Could not find any "<name>.feature" files. Please specify where to find your features.') else: print(('ERROR: Could not find any "<name>.feature" files in your specified path "%s"' % base_dir)) raise ConfigError('No feature files in "%s"' % base_dir) self.base_dir = base_dir self.path_manager.add(base_dir) if not self.config.paths: self.config.paths = [base_dir] if base_dir != os.getcwd(): self.path_manager.add(os.getcwd())
def setup_paths(self): if self.config.paths: if self.config.verbose: print 'Supplied path:', ', '.join( '"%s"' % path for path in self.config.paths) base_dir = os.path.abspath(self.config.paths[0]) # supplied path might be to a feature file if os.path.isfile(base_dir): if self.config.verbose: print 'Primary path is to a file so using its directory' base_dir = os.path.dirname(base_dir) else: if self.config.verbose: print 'Using default path "./features"' base_dir = os.path.abspath('features') # Get the root. This is not guaranteed to be '/' because Windows. root_dir = os.path.split(base_dir)[0] new_base_dir = base_dir while True: if self.config.verbose: print 'Trying base directory:', new_base_dir if os.path.isdir(os.path.join(new_base_dir, 'steps')): break if os.path.isfile(os.path.join(new_base_dir, 'environment.py')): break if new_base_dir == root_dir: break new_base_dir = os.path.dirname(new_base_dir) if new_base_dir == root_dir: if self.config.verbose: if not self.config.paths: print 'ERROR: Could not find "steps" directory. Please '\ 'specify where to find your features.' else: print 'ERROR: Could not find "steps" directory in your '\ 'specified path "%s"' % base_dir raise ConfigError('No steps directory in "%s"' % base_dir) base_dir = new_base_dir for dirpath, dirnames, filenames in os.walk(base_dir): if [fn for fn in filenames if fn.endswith('.feature')]: break else: if self.config.verbose: if not self.config.paths: print 'ERROR: Could not find any "<name>.feature" files. '\ 'Please specify where to find your features.' else: print 'ERROR: Could not find any "<name>.feature" files '\ 'in your specified path "%s"' % base_dir raise ConfigError('No feature files in "%s"' % base_dir) self.base_dir = base_dir self.path_manager.add(base_dir) if not self.config.paths: self.config.paths = [base_dir] if base_dir != os.getcwd(): self.path_manager.add(os.getcwd())