diff --git a/.github/setup-sphinx.sh b/.github/setup-sphinx.sh index 919d142575..38d370e7b7 100755 --- a/.github/setup-sphinx.sh +++ b/.github/setup-sphinx.sh @@ -135,7 +135,7 @@ searchd read_timeout = 5 max_children = 30 pid_file = $SPHINX_DATA_DIR/searchd.pid - binlog_path = $SPHINX_DATA_DIR/ + binlog_path = $SPHINX_DATA_DIR } " > $SPHINX_CONF diff --git a/phpBB/phpbb/search/backend/fulltext_sphinx.php b/phpBB/phpbb/search/backend/fulltext_sphinx.php index 5092f67ae5..93b0c1c522 100644 --- a/phpBB/phpbb/search/backend/fulltext_sphinx.php +++ b/phpBB/phpbb/search/backend/fulltext_sphinx.php @@ -952,7 +952,7 @@ class fulltext_sphinx implements search_backend_interface array('read_timeout', '5'), array('max_children', '30'), array('pid_file', $this->config['fulltext_sphinx_data_path'] . 'searchd.pid'), - array('binlog_path', $this->config['fulltext_sphinx_data_path']), + array('binlog_path', rtrim($this->config['fulltext_sphinx_data_path'], '/\\')), // Trim trailing slash ), ); diff --git a/tests/functional/search/base.php b/tests/functional/search/base.php index a34eff385e..716228426a 100644 --- a/tests/functional/search/base.php +++ b/tests/functional/search/base.php @@ -263,7 +263,12 @@ abstract class phpbb_functional_search_base extends phpbb_functional_test_case // Ensure search index has been actually created $crawler = self::request('GET', 'adm/index.php?i=acp_search&mode=index&sid=' . $this->sid); - $posts_indexed = (int) $crawler->filter('#acp_search_index_' . str_replace('\\', '-', $search_type) . ' td')->eq(1)->text(); + $posts_indexed = (int) $crawler->filter('#acp_search_index_' . str_replace('\\', '-', $search_type) . ' td')->reduce( + function ($node, $i) { + // Find the value of total posts indexed + return (strpos($node->text(), $this->lang('FULLTEXT_MYSQL_TOTAL_POSTS')) !== false || strpos($node->text(), $this->lang('TOTAL_WORDS')) !== false); + }) + ->nextAll()->eq(0)->text(); $this->assertTrue($posts_indexed > 0); } @@ -300,7 +305,12 @@ abstract class phpbb_functional_search_base extends phpbb_functional_test_case // Ensure search index has been actually removed $crawler = self::request('GET', 'adm/index.php?i=acp_search&mode=index&sid=' . $this->sid); - $posts_indexed = (int) $crawler->filter('#acp_search_index_' . str_replace('\\', '-', $this->search_backend) . ' td')->eq(1)->text(); + $posts_indexed = (int) $crawler->filter('#acp_search_index_' . str_replace('\\', '-', $this->search_backend) . ' td')->reduce( + function ($node, $i) { + // Find the value of total posts indexed + return (strpos($node->text(), $this->lang('FULLTEXT_MYSQL_TOTAL_POSTS')) !== false || strpos($node->text(), $this->lang('TOTAL_WORDS')) !== false); + }) + ->nextAll()->eq(0)->text(); $this->assertEquals(0, $posts_indexed); } } diff --git a/tests/functional/search/sphinx_test.php b/tests/functional/search/sphinx_test.php index eaba34d17a..e72228f387 100644 --- a/tests/functional/search/sphinx_test.php +++ b/tests/functional/search/sphinx_test.php @@ -27,8 +27,10 @@ class phpbb_functional_search_sphinx_test extends phpbb_functional_search_base if (!$backend || $this->search_backend == $backend) { + $output = $retval = null; + // After creating phpBB search index, build Sphinx index - exec('sudo -S service sphinxsearch stop', $output, $retval); // Attemtp to stop sphinxsearch service in case it's running + exec('sudo -S service sphinxsearch stop', $output, $retval); // Attempt to stop sphinxsearch service in case it's running exec('sudo -S indexer --all', $output, $retval); // Run sphinxsearch indexer exec('sudo -S service sphinxsearch start', $output, $retval); // Attempt to start sphinxsearch service again } diff --git a/tests/functional/visibility_softdelete_test.php b/tests/functional/visibility_softdelete_test.php index 5128bb6005..0275ea42ca 100644 --- a/tests/functional/visibility_softdelete_test.php +++ b/tests/functional/visibility_softdelete_test.php @@ -601,7 +601,16 @@ class phpbb_functional_visibility_softdelete_test extends phpbb_functional_test_ // Assert new topic title is indexed as well $this->add_lang('search'); self::request('GET', "search.php?keywords=bang&sid={$this->sid}"); - $this->assertStringContainsString(sprintf($this->lang['FOUND_SEARCH_MATCHES'][1], 1), self::get_content()); + + // Sphinx search doesn't apply to unapproved or softdeleted posts + if (strpos($this->get_search_type(), 'fulltext_sphinx')) + { + $this->assertStringContainsString(sprintf($this->lang['FOUND_SEARCH_MATCHES'][2], 0), self::get_content()); + } + else + { + $this->assertStringContainsString(sprintf($this->lang['FOUND_SEARCH_MATCHES'][1], 1), self::get_content()); + } } public function test_move_topic_back() diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php index bec0845f0a..c42e0aa60b 100644 --- a/tests/test_framework/phpbb_functional_test_case.php +++ b/tests/test_framework/phpbb_functional_test_case.php @@ -895,6 +895,24 @@ class phpbb_functional_test_case extends phpbb_test_case return $group_id; } + /** + * Get current board's search type + * + * @return string Current search type setting + */ + protected function get_search_type() + { + $db = $this->get_db(); + $sql = 'SELECT config_value as search_type + FROM ' . CONFIG_TABLE . " + WHERE config_name = '" . $db->sql_escape('search_type') . "'"; + $result = $db->sql_query($sql); + $search_type = $db->sql_fetchfield('search_type'); + $db->sql_freeresult($result); + + return $search_type; + } + protected function remove_user_group($group_name, $usernames) { global $db, $cache, $auth, $config, $phpbb_dispatcher, $phpbb_log, $phpbb_container, $user, $phpbb_root_path, $phpEx;