summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimotheus Kampik <timotheus.kampik@signavio.com>2016-05-02 07:54:44 +0200
committerTimotheus Kampik <timotheus.kampik@signavio.com>2016-05-02 07:54:44 +0200
commit6f6b28d3e69425d61678c09cf82ee225a7b75d83 (patch)
tree605d7cc81b1b9e8bacf931ac9f4087d8188112e4
parenta8dabf334d24f13afd37eb9c2f32b5a14cd125ef (diff)
downloadsphinx-git-6f6b28d3e69425d61678c09cf82ee225a7b75d83.tar.gz
refactor, add more tests #2516
-rw-r--r--AUTHORS2
-rw-r--r--sphinx/search/__init__.py14
-rw-r--r--tests/roots/test-search-de/conf.py3
-rw-r--r--tests/roots/test-search-de/index.rst8
-rw-r--r--tests/roots/test-search/conf.py8
-rw-r--r--tests/roots/test-search/index.rst8
-rw-r--r--tests/test_search.py18
7 files changed, 38 insertions, 23 deletions
diff --git a/AUTHORS b/AUTHORS
index e1e4e8a59..dc8e82482 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -29,7 +29,7 @@ Other contributors, listed alphabetically, are:
* Horst Gutmann -- internationalization support
* Martin Hans -- autodoc improvements
* Doug Hellmann -- graphviz improvements
-* Timotheus Kampik - JS enhancements, stop words language fix
+* Timotheus Kampik - JS theme & search enhancements
* Takeshi Komiya -- numref feature
* Dave Kuhlman -- original LaTeX writer
* Blaise Laflamme -- pyramid theme
diff --git a/sphinx/search/__init__.py b/sphinx/search/__init__.py
index 83da9e654..defcad8a7 100644
--- a/sphinx/search/__init__.py
+++ b/sphinx/search/__init__.py
@@ -182,11 +182,10 @@ class WordCollector(NodeVisitor):
def is_meta_keywords(self, node, nodetype):
is_meta = str(nodetype) == '<class \'sphinx.addnodes.meta\'>'
- if is_meta:
- language_match = re.search(r'lang\=\"(.*?)\"', str(node))
- is_correct_language =\
- language_match == None \
- or self.lang.lang == language_match.group(1)
+ if is_meta and node.get('name', None) == 'keywords':
+ node_lang = node.get('lang', None)
+ is_correct_language = node_lang == None \
+ or node_lang == self.lang.lang
return is_meta and is_correct_language
else:
return False
@@ -209,8 +208,9 @@ class WordCollector(NodeVisitor):
elif issubclass(nodetype, title):
self.found_title_words.extend(self.lang.split(node.astext()))
elif self.is_meta_keywords(node, nodetype):
- keywords = re.search(r'content\=\"(.*?)\"', str(node)).group(1)
- self.found_words.extend(self.lang.split(keywords))
+ keywords = node['content']
+ keywords = [keyword.strip() for keyword in keywords.split(',')]
+ self.found_words.extend(keywords)
class IndexBuilder(object):
diff --git a/tests/roots/test-search-de/conf.py b/tests/roots/test-search-de/conf.py
new file mode 100644
index 000000000..3c902c292
--- /dev/null
+++ b/tests/roots/test-search-de/conf.py
@@ -0,0 +1,3 @@
+master_doc = 'index'
+exclude_patterns = ['_build']
+html_search_language = 'de'
diff --git a/tests/roots/test-search-de/index.rst b/tests/roots/test-search-de/index.rst
new file mode 100644
index 000000000..57a9216bb
--- /dev/null
+++ b/tests/roots/test-search-de/index.rst
@@ -0,0 +1,8 @@
+meta keywords
+=============
+
+.. meta::
+ :keywords lang=de: findthiskey, thistoo
+ :keywords: thisonetoo
+ :keywords lang=en: findnotthiskey
+ :description: thisnoteither
diff --git a/tests/roots/test-search/conf.py b/tests/roots/test-search/conf.py
index 50088e3df..38b8b28c5 100644
--- a/tests/roots/test-search/conf.py
+++ b/tests/roots/test-search/conf.py
@@ -1,11 +1,3 @@
-# -*- coding: utf-8 -*-
-
-import sys
-import os
-
-sys.path.insert(0, os.path.abspath('.'))
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode']
master_doc = 'index'
exclude_patterns = ['_build']
-
html_search_language = 'en'
diff --git a/tests/roots/test-search/index.rst b/tests/roots/test-search/index.rst
index f08a3c1e8..930789c79 100644
--- a/tests/roots/test-search/index.rst
+++ b/tests/roots/test-search/index.rst
@@ -2,7 +2,7 @@ meta keywords
=============
.. meta::
- :keywords lang=en: findthiskey
- :keywords lang=de: findnotthiskey
- :keywords: thisonetoo
-
+ :keywords lang=en: findthiskey, thistoo
+ :keywords: thisonetoo
+ :keywords lang=de: findnotthiskey
+ :description: thisnoteither
diff --git a/tests/test_search.py b/tests/test_search.py
index 143a8a273..033e7ccb4 100644
--- a/tests/test_search.py
+++ b/tests/test_search.py
@@ -53,10 +53,22 @@ def test_objects_are_escaped(app, status, warning):
index = jsdump.loads(searchindex[16:-2])
assert 'n::Array&lt;T, d&gt;' in index.get('objects').get('') # n::Array<T,d> is escaped
+def assert_lang_agnostic_key_words(searchindex):
+ assert 'findnotthiskey' not in searchindex
+ assert 'thisnoteith' not in searchindex
+ assert 'thistoo' in searchindex
+ assert 'thisonetoo' in searchindex
+
@with_app(testroot='search')
-def test_meta_keys_are_handled_for_language(app, status, warning):
+def test_meta_keys_are_handled_for_language_en(app, status, warning):
app.builder.build_all()
searchindex = (app.outdir / 'searchindex.js').text()
- assert 'findnotthiskey' not in searchindex
+ assert_lang_agnostic_key_words(searchindex)
assert 'findthiskei' in searchindex
- assert 'thisonetoo' in searchindex \ No newline at end of file
+
+@with_app(testroot='search-de')
+def test_meta_keys_are_handled_for_language_de(app, status, warning):
+ app.builder.build_all()
+ searchindex = (app.outdir / 'searchindex.js').text()
+ assert_lang_agnostic_key_words(searchindex)
+ assert 'findthiskey' in searchindex \ No newline at end of file