summaryrefslogtreecommitdiff
path: root/tests/test_build_applehelp.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_build_applehelp.py')
-rw-r--r--tests/test_build_applehelp.py56
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)