From 38008762a2bbfe93adaa612bd5e2e9dacfba2554 Mon Sep 17 00:00:00 2001 From: Robpol86 Date: Mon, 22 Aug 2016 14:20:09 -0700 Subject: [PATCH] Adding banner message feature. Adding CLI options, Sphinx context variables, etc for displaying banner messages on non-latest versions. Fixes https://github.com/Robpol86/sphinxcontrib-versioning/issues/13 --- README.rst | 7 + docs/banner.rst | 30 ++++ docs/conf.py | 3 +- docs/context.rst | 30 ++++ docs/index.rst | 1 + .../sphinx_rtd_theme_banner_dev.png | Bin 0 -> 56480 bytes .../sphinx_rtd_theme_banner_nourl.png | Bin 0 -> 52273 bytes .../sphinx_rtd_theme_banner_old.png | Bin 0 -> 54514 bytes docs/settings.rst | 46 ++++++ setup.py | 7 +- sphinxcontrib/versioning/__main__.py | 54 ++++++- sphinxcontrib/versioning/_static/banner.css | 41 +++++ .../versioning/_templates/banner.html | 31 ++++ .../versioning/_templates/layout.html | 8 + sphinxcontrib/versioning/lib.py | 4 + sphinxcontrib/versioning/sphinx_.py | 27 +++- tests/conftest.py | 24 +++ tests/test__main__/test_arguments.py | 18 ++- .../test__main__/test_main_build_scenarios.py | 45 ++++++ tests/test_lib.py | 5 + tests/test_routines/test_build_all.py | 149 +++++++++++++++++- tests/test_sphinx/test_build.py | 2 +- tests/test_sphinx/test_themes.py | 25 ++- 23 files changed, 541 insertions(+), 16 deletions(-) create mode 100644 docs/banner.rst create mode 100644 docs/screenshots/sphinx_rtd_theme_banner_dev.png create mode 100644 docs/screenshots/sphinx_rtd_theme_banner_nourl.png create mode 100644 docs/screenshots/sphinx_rtd_theme_banner_old.png create mode 100644 sphinxcontrib/versioning/_static/banner.css create mode 100644 sphinxcontrib/versioning/_templates/banner.html create mode 100644 sphinxcontrib/versioning/_templates/layout.html diff --git a/README.rst b/README.rst index 82520211e..5d7dcce9d 100644 --- a/README.rst +++ b/README.rst @@ -48,13 +48,20 @@ Unreleased ---------- Added + * Option to enable warning banner in old/development versions. Similar to Jinja2's documentation. + * Command line options: ``--banner-greatest-tag`` ``--banner-recent-tag`` ``--show-banner`` ``--banner-main-ref`` * Jinja2 context functions: ``vhasdoc()`` ``vpathto()`` + * Jinja2 context variables: ``scv_show_banner`` ``scv_banner_greatest_tag`` ``scv_banner_main_ref_is_branch`` + ``scv_banner_main_ref_is_tag`` ``scv_banner_main_version`` ``scv_banner_recent_tag`` Changed * Root ref will also be built in its own directory like other versions. All URLs to root ref will point to the one in that directory instead of the root. More info: https://github.com/Robpol86/sphinxcontrib-versioning/issues/15 * Renamed Jinja2 context variable ``scv_is_root_ref`` to ``scv_is_root``. +Fixed + * https://github.com/Robpol86/sphinxcontrib-versioning/issues/13 + Removed * Jinja2 context variables: ``scv_root_ref_is_branch`` ``scv_root_ref_is_tag`` diff --git a/docs/banner.rst b/docs/banner.rst new file mode 100644 index 000000000..6e2cc8dda --- /dev/null +++ b/docs/banner.rst @@ -0,0 +1,30 @@ +.. _banner: + +============== +Banner Message +============== + +Banner messages can be displayed at the top of every document informing users that they are currently viewing either old +or the development version of the project's documentation, with the exception of the :option:`--banner-main-ref`. This +feature is inspired by banner on the `Jinja2 documentation `_. + +The banner feature is disabled by default. It can be enabled with the :option:`--show-banner` setting. + +.. figure:: screenshots/sphinx_rtd_theme_banner_dev.png + :target: _images/sphinx_rtd_theme_banner_dev.png + + The message displayed when users are viewing docs from a branch and the :option:`--banner-main-ref` is a tag. The + entire banner is a link that sends users to the latest version of the current page if it exists there. + +.. figure:: screenshots/sphinx_rtd_theme_banner_old.png + :target: _images/sphinx_rtd_theme_banner_old.png + + The message displayed when users are viewing docs from a tag and the :option:`--banner-main-ref` is a tag. Like the + message above this one links users to the latest version of the current page. + +.. figure:: screenshots/sphinx_rtd_theme_banner_nourl.png + :target: _images/sphinx_rtd_theme_banner_nourl.png + + An example of a banner message from a page that does not exist in the :option:`--banner-main-ref` version. Since + there is no page to link to this is just text informing the user that they're viewing the development version of the + docs. diff --git a/docs/conf.py b/docs/conf.py index fc86668b2..8a3c68cf8 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -37,6 +37,7 @@ googleanalytics_id = 'UA-82627369-1' # SCVersioning. -scv_greatest_tag = True +scv_banner_greatest_tag = True scv_grm_exclude = ('.gitignore', '.nojekyll', 'README.rst') +scv_show_banner = True scv_sort = ('semver', 'time') diff --git a/docs/context.rst b/docs/context.rst index 08223a496..c160580ac 100644 --- a/docs/context.rst +++ b/docs/context.rst @@ -84,6 +84,36 @@ Functions Go to master for the latest docs. {% endif %} +Banner Variables +================ + +These variables are exposed in the Jinja2 context to facilitate displaying the banner message and deciding which message +to display. + +.. attribute:: scv_banner_greatest_tag + + A boolean set to True if :option:`--banner-greatest-tag` is used. + +.. attribute:: scv_banner_main_ref_is_branch + + A boolean set to True if the banner main ref is a branch. + +.. attribute:: scv_banner_main_ref_is_tag + + A boolean set to True if the banner main ref is a tag. + +.. attribute:: scv_banner_main_version + + A string, the value of :option:`--banner-main-ref`. + +.. attribute:: scv_banner_recent_tag + + A boolean set to True if :option:`--banner-recent-tag` is used. + +.. attribute:: scv_show_banner + + A boolean set to True if :option:`--show-banner` is used. + Other Variables =============== diff --git a/docs/index.rst b/docs/index.rst index 442415549..1650f7669 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -39,6 +39,7 @@ Project Links install tutorial + banner settings context themes diff --git a/docs/screenshots/sphinx_rtd_theme_banner_dev.png b/docs/screenshots/sphinx_rtd_theme_banner_dev.png new file mode 100644 index 0000000000000000000000000000000000000000..b2db91f43665c5d00a7b52d9ef02474f4d3d390d GIT binary patch literal 56480 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 ZPnaF=V@&($AAt+!^GMqWT&ZdO`v06&!R`P6 literal 0 HcmV?d00001 diff --git a/docs/screenshots/sphinx_rtd_theme_banner_nourl.png b/docs/screenshots/sphinx_rtd_theme_banner_nourl.png new file mode 100644 index 0000000000000000000000000000000000000000..212aac27d23d285ad1e7db91c8fd2e4867d76d46 GIT binary patch literal 52273 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

