diff options
Diffstat (limited to 'tests/test_build_applehelp.py')
-rw-r--r-- | tests/test_build_applehelp.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/test_build_applehelp.py b/tests/test_build_applehelp.py new file mode 100644 index 000000000..163cc86e3 --- /dev/null +++ b/tests/test_build_applehelp.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +""" + test_build_applehelp + ~~~~~~~~~~~~~~~~~~~~ + + Test the Apple Help builder and check its output. We don't need to + test the HTML itself; that's already handled by + :file:`test_build_html.py`. + + :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +import os +import plistlib + +from util import with_app +from path import path + +# Use plistlib.load in 3.4 and above +try: + read_plist = plistlib.load +except AttributeError: + read_plist = plistlib.readPlist + + +def check_structure(outdir): + contentsdir = outdir / 'Contents' + assert contentsdir.isdir() + assert (contentsdir / 'Info.plist').isfile() + + with open(contentsdir / 'Info.plist', 'rb') as f: + plist = read_plist(f) + assert plist + assert len(plist) + assert plist.get('CFBundleIdentifier', None) == 'org.sphinx-doc.Sphinx.help' + + assert (contentsdir / 'Resources').isdir() + assert (contentsdir / 'Resources' / 'en.lproj').isdir() + + +def check_localization(outdir): + lprojdir = outdir / 'Contents' / 'Resources' / 'en.lproj' + assert (lprojdir / 'localized.txt').isfile() + + +@with_app(buildername='applehelp') +def test_applehelp_output(app, status, warning): + app.builder.build_all() + + # Have to use bundle_path, not outdir, because we alter the latter + # to point to the lproj directory so that the HTML arrives in the + # correct location. + bundle_path = path(app.builder.bundle_path) + check_structure(bundle_path) + check_localization(bundle_path) |