diff options
author | Mura Li <typeless@users.noreply.github.com> | 2019-04-12 10:28:44 +0800 |
---|---|---|
committer | Lunny Xiao <xiaolunwen@gmail.com> | 2019-04-12 10:28:44 +0800 |
commit | 3186ef554cdbf54e1a3328ffcb35ea18105d7cb1 (patch) | |
tree | a5291a4503ea8e7c009446098ea88cf885abb0fb /integrations/repo_commits_search_test.go | |
parent | 1b7dffc3a30b2244aa2690abce19dd4c31613016 (diff) | |
download | gitea-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.go | 37 |
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") +} |