bfU3jrR1S0Cv29R& zzfXaV?*Mbg(;3N$ZZ7sF9*`|bRlSy`4&FA%r#XV5*D&X!_}VpvJtP%)cpcQ2-&@a00$TI_ zaU6b&!QZeX!UzvN(F9xuPom&^e_vl;MD|_%R>P@3KGV!6n^AdmD15fqA!;eBr==r2 zS8U%hP@r9-yi3i(rd=e^?CJN-#sp}Z-pcq;o1{RwPo}t~0u`!gi>OqC!a;!;ds}Sq zsmg7Yl_rH1J0Ir6^Mw0Mq}ACQG@yd3Y0T>~sS++Z9A6_bSuIDbkxhC%`>JCsS#=F? zEx+KVS{meUNeq|uXFEte$Gup-oE7laUPfyDF^kIuIPH4zS+<#u$7($pMiI1YE5I{z zx^`st=PfcPYE$^Ahq!}l*a&-_!Q4$4Ni>CW4bvmi)k8Zy+{M50fr_q+s=h<-tp{mP z?;Dyt%ljIfhXZ8S2hkq{EdNqa UuIdfLySJCLgo1dLs8Qhm0gkSDjsO4v literal 0 HcmV?d00001 diff --git a/docs/screenshots/sphinx_rtd_theme_banner_old.png b/docs/screenshots/sphinx_rtd_theme_banner_old.png new file mode 100644 index 0000000000000000000000000000000000000000..285487413c1b26b47c005b99b04de80b2c42b79f GIT binary patch literal 54514 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 literal 0 HcmV?d00001 diff --git a/docs/settings.rst b/docs/settings.rst index e7116da60..202bf1fe8 100644 --- a/docs/settings.rst +++ b/docs/settings.rst @@ -124,6 +124,52 @@ Options These options are available for the build sub command: +.. option:: -a, --banner-greatest-tag, scv_banner_greatest_tag + + Override banner-main-ref to be the tag with the highest version number. If no tags have docs then this option is + ignored and :option:`--banner-main-ref` is used. + + This setting may also be specified in your conf.py file. It must be a boolean: + + .. code-block:: python + + scv_banner_greatest_tag = True + +.. option:: -A, --banner-recent-tag, scv_banner_recent_tag + + Override banner-main-ref to be the most recent committed tag. If no tags have docs then this option is ignored and + :option:`--banner-main-ref` is used. + + This setting may also be specified in your conf.py file. It must be a boolean: + + .. code-block:: python + + scv_banner_recent_tag = True + +.. option:: -b, --show-banner, scv_show_banner + + Show a warning banner. Enables the :ref:`banner` feature. + + This setting may also be specified in your conf.py file. It must be a boolean: + + .. code-block:: python + + scv_show_banner = True + +.. option:: -B , --banner-main-ref , scv_banner_main_ref + + The branch/tag considered to be the latest/current version. The banner will not be displayed in this ref, only in + all others. Default is **master**. + + If the banner-main-ref does not exist or does not have docs the banner will be disabled completely in all versions. + Docs will continue to be built. + + This setting may also be specified in your conf.py file. It must be a string: + + .. code-block:: python + + scv_banner_main_ref = 'feature_branch' + .. option:: -i, --invert, scv_invert Invert the order of branches/tags displayed in the sidebars in generated HTML documents. The default order is diff --git a/setup.py b/setup.py index 5f4f41c0a..d5c60918f 100755 --- a/setup.py +++ b/setup.py @@ -100,7 +100,12 @@ def run(cls): license=LICENSE, long_description=readme(), name=NAME, - package_data={'': [os.path.join('_templates', 'versions.html')]}, + package_data={'': [ + os.path.join('_static', 'banner.css'), + os.path.join('_templates', 'banner.html'), + os.path.join('_templates', 'layout.html'), + os.path.join('_templates', 'versions.html'), + ]}, packages=['sphinxcontrib', os.path.join('sphinxcontrib', 'versioning')], url='https://github.com/Robpol86/' + NAME, version=VERSION, diff --git a/sphinxcontrib/versioning/__main__.py b/sphinxcontrib/versioning/__main__.py index b6a4a7a5d..395ce08b5 100755 --- a/sphinxcontrib/versioning/__main__.py +++ b/sphinxcontrib/versioning/__main__.py @@ -181,6 +181,13 @@ def build_options(func): :return: The wrapped function. :rtype: function """ + func = click.option('-a', '--banner-greatest-tag', is_flag=True, + help='Override banner-main-ref to be the tag with the highest version number.')(func) + func = click.option('-A', '--banner-recent-tag', is_flag=True, + help='Override banner-main-ref to be the most recent committed tag.')(func) + func = click.option('-b', '--show-banner', help='Show a warning banner.', is_flag=True)(func) + func = click.option('-B', '--banner-main-ref', + help="Don't show banner on this ref and point banner URLs to this ref. Default master.")(func) func = click.option('-i', '--invert', help='Invert/reverse order of versions.', is_flag=True)(func) func = click.option('-p', '--priority', type=click.Choice(('branches', 'tags')), help="Group these kinds of versions at the top (for themes that don't separate them).")(func) @@ -200,6 +207,33 @@ def build_options(func): return func +def override_root_main_ref(config, remotes, banner): + """Override root_ref or banner_main_ref with tags in config if user requested. + + :param sphinxcontrib.versioning.lib.Config config: Runtime configuration. + :param iter remotes: List of dicts from Versions.remotes. + :param bool banner: Evaluate banner main ref instead of root ref. + + :return: If root/main ref exists. + :rtype: bool + """ + log = logging.getLogger(__name__) + greatest_tag = config.banner_greatest_tag if banner else config.greatest_tag + recent_tag = config.banner_recent_tag if banner else config.recent_tag + + if greatest_tag or recent_tag: + candidates = [r for r in remotes if r['kind'] == 'tags'] + if candidates: + multi_sort(candidates, ['semver' if greatest_tag else 'time']) + config.update({'banner_main_ref' if banner else 'root_ref': candidates[0]['name']}, overwrite=True) + else: + flag = '--banner-main-ref' if banner else '--root-ref' + log.warning('No git tags with docs found in remote. Falling back to %s value.', flag) + + ref = config.banner_main_ref if banner else config.root_ref + return ref in [r['name'] for r in remotes] + + @cli.command(cls=ClickCommand) @build_options @click.argument('REL_SOURCE', nargs=-1, required=True) @@ -249,18 +283,22 @@ def build(config, rel_source, destination, **options): ) # Get root ref. - if config.greatest_tag or config.recent_tag: - candidates = [r for r in versions.remotes if r['kind'] == 'tags'] - if candidates: - multi_sort(candidates, ['semver' if config.greatest_tag else 'time']) - config.update(dict(root_ref=candidates[0]['name']), overwrite=True) - else: - log.warning('No git tags with docs found in remote. Falling back to --root-ref value.') - if config.root_ref not in [r[1] for r in remotes]: + if not override_root_main_ref(config, versions.remotes, False): log.error('Root ref %s not found in: %s', config.root_ref, ' '.join(r[1] for r in remotes)) raise HandledError log.info('Root ref is: %s', config.root_ref) + # Get banner main ref. + if not config.show_banner: + config.update(dict(banner_greatest_tag=False, banner_main_ref=None, banner_recent_tag=False), overwrite=True) + elif not override_root_main_ref(config, versions.remotes, True): + log.warning('Banner main ref %s not found in: %s', config.banner_main_ref, ' '.join(r[1] for r in remotes)) + log.warning('Disabling banner.') + config.update(dict(banner_greatest_tag=False, banner_main_ref=None, banner_recent_tag=False, show_banner=False), + overwrite=True) + else: + log.info('Banner main ref is: %s', config.banner_main_ref) + # Pre-build. log.info("Pre-running Sphinx to collect versions' master_doc and other info.") exported_root = pre_build(config.git_root, versions) diff --git a/sphinxcontrib/versioning/_static/banner.css b/sphinxcontrib/versioning/_static/banner.css new file mode 100644 index 000000000..e52e8d2ae --- /dev/null +++ b/sphinxcontrib/versioning/_static/banner.css @@ -0,0 +1,41 @@ +.scv-banner { + padding: 3px; + border-radius: 2px; + font-size: 80%; + text-align: center; + color: white; + background: #d40 linear-gradient(-45deg, + rgba(255, 255, 255, 0.2) 0%, + rgba(255, 255, 255, 0.2) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.2) 50%, + rgba(255, 255, 255, 0.2) 75%, + transparent 75%, + transparent + ); + background-size: 28px 28px; +} +.scv-banner > a { + color: white; +} + + +.scv-sphinx_rtd_theme { + background-color: #2980B9; +} + + +.scv-bizstyle { + background-color: #336699; +} + + +.scv-classic { + text-align: center !important; +} + + +.scv-traditional { + text-align: center !important; +} diff --git a/sphinxcontrib/versioning/_templates/banner.html b/sphinxcontrib/versioning/_templates/banner.html new file mode 100644 index 000000000..b3b51826c --- /dev/null +++ b/sphinxcontrib/versioning/_templates/banner.html @@ -0,0 +1,31 @@ +{# Set banner color via CSS. #} +{%- set banner_classes = 'scv-banner' %} +{%- if html_theme in ('sphinx_rtd_theme', 'bizstyle', 'classic', 'traditional') %} + {%- set banner_classes = banner_classes + ' scv-' + html_theme %} +{%- endif %} + +{# Set banner message. #} +{%- if scv_banner_main_version != current_version %} + {# Determine base message. #} + {%- if scv_is_branch %} + {%- set banner_message = 'Warning: This document is for the development version of %s.'|format(project) %} + {%- else %} + {%- set banner_message = 'Warning: This document is for an old version of %s.'|format(project) %} + {%- endif %} + {# Determine URL of main version. #} + {%- if vhasdoc(scv_banner_main_version) %} + {%- set banner_message = '' + banner_message + ' The %s version is %s.' %} + {%- if scv_banner_main_ref_is_tag %} + {%- set banner_message = banner_message|format(vpathto(scv_banner_main_version), 'latest', scv_banner_main_version) %} + {%- else %} + {%- set banner_message = banner_message|format(vpathto(scv_banner_main_version), 'main', scv_banner_main_version) %} + {%- endif %} + {%- endif %} +{%- endif %} + +{# Display banner. #} +{% block banner %} +{%- if banner_message %} +

+{%- endif %} +{% endblock %} diff --git a/sphinxcontrib/versioning/_templates/layout.html b/sphinxcontrib/versioning/_templates/layout.html new file mode 100644 index 000000000..13f7276c3 --- /dev/null +++ b/sphinxcontrib/versioning/_templates/layout.html @@ -0,0 +1,8 @@ +{# Import the theme's layout. #} +{% extends "!layout.html" %} + +{# Prepend banner to body. #} +{%- set body %} + {%- if scv_show_banner %}{%- include "banner.html" %}{% endif %} + {%- block body %}{% endblock %} {# Sphinx overrides body block without calling super(). #} +{% endset %} diff --git a/sphinxcontrib/versioning/lib.py b/sphinxcontrib/versioning/lib.py index 642a106a6..07827a3e4 100644 --- a/sphinxcontrib/versioning/lib.py +++ b/sphinxcontrib/versioning/lib.py @@ -19,13 +19,17 @@ def __init__(self): self._program_state = dict() # Booleans. + self.banner_greatest_tag = False + self.banner_recent_tag = False self.greatest_tag = False self.invert = False self.no_colors = False self.no_local_conf = False self.recent_tag = False + self.show_banner = False # Strings. + self.banner_main_ref = 'master' self.chdir = None self.git_root = None self.local_conf = None diff --git a/sphinxcontrib/versioning/sphinx_.py b/sphinxcontrib/versioning/sphinx_.py index f14454dc0..836f322b7 100644 --- a/sphinxcontrib/versioning/sphinx_.py +++ b/sphinxcontrib/versioning/sphinx_.py @@ -24,14 +24,22 @@ class EventHandlers(object): """Hold Sphinx event handlers as static or class methods. :ivar multiprocessing.queues.Queue ABORT_AFTER_READ: Communication channel to parent process. + :ivar bool BANNER_GREATEST_TAG: Banner URLs point to greatest/highest (semver) tag. + :ivar str BANNER_MAIN_VERSION: Banner URLs point to this remote name (from Versions.__getitem__()). + :ivar bool BANNER_RECENT_TAG: Banner URLs point to most recently committed tag. :ivar str CURRENT_VERSION: Current version being built. :ivar bool IS_ROOT: Value for context['scv_is_root']. + :ivar bool SHOW_BANNER: Display the banner. :ivar sphinxcontrib.versioning.versions.Versions VERSIONS: Versions class instance. """ ABORT_AFTER_READ = None + BANNER_GREATEST_TAG = False + BANNER_MAIN_VERSION = None + BANNER_RECENT_TAG = False CURRENT_VERSION = None IS_ROOT = False + SHOW_BANNER = False VERSIONS = None @staticmethod @@ -80,12 +88,18 @@ def html_page_context(cls, app, pagename, templatename, context, doctree): cls.VERSIONS.context = context versions = cls.VERSIONS this_remote = versions[cls.CURRENT_VERSION] + banner_main_remote = versions[cls.BANNER_MAIN_VERSION] if cls.SHOW_BANNER else None # Update Jinja2 context. context['bitbucket_version'] = cls.CURRENT_VERSION context['current_version'] = cls.CURRENT_VERSION context['github_version'] = cls.CURRENT_VERSION context['html_theme'] = app.config.html_theme + context['scv_banner_greatest_tag'] = cls.BANNER_GREATEST_TAG + context['scv_banner_main_ref_is_branch'] = banner_main_remote['kind'] == 'heads' if cls.SHOW_BANNER else None + context['scv_banner_main_ref_is_tag'] = banner_main_remote['kind'] == 'tags' if cls.SHOW_BANNER else None + context['scv_banner_main_version'] = banner_main_remote['name'] if cls.SHOW_BANNER else None + context['scv_banner_recent_tag'] = cls.BANNER_RECENT_TAG context['scv_is_branch'] = this_remote['kind'] == 'heads' context['scv_is_greatest_tag'] = this_remote == versions.greatest_tag_remote context['scv_is_recent_branch'] = this_remote == versions.recent_branch_remote @@ -93,6 +107,7 @@ def html_page_context(cls, app, pagename, templatename, context, doctree): context['scv_is_recent_tag'] = this_remote == versions.recent_tag_remote context['scv_is_root'] = cls.IS_ROOT context['scv_is_tag'] = this_remote['kind'] == 'tags' + context['scv_show_banner'] = cls.SHOW_BANNER context['versions'] = versions context['vhasdoc'] = versions.vhasdoc context['vpathto'] = versions.vpathto @@ -109,6 +124,10 @@ def setup(app): # Used internally. For rebuilding all pages when one or versions fail. app.add_config_value('sphinxcontrib_versioning_versions', SC_VERSIONING_VERSIONS, 'html') + # Needed for banner. + app.config.html_static_path.append(os.path.join(os.path.dirname(__file__), '_static')) + app.add_stylesheet('banner.css') + # Tell Sphinx which config values can be set by the user. for name, default in Config(): app.add_config_value('scv_{}'.format(name), default, 'html') @@ -137,15 +156,21 @@ def _build(argv, versions, current_name, is_root): :param str current_name: The ref name of the current version being built. :param bool is_root: Is this build in the web root? """ + config = Config.from_context() + # Patch. application.Config = ConfigInject + if config.show_banner: + EventHandlers.BANNER_GREATEST_TAG = config.banner_greatest_tag + EventHandlers.BANNER_MAIN_VERSION = config.banner_main_ref + EventHandlers.BANNER_RECENT_TAG = config.banner_recent_tag + EventHandlers.SHOW_BANNER = True EventHandlers.CURRENT_VERSION = current_name EventHandlers.IS_ROOT = is_root EventHandlers.VERSIONS = versions SC_VERSIONING_VERSIONS[:] = [p for r in versions.remotes for p in sorted(r.items()) if p[0] not in ('sha', 'date')] # Update argv. - config = Config.from_context() if config.verbose > 1: argv += ('-v',) * (config.verbose - 1) if config.no_colors: diff --git a/tests/conftest.py b/tests/conftest.py index 06519976b..a17d4ed68 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -7,6 +7,7 @@ from sphinxcontrib.versioning.git import run_command from sphinxcontrib.versioning.lib import Config +RE_BANNER = re.compile('>(?:)?Warning: This document is for ([^<]+).(?:)?

') RE_URLS = re.compile('
  • [^<]+
  • ') @@ -31,6 +32,29 @@ def run(): return lambda d, c: run_command(str(d), [str(i) for i in c]) +@pytest.fixture +def banner(): + """Verify banner in HTML file match expected.""" + def match(path, expected_url=None, expected_base=None): + """Assert equals and return file contents. + + :param py.path path: Path to file to read. + :param str expected_url: Expected URL in link. + :param str expected_base: Expected base message. + + :return: File contents. + :rtype: str + """ + contents = path.read() + actual = RE_BANNER.findall(contents) + if not expected_url and not expected_base: + assert not actual + else: + assert actual == [(expected_url, expected_base)] + return contents + return match + + @pytest.fixture def urls(): """Verify URLs in HTML file match expected.""" diff --git a/tests/test__main__/test_arguments.py b/tests/test__main__/test_arguments.py index df7bcc983..80126c56c 100644 --- a/tests/test__main__/test_arguments.py +++ b/tests/test__main__/test_arguments.py @@ -215,18 +215,22 @@ def test_sub_command_options(local_empty, push, source_cli, source_conf): # Setup source(s). if source_cli: - args += ['-itT', '-p', 'branches', '-r', 'feature', '-s', 'semver', '-w', 'master', '-W', '[0-9]'] + args += ['-aAbitT', '-B', 'x', '-p', 'branches', '-r', 'feature', '-s', 'semver', '-w', 'master', '-W', '[0-9]'] if push: args += ['-e' 'README.md'] if source_conf: local_empty.ensure('docs', 'contents.rst') local_empty.ensure('docs', 'conf.py').write( 'import re\n\n' + 'scv_banner_greatest_tag = True\n' + 'scv_banner_main_ref = "y"\n' + 'scv_banner_recent_tag = True\n' 'scv_greatest_tag = True\n' 'scv_invert = True\n' 'scv_priority = "tags"\n' 'scv_recent_tag = True\n' 'scv_root_ref = "other"\n' + 'scv_show_banner = True\n' 'scv_sort = ("alpha",)\n' 'scv_whitelist_branches = ("other",)\n' 'scv_whitelist_tags = re.compile("^[0-9]$")\n' @@ -239,33 +243,45 @@ def test_sub_command_options(local_empty, push, source_cli, source_conf): # Verify. if source_cli: + assert config.banner_greatest_tag is True + assert config.banner_main_ref == 'x' + assert config.banner_recent_tag is True assert config.greatest_tag is True assert config.invert is True assert config.priority == 'branches' assert config.recent_tag is True assert config.root_ref == 'feature' + assert config.show_banner is True assert config.sort == ('semver',) assert config.whitelist_branches == ('master',) assert config.whitelist_tags == ('[0-9]',) if push: assert config.grm_exclude == ('README.md',) elif source_conf: + assert config.banner_greatest_tag is True + assert config.banner_main_ref == 'y' + assert config.banner_recent_tag is True assert config.greatest_tag is True assert config.invert is True assert config.priority == 'tags' assert config.recent_tag is True assert config.root_ref == 'other' + assert config.show_banner is True assert config.sort == ('alpha',) assert config.whitelist_branches == ('other',) assert config.whitelist_tags.pattern == '^[0-9]$' if push: assert config.grm_exclude == ('README.rst',) else: + assert config.banner_greatest_tag is False + assert config.banner_main_ref == 'master' + assert config.banner_recent_tag is False assert config.greatest_tag is False assert config.invert is False assert config.priority is None assert config.recent_tag is False assert config.root_ref == 'master' + assert config.show_banner is False assert config.sort == tuple() assert config.whitelist_branches == tuple() assert config.whitelist_tags == tuple() diff --git a/tests/test__main__/test_main_build_scenarios.py b/tests/test__main__/test_main_build_scenarios.py index 8a54f0dd2..274a04891 100644 --- a/tests/test__main__/test_main_build_scenarios.py +++ b/tests/test__main__/test_main_build_scenarios.py @@ -555,6 +555,51 @@ def test_whitelisting(local_docs, run, urls): ]) +@pytest.mark.parametrize('disable_banner', [False, True]) +def test_banner(banner, local_docs, run, disable_banner): + """Test the banner. + + :param banner: conftest fixture. + :param local_docs: conftest fixture. + :param run: conftest fixture. + :param bool disable_banner: Cause banner to be disabled. + """ + run(local_docs, ['git', 'tag', 'snapshot-01']) + local_docs.join('conf.py').write('project = "MyProject"\n', mode='a') + run(local_docs, ['git', 'commit', '-am', 'Setting project name.']) + run(local_docs, ['git', 'checkout', '-b', 'stable', 'master']) + run(local_docs, ['git', 'checkout', 'master']) + local_docs.join('conf.py').write('author = "me"\n', mode='a') + run(local_docs, ['git', 'commit', '-am', 'Setting author name.']) + run(local_docs, ['git', 'push', 'origin', 'master', 'stable', 'snapshot-01']) + + # Run. + destination = local_docs.ensure_dir('..', 'destination') + args = ['--show-banner', '--banner-main-ref', 'unknown' if disable_banner else 'stable'] + output = run(local_docs, ['sphinx-versioning', 'build', '.', str(destination)] + args) + assert 'Traceback' not in output + + # Handle no banner. + if disable_banner: + assert 'Disabling banner.' in output + assert 'Banner main ref is' not in output + banner(destination.join('contents.html'), None) + return + assert 'Disabling banner.' not in output + assert 'Banner main ref is: stable' in output + + # Check banner. + banner(destination.join('stable', 'contents.html'), None) # No banner in main ref. + for subdir in (False, True): + banner( + destination.join('master' if subdir else '', 'contents.html'), + '{}stable/contents.html'.format('../' if subdir else ''), + 'the development version of MyProject. The main version is stable', + ) + banner(destination.join('snapshot-01', 'contents.html'), '../stable/contents.html', + 'an old version of Python. The main version is stable') + + def test_error_bad_path(tmpdir, run): """Test handling of bad paths. diff --git a/tests/test_lib.py b/tests/test_lib.py index 7504e0cfe..41e4f5550 100644 --- a/tests/test_lib.py +++ b/tests/test_lib.py @@ -11,6 +11,7 @@ def test_config(): config.update(dict(invert=True, overflow=('-D', 'key=value'), root_ref='master', verbose=1)) # Verify values. + assert config.banner_main_ref == 'master' assert config.greatest_tag is False assert config.invert is True assert config.overflow == ('-D', 'key=value') @@ -22,6 +23,9 @@ def test_config(): # Verify iter. actual = sorted(config) expected = [ + ('banner_greatest_tag', False), + ('banner_main_ref', 'master'), + ('banner_recent_tag', False), ('chdir', None), ('git_root', None), ('greatest_tag', False), @@ -34,6 +38,7 @@ def test_config(): ('priority', None), ('recent_tag', False), ('root_ref', 'master'), + ('show_banner', False), ('sort', tuple()), ('verbose', 1), ('whitelist_branches', tuple()), diff --git a/tests/test_routines/test_build_all.py b/tests/test_routines/test_build_all.py index 4e9f25011..ccdde81d7 100644 --- a/tests/test_routines/test_build_all.py +++ b/tests/test_routines/test_build_all.py @@ -47,7 +47,7 @@ def test_multiple(tmpdir, config, local_docs, run, urls, triple, parallel): """With two or three versions. :param tmpdir: pytest fixture. - :param sphinxcontrib.versioning.lib.Config config: conftest fixture. + :param config: conftest fixture. :param local_docs: conftest fixture. :param run: conftest fixture. :param urls: conftest fixture. @@ -124,12 +124,157 @@ def test_multiple(tmpdir, config, local_docs, run, urls, triple, parallel): ]) +@pytest.mark.parametrize('show_banner', [False, True]) +def test_banner_branch(tmpdir, banner, config, local_docs, run, show_banner): + """Test banner messages without tags. + + :param tmpdir: pytest fixture. + :param banner: conftest fixture. + :param config: conftest fixture. + :param local_docs: conftest fixture. + :param run: conftest fixture. + :param bool show_banner: Show the banner. + """ + run(local_docs, ['git', 'checkout', '-b', 'old_build', 'master']) + run(local_docs, ['git', 'checkout', 'master']) + run(local_docs, ['git', 'rm', 'two.rst']) + local_docs.join('contents.rst').write( + 'Test\n' + '====\n' + '\n' + 'Sample documentation.\n' + '\n' + '.. toctree::\n' + ' one\n' + ) + run(local_docs, ['git', 'commit', '-am', 'Deleted.']) + run(local_docs, ['git', 'push', 'origin', 'master', 'old_build']) + + config.show_banner = show_banner + versions = Versions(gather_git_info(str(local_docs), ['conf.py'], tuple(), tuple())) + versions['master']['found_docs'] = ('contents', 'one') + versions['old_build']['found_docs'] = ('contents', 'one', 'two') + + # Export. + exported_root = tmpdir.ensure_dir('exported_root') + export(str(local_docs), versions['master']['sha'], str(exported_root.join(versions['master']['sha']))) + export(str(local_docs), versions['old_build']['sha'], str(exported_root.join(versions['old_build']['sha']))) + + # Run and verify files. + dst = tmpdir.ensure_dir('destination') + build_all(str(exported_root), str(dst), versions) + actual = sorted(f.relto(dst) for f in dst.visit(lambda p: p.basename in ('contents.html', 'one.html', 'two.html'))) + expected = [ + 'contents.html', 'master/contents.html', 'master/one.html', + 'old_build/contents.html', 'old_build/one.html', 'old_build/two.html', 'one.html' + ] + assert actual == expected + + # Verify no banner. + if not show_banner: + for path in expected: + banner(dst.join(path), None) + return + for path in ('contents.html', 'master/contents.html', 'master/one.html', 'one.html'): + banner(dst.join(path), None) + + # Verify banner. + banner(dst.join('old_build', 'contents.html'), '../master/contents.html', + 'the development version of Python. The main version is master') + banner(dst.join('old_build', 'one.html'), '../master/one.html', + 'the development version of Python. The main version is master') + banner(dst.join('old_build', 'two.html'), '', 'the development version of Python') + + +@pytest.mark.parametrize('recent', [False, True]) +def test_banner_tag(tmpdir, banner, config, local_docs, run, recent): + """Test banner messages with tags. + + :param tmpdir: pytest fixture. + :param banner: conftest fixture. + :param config: conftest fixture. + :param local_docs: conftest fixture. + :param run: conftest fixture. + :param bool recent: --banner-recent-tag instead of --banner-greatest-tag. + """ + old, new = ('201611', '201612') if recent else ('v1.0.0', 'v2.0.0') + run(local_docs, ['git', 'tag', old]) + run(local_docs, ['git', 'mv', 'two.rst', 'too.rst']) + local_docs.join('contents.rst').write( + 'Test\n' + '====\n' + '\n' + 'Sample documentation.\n' + '\n' + '.. toctree::\n' + ' one\n' + ' too\n' + ) + local_docs.join('too.rst').write( + '.. _too:\n' + '\n' + 'Too\n' + '===\n' + '\n' + 'Sub page documentation 2 too.\n' + ) + run(local_docs, ['git', 'commit', '-am', 'Deleted.']) + run(local_docs, ['git', 'tag', new]) + run(local_docs, ['git', 'push', 'origin', 'master', old, new]) + + config.banner_greatest_tag = not recent + config.banner_main_ref = new + config.banner_recent_tag = recent + config.show_banner = True + versions = Versions(gather_git_info(str(local_docs), ['conf.py'], tuple(), tuple())) + versions['master']['found_docs'] = ('contents', 'one', 'too') + versions[new]['found_docs'] = ('contents', 'one', 'too') + versions[old]['found_docs'] = ('contents', 'one', 'two') + + # Export. + exported_root = tmpdir.ensure_dir('exported_root') + export(str(local_docs), versions['master']['sha'], str(exported_root.join(versions['master']['sha']))) + export(str(local_docs), versions[old]['sha'], str(exported_root.join(versions[old]['sha']))) + + # Run and verify files. + dst = tmpdir.ensure_dir('destination') + build_all(str(exported_root), str(dst), versions) + actual = sorted(f.relto(dst) + for f in dst.visit(lambda p: p.basename in ('contents.html', 'one.html', 'two.html', 'too.html'))) + expected = ['contents.html', 'master/contents.html', 'master/one.html', 'master/too.html', 'one.html', 'too.html'] + if recent: + expected = ['201612/contents.html', '201612/one.html', '201612/too.html'] + expected + expected = ['201611/contents.html', '201611/one.html', '201611/two.html'] + expected + else: + expected += ['v1.0.0/contents.html', 'v1.0.0/one.html', 'v1.0.0/two.html'] + expected += ['v2.0.0/contents.html', 'v2.0.0/one.html', 'v2.0.0/too.html'] + assert actual == expected + + # Verify master banner. + for page in ('contents', 'one', 'too'): + banner(dst.join('{}.html'.format(page)), '{new}/{page}.html'.format(new=new, page=page), + 'the development version of Python. The latest version is {}'.format(new)) + banner(dst.join('master', '{}.html'.format(page)), '../{new}/{page}.html'.format(new=new, page=page), + 'the development version of Python. The latest version is {}'.format(new)) + + # Verify old tag banner. + banner( + dst.join(old, 'contents.html'), '../{}/contents.html'.format(new), + 'an old version of Python. The latest version is {}'.format(new) + ) + banner( + dst.join(old, 'one.html'), '../{}/one.html'.format(new), + 'an old version of Python. The latest version is {}'.format(new) + ) + banner(dst.join(old, 'two.html'), '', 'an old version of Python') + + @pytest.mark.parametrize('parallel', [False, True]) def test_error(tmpdir, config, local_docs, run, urls, parallel): """Test with a bad root ref. Also test skipping bad non-root refs. :param tmpdir: pytest fixture. - :param sphinxcontrib.versioning.lib.Config config: conftest fixture. + :param config: conftest fixture. :param local_docs: conftest fixture. :param run: conftest fixture. :param urls: conftest fixture. diff --git a/tests/test_sphinx/test_build.py b/tests/test_sphinx/test_build.py index 67a687cad..4dae17c65 100644 --- a/tests/test_sphinx/test_build.py +++ b/tests/test_sphinx/test_build.py @@ -159,7 +159,7 @@ def test_subdirs(tmpdir, local_docs, urls): target = tmpdir.ensure_dir('target') versions = Versions([('', 'master', 'heads', 1, 'conf.py'), ('', 'feature', 'heads', 2, 'conf.py')]) versions['master']['found_docs'] = ('contents',) - versions['master']['found_docs'] = ('contents',) + versions['feature']['found_docs'] = ('contents',) for i in range(1, 6): path = ['subdir'] * i + ['sub.rst'] diff --git a/tests/test_sphinx/test_themes.py b/tests/test_sphinx/test_themes.py index 417423210..ca6f6afdb 100644 --- a/tests/test_sphinx/test_themes.py +++ b/tests/test_sphinx/test_themes.py @@ -89,7 +89,7 @@ def test_sphinx_rtd_theme(tmpdir, config, local_docs): # Build tags only. target_t = tmpdir.ensure_dir('target_t') versions = Versions([('', 'v1.0.0', 'tags', 3, 'conf.py'), ('', 'v1.2.0', 'tags', 4, 'conf.py')], sort=['semver']) - config.root_ref = 'v1.2.0' + config.root_ref = config.banner_main_ref = 'v1.2.0' build(str(local_docs), str(target_t), versions, 'v1.2.0', True) contents = target_t.join('contents.html').read() assert '
    Branches
    ' not in contents @@ -106,3 +106,26 @@ def test_sphinx_rtd_theme(tmpdir, config, local_docs): contents = target_bt.join('contents.html').read() assert '
    Branches
    ' in contents assert '
    Tags
    ' in contents + + +@pytest.mark.parametrize('theme', THEMES) +def test_banner(tmpdir, banner, config, local_docs, theme): + """Test banner messages. + + :param tmpdir: pytest fixture. + :param banner: conftest fixture. + :param sphinxcontrib.versioning.lib.Config config: conftest fixture. + :param local_docs: conftest fixture. + :param str theme: Theme name to use. + """ + config.overflow = ('-D', 'html_theme=' + theme) + config.show_banner = True + target = tmpdir.ensure_dir('target') + versions = Versions([('', 'master', 'heads', 1, 'conf.py'), ('', 'feature', 'heads', 2, 'conf.py')]) + versions['master']['found_docs'] = ('contents',) + versions['feature']['found_docs'] = ('contents',) + + build(str(local_docs), str(target), versions, 'feature', False) + + banner(target.join('contents.html'), '../master/contents.html', + 'the development version of Python. The main version is master')