summaryrefslogtreecommitdiffstats
path: root/integrations/repo_commits_search_test.go
diff options
context:
space:
mode:
authorMura Li <typeless@users.noreply.github.com>2019-04-12 10:28:44 +0800
committerLunny Xiao <xiaolunwen@gmail.com>2019-04-12 10:28:44 +0800
commit3186ef554cdbf54e1a3328ffcb35ea18105d7cb1 (patch)
treea5291a4503ea8e7c009446098ea88cf885abb0fb /integrations/repo_commits_search_test.go
parent1b7dffc3a30b2244aa2690abce19dd4c31613016 (diff)
downloadgitea-3186ef554cdbf54e1a3328ffcb35ea18105d7cb1.tar.gz
gitea-3186ef554cdbf54e1a3328ffcb35ea18105d7cb1.zip
Support search operators for commits search (#6479)
* Support searching commits with prefix syntax For now, support auther: committer: When more than one prefix is supplied is presented, the result is the union. When different prefixes are supplied, the result is the intersection. For example, "author:alice author:bob" => the result is all commits authored by Alice OR Bob "hello committer:alice" => the result is all commits committed by Alice AND has the keyword 'hello' in the message. Note that there should NOT have any space after the colon(:) of the prefix. For example, "author:bill" => correct "author: bill" => wrong * Remove unneeded logging * Add missing files of test repository * Add missing repo_unit entries to test fixtures * Update test cases * Add tooltip for commits search button * Update tooltip text I have no idea about how to format it with line breaks. * Make the usage example more real * Add a test case * Add new options struct for SearchCommits * Prefer len(s) > 0 over s != "" * Add NewSearchCommitsOptions
Diffstat (limited to 'integrations/repo_commits_search_test.go')
-rw-r--r--integrations/repo_commits_search_test.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/integrations/repo_commits_search_test.go b/integrations/repo_commits_search_test.go
new file mode 100644
index 0000000000..f477550c0e
--- /dev/null
+++ b/integrations/repo_commits_search_test.go
@@ -0,0 +1,37 @@
+// Copyright 2019 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package integrations
+
+import (
+ "net/http"
+ "net/url"
+ "strings"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func testRepoCommitsSearch(t *testing.T, query, commit string) {
+ prepareTestEnv(t)
+
+ session := loginUser(t, "user2")
+
+ // Request repository commits page
+ req := NewRequestf(t, "GET", "/user2/commits_search_test/commits/branch/master/search?q=%s", url.QueryEscape(query))
+ resp := session.MakeRequest(t, req, http.StatusOK)
+
+ doc := NewHTMLParser(t, resp.Body)
+ sel := doc.doc.Find("#commits-table tbody tr td.sha a")
+ assert.EqualValues(t, commit, strings.TrimSpace(sel.Text()))
+}
+
+func TestRepoCommitsSearch(t *testing.T) {
+ testRepoCommitsSearch(t, "author:alice", "6e8eabd9a7")
+ testRepoCommitsSearch(t, "committer:Tom", "58e97d1a24")
+ testRepoCommitsSearch(t, "author:bob commit-4", "58e97d1a24")
+ testRepoCommitsSearch(t, "author:bob commit after:2019-03-03", "58e97d1a24")
+ testRepoCommitsSearch(t, "committer:alice commit before:2019-03-02", "6e8eabd9a7")
+ testRepoCommitsSearch(t, "committer:alice author:tom commit before:2019-03-04 after:2019-03-02", "0a8499a22a")
+}