def test_list_all_sessions_with_filter(): sessions = create_mock_sessions() manifest = Manifest(sessions, mock.sentinel.CONFIG) assert len(manifest) == 2 manifest.filter_by_keywords("foo") assert len(manifest) == 1 all_sessions = list(manifest.list_all_sessions()) assert len(all_sessions) == 2 # Only one should be marked as selected. assert all_sessions[0][1] is True assert all_sessions[1][1] is False
def honor_list_request( manifest: Manifest, global_config: Namespace ) -> Union[Manifest, int]: """If --list was passed, simply list the manifest and exit cleanly. Args: manifest (~.Manifest): The manifest of sessions to be run. global_config (~nox.main.GlobalConfig): The global configuration. Returns: Union[~.Manifest,int]: ``0`` if a listing is all that is requested, the manifest otherwise (to be sent to the next task). """ if not global_config.list_sessions: return manifest # If the user just asked for a list of sessions, print that # and be done. print("Sessions defined in {noxfile}:\n".format(noxfile=global_config.noxfile)) reset = parse_colors("reset") if global_config.color else "" selected_color = parse_colors("cyan") if global_config.color else "" skipped_color = parse_colors("white") if global_config.color else "" for session, selected in manifest.list_all_sessions(): output = "{marker} {color}{session}{reset}" if selected: marker = "*" color = selected_color else: marker = "-" color = skipped_color if session.description is not None: output += " -> {description}" print( output.format( color=color, reset=reset, session=session.friendly_name, description=session.description, marker=marker, ) ) print( "\nsessions marked with {selected_color}*{reset} are selected, sessions marked with {skipped_color}-{reset} are skipped.".format( selected_color=selected_color, skipped_color=skipped_color, reset=reset ) ) return 0
def _produce_listing(manifest: Manifest, global_config: Namespace) -> None: # If the user just asked for a list of sessions, print that # and any docstring specified in noxfile.py and be done. This # can also be called if Noxfile sessions is an empty list. if manifest.module_docstring: print(manifest.module_docstring.strip(), end="\n\n") print(f"Sessions defined in {global_config.noxfile}:\n") reset = parse_colors("reset") if global_config.color else "" selected_color = parse_colors("cyan") if global_config.color else "" skipped_color = parse_colors("white") if global_config.color else "" for session, selected in manifest.list_all_sessions(): output = "{marker} {color}{session}{reset}" if selected: marker = "*" color = selected_color else: marker = "-" color = skipped_color if session.description is not None: output += " -> {description}" print( output.format( color=color, reset=reset, session=session.friendly_name, description=session.description, marker=marker, )) print( f"\nsessions marked with {selected_color}*{reset} are selected, sessions marked" f" with {skipped_color}-{reset} are skipped.")