diff options
author | Timotheus Kampik <timotheus.kampik@signavio.com> | 2016-05-02 07:54:44 +0200 |
---|---|---|
committer | Timotheus Kampik <timotheus.kampik@signavio.com> | 2016-05-02 07:54:44 +0200 |
commit | 6f6b28d3e69425d61678c09cf82ee225a7b75d83 (patch) | |
tree | 605d7cc81b1b9e8bacf931ac9f4087d8188112e4 | |
parent | a8dabf334d24f13afd37eb9c2f32b5a14cd125ef (diff) | |
download | sphinx-git-6f6b28d3e69425d61678c09cf82ee225a7b75d83.tar.gz |
refactor, add more tests #2516
-rw-r--r-- | AUTHORS | 2 | ||||
-rw-r--r-- | sphinx/search/__init__.py | 14 | ||||
-rw-r--r-- | tests/roots/test-search-de/conf.py | 3 | ||||
-rw-r--r-- | tests/roots/test-search-de/index.rst | 8 | ||||
-rw-r--r-- | tests/roots/test-search/conf.py | 8 | ||||
-rw-r--r-- | tests/roots/test-search/index.rst | 8 | ||||
-rw-r--r-- | tests/test_search.py | 18 |
7 files changed, 38 insertions, 23 deletions
@@ -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<T, d>' 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 |