mirror of
https://github.com/go-gitea/gitea.git
synced 2025-07-15 00:01:25 -04:00
Compare commits
No commits in common. "a254c26df907e4dea401320091a16342616f3a2a" and "f23b587fe7d440eb2937f29ff5de1c4ddf97f0fd" have entirely different histories.
a254c26df9
...
f23b587fe7
@ -250,8 +250,6 @@ func runDump(ctx *cli.Context) error {
|
|||||||
|
|
||||||
if ctx.IsSet("skip-lfs-data") && ctx.Bool("skip-lfs-data") {
|
if ctx.IsSet("skip-lfs-data") && ctx.Bool("skip-lfs-data") {
|
||||||
log.Info("Skip dumping LFS data")
|
log.Info("Skip dumping LFS data")
|
||||||
} else if !setting.LFS.StartServer {
|
|
||||||
log.Info("LFS isn't enabled. Skip dumping LFS data")
|
|
||||||
} else if err := storage.LFS.IterateObjects(func(objPath string, object storage.Object) error {
|
} else if err := storage.LFS.IterateObjects(func(objPath string, object storage.Object) error {
|
||||||
info, err := object.Stat()
|
info, err := object.Stat()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -366,8 +364,6 @@ func runDump(ctx *cli.Context) error {
|
|||||||
|
|
||||||
if ctx.IsSet("skip-package-data") && ctx.Bool("skip-package-data") {
|
if ctx.IsSet("skip-package-data") && ctx.Bool("skip-package-data") {
|
||||||
log.Info("Skip dumping package data")
|
log.Info("Skip dumping package data")
|
||||||
} else if !setting.Packages.Enabled {
|
|
||||||
log.Info("Packages isn't enabled. Skip dumping package data")
|
|
||||||
} else if err := storage.Packages.IterateObjects(func(objPath string, object storage.Object) error {
|
} else if err := storage.Packages.IterateObjects(func(objPath string, object storage.Object) error {
|
||||||
info, err := object.Stat()
|
info, err := object.Stat()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -16,7 +16,6 @@ import (
|
|||||||
"github.com/gobwas/glob"
|
"github.com/gobwas/glob"
|
||||||
"github.com/nektos/act/pkg/jobparser"
|
"github.com/nektos/act/pkg/jobparser"
|
||||||
"github.com/nektos/act/pkg/model"
|
"github.com/nektos/act/pkg/model"
|
||||||
"github.com/nektos/act/pkg/workflowpattern"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func ListWorkflows(commit *git.Commit) (git.Entries, error) {
|
func ListWorkflows(commit *git.Commit) (git.Entries, error) {
|
||||||
@ -137,94 +136,40 @@ func matchPushEvent(commit *git.Commit, pushPayload *api.PushPayload, evt *jobpa
|
|||||||
}
|
}
|
||||||
|
|
||||||
matchTimes := 0
|
matchTimes := 0
|
||||||
hasBranchFilter := false
|
|
||||||
hasTagFilter := false
|
|
||||||
refName := git.RefName(pushPayload.Ref)
|
|
||||||
// all acts conditions should be satisfied
|
// all acts conditions should be satisfied
|
||||||
for cond, vals := range evt.Acts {
|
for cond, vals := range evt.Acts {
|
||||||
switch cond {
|
switch cond {
|
||||||
case "branches":
|
case "branches", "tags":
|
||||||
hasBranchFilter = true
|
refShortName := git.RefName(pushPayload.Ref).ShortName()
|
||||||
if !refName.IsBranch() {
|
for _, val := range vals {
|
||||||
break
|
if glob.MustCompile(val, '/').Match(refShortName) {
|
||||||
}
|
matchTimes++
|
||||||
patterns, err := workflowpattern.CompilePatterns(vals...)
|
break
|
||||||
if err != nil {
|
}
|
||||||
break
|
|
||||||
}
|
|
||||||
if !workflowpattern.Skip(patterns, []string{refName.ShortName()}, &workflowpattern.EmptyTraceWriter{}) {
|
|
||||||
matchTimes++
|
|
||||||
}
|
|
||||||
case "branches-ignore":
|
|
||||||
hasBranchFilter = true
|
|
||||||
if !refName.IsBranch() {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
patterns, err := workflowpattern.CompilePatterns(vals...)
|
|
||||||
if err != nil {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if !workflowpattern.Filter(patterns, []string{refName.ShortName()}, &workflowpattern.EmptyTraceWriter{}) {
|
|
||||||
matchTimes++
|
|
||||||
}
|
|
||||||
case "tags":
|
|
||||||
hasTagFilter = true
|
|
||||||
if !refName.IsTag() {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
patterns, err := workflowpattern.CompilePatterns(vals...)
|
|
||||||
if err != nil {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if !workflowpattern.Skip(patterns, []string{refName.ShortName()}, &workflowpattern.EmptyTraceWriter{}) {
|
|
||||||
matchTimes++
|
|
||||||
}
|
|
||||||
case "tags-ignore":
|
|
||||||
hasTagFilter = true
|
|
||||||
if !refName.IsTag() {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
patterns, err := workflowpattern.CompilePatterns(vals...)
|
|
||||||
if err != nil {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if !workflowpattern.Filter(patterns, []string{refName.ShortName()}, &workflowpattern.EmptyTraceWriter{}) {
|
|
||||||
matchTimes++
|
|
||||||
}
|
}
|
||||||
case "paths":
|
case "paths":
|
||||||
filesChanged, err := commit.GetFilesChangedSinceCommit(pushPayload.Before)
|
filesChanged, err := commit.GetFilesChangedSinceCommit(pushPayload.Before)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("GetFilesChangedSinceCommit [commit_sha1: %s]: %v", commit.ID.String(), err)
|
log.Error("GetFilesChangedSinceCommit [commit_sha1: %s]: %v", commit.ID.String(), err)
|
||||||
} else {
|
} else {
|
||||||
patterns, err := workflowpattern.CompilePatterns(vals...)
|
for _, val := range vals {
|
||||||
if err != nil {
|
matched := false
|
||||||
break
|
for _, file := range filesChanged {
|
||||||
}
|
if glob.MustCompile(val, '/').Match(file) {
|
||||||
if !workflowpattern.Skip(patterns, filesChanged, &workflowpattern.EmptyTraceWriter{}) {
|
matched = true
|
||||||
matchTimes++
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case "paths-ignore":
|
if matched {
|
||||||
filesChanged, err := commit.GetFilesChangedSinceCommit(pushPayload.Before)
|
matchTimes++
|
||||||
if err != nil {
|
break
|
||||||
log.Error("GetFilesChangedSinceCommit [commit_sha1: %s]: %v", commit.ID.String(), err)
|
}
|
||||||
} else {
|
|
||||||
patterns, err := workflowpattern.CompilePatterns(vals...)
|
|
||||||
if err != nil {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if !workflowpattern.Filter(patterns, filesChanged, &workflowpattern.EmptyTraceWriter{}) {
|
|
||||||
matchTimes++
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
log.Warn("push event unsupported condition %q", cond)
|
log.Warn("push event unsupported condition %q", cond)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// if both branch and tag filter are defined in the workflow only one needs to match
|
|
||||||
if hasBranchFilter && hasTagFilter {
|
|
||||||
matchTimes++
|
|
||||||
}
|
|
||||||
return matchTimes == len(evt.Acts)
|
return matchTimes == len(evt.Acts)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -276,47 +221,30 @@ func matchPullRequestEvent(commit *git.Commit, prPayload *api.PullRequestPayload
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case "branches":
|
case "branches":
|
||||||
refName := git.RefName(prPayload.PullRequest.Base.Ref)
|
refShortName := git.RefName(prPayload.PullRequest.Base.Ref).ShortName()
|
||||||
patterns, err := workflowpattern.CompilePatterns(vals...)
|
for _, val := range vals {
|
||||||
if err != nil {
|
if glob.MustCompile(val, '/').Match(refShortName) {
|
||||||
break
|
matchTimes++
|
||||||
}
|
break
|
||||||
if !workflowpattern.Skip(patterns, []string{refName.ShortName()}, &workflowpattern.EmptyTraceWriter{}) {
|
}
|
||||||
matchTimes++
|
|
||||||
}
|
|
||||||
case "branches-ignore":
|
|
||||||
refName := git.RefName(prPayload.PullRequest.Base.Ref)
|
|
||||||
patterns, err := workflowpattern.CompilePatterns(vals...)
|
|
||||||
if err != nil {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if !workflowpattern.Filter(patterns, []string{refName.ShortName()}, &workflowpattern.EmptyTraceWriter{}) {
|
|
||||||
matchTimes++
|
|
||||||
}
|
}
|
||||||
case "paths":
|
case "paths":
|
||||||
filesChanged, err := commit.GetFilesChangedSinceCommit(prPayload.PullRequest.Base.Ref)
|
filesChanged, err := commit.GetFilesChangedSinceCommit(prPayload.PullRequest.Base.Ref)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("GetFilesChangedSinceCommit [commit_sha1: %s]: %v", commit.ID.String(), err)
|
log.Error("GetFilesChangedSinceCommit [commit_sha1: %s]: %v", commit.ID.String(), err)
|
||||||
} else {
|
} else {
|
||||||
patterns, err := workflowpattern.CompilePatterns(vals...)
|
for _, val := range vals {
|
||||||
if err != nil {
|
matched := false
|
||||||
break
|
for _, file := range filesChanged {
|
||||||
}
|
if glob.MustCompile(val, '/').Match(file) {
|
||||||
if !workflowpattern.Skip(patterns, filesChanged, &workflowpattern.EmptyTraceWriter{}) {
|
matched = true
|
||||||
matchTimes++
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case "paths-ignore":
|
if matched {
|
||||||
filesChanged, err := commit.GetFilesChangedSinceCommit(prPayload.PullRequest.Base.Ref)
|
matchTimes++
|
||||||
if err != nil {
|
break
|
||||||
log.Error("GetFilesChangedSinceCommit [commit_sha1: %s]: %v", commit.ID.String(), err)
|
}
|
||||||
} else {
|
|
||||||
patterns, err := workflowpattern.CompilePatterns(vals...)
|
|
||||||
if err != nil {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if !workflowpattern.Filter(patterns, filesChanged, &workflowpattern.EmptyTraceWriter{}) {
|
|
||||||
matchTimes++
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -16,7 +16,6 @@ import (
|
|||||||
"code.gitea.io/gitea/modules/base"
|
"code.gitea.io/gitea/modules/base"
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
packages_module "code.gitea.io/gitea/modules/packages"
|
packages_module "code.gitea.io/gitea/modules/packages"
|
||||||
"code.gitea.io/gitea/modules/setting"
|
|
||||||
"code.gitea.io/gitea/modules/storage"
|
"code.gitea.io/gitea/modules/storage"
|
||||||
"code.gitea.io/gitea/modules/util"
|
"code.gitea.io/gitea/modules/util"
|
||||||
)
|
)
|
||||||
@ -112,10 +111,6 @@ func checkStorage(opts *checkStorageOptions) func(ctx context.Context, logger lo
|
|||||||
}
|
}
|
||||||
|
|
||||||
if opts.LFS || opts.All {
|
if opts.LFS || opts.All {
|
||||||
if !setting.LFS.StartServer {
|
|
||||||
logger.Info("LFS isn't enabled (skipped)")
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if err := commonCheckStorage(ctx, logger, autofix,
|
if err := commonCheckStorage(ctx, logger, autofix,
|
||||||
&commonStorageCheckOptions{
|
&commonStorageCheckOptions{
|
||||||
storer: storage.LFS,
|
storer: storage.LFS,
|
||||||
@ -178,10 +173,6 @@ func checkStorage(opts *checkStorageOptions) func(ctx context.Context, logger lo
|
|||||||
}
|
}
|
||||||
|
|
||||||
if opts.Packages || opts.All {
|
if opts.Packages || opts.All {
|
||||||
if !setting.Packages.Enabled {
|
|
||||||
logger.Info("Packages isn't enabled (skipped)")
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if err := commonCheckStorage(ctx, logger, autofix,
|
if err := commonCheckStorage(ctx, logger, autofix,
|
||||||
&commonStorageCheckOptions{
|
&commonStorageCheckOptions{
|
||||||
storer: storage.Packages,
|
storer: storage.Packages,
|
||||||
|
@ -234,7 +234,6 @@ func EditProject(ctx *context.Context) {
|
|||||||
|
|
||||||
ctx.Data["title"] = p.Title
|
ctx.Data["title"] = p.Title
|
||||||
ctx.Data["content"] = p.Description
|
ctx.Data["content"] = p.Description
|
||||||
ctx.Data["redirect"] = ctx.FormString("redirect")
|
|
||||||
|
|
||||||
ctx.HTML(http.StatusOK, tplProjectsNew)
|
ctx.HTML(http.StatusOK, tplProjectsNew)
|
||||||
}
|
}
|
||||||
@ -275,11 +274,7 @@ func EditProjectPost(ctx *context.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ctx.Flash.Success(ctx.Tr("repo.projects.edit_success", p.Title))
|
ctx.Flash.Success(ctx.Tr("repo.projects.edit_success", p.Title))
|
||||||
if ctx.FormString("redirect") == "project" {
|
ctx.Redirect(ctx.Repo.RepoLink + "/projects")
|
||||||
ctx.Redirect(p.Link())
|
|
||||||
} else {
|
|
||||||
ctx.Redirect(ctx.ContextUser.HomeLink() + "/-/projects")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ViewProject renders the project board for a project
|
// ViewProject renders the project board for a project
|
||||||
|
@ -235,7 +235,6 @@ func EditProject(ctx *context.Context) {
|
|||||||
ctx.Data["title"] = p.Title
|
ctx.Data["title"] = p.Title
|
||||||
ctx.Data["content"] = p.Description
|
ctx.Data["content"] = p.Description
|
||||||
ctx.Data["card_type"] = p.CardType
|
ctx.Data["card_type"] = p.CardType
|
||||||
ctx.Data["redirect"] = ctx.FormString("redirect")
|
|
||||||
|
|
||||||
ctx.HTML(http.StatusOK, tplProjectsNew)
|
ctx.HTML(http.StatusOK, tplProjectsNew)
|
||||||
}
|
}
|
||||||
@ -276,11 +275,7 @@ func EditProjectPost(ctx *context.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ctx.Flash.Success(ctx.Tr("repo.projects.edit_success", p.Title))
|
ctx.Flash.Success(ctx.Tr("repo.projects.edit_success", p.Title))
|
||||||
if ctx.FormString("redirect") == "project" {
|
ctx.Redirect(ctx.Repo.RepoLink + "/projects")
|
||||||
ctx.Redirect(p.Link())
|
|
||||||
} else {
|
|
||||||
ctx.Redirect(ctx.Repo.RepoLink + "/projects")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ViewProject renders the project board for a project
|
// ViewProject renders the project board for a project
|
||||||
|
@ -292,7 +292,7 @@ func Profile(ctx *context.Context) {
|
|||||||
ctx.Data["IsPackageEnabled"] = setting.Packages.Enabled
|
ctx.Data["IsPackageEnabled"] = setting.Packages.Enabled
|
||||||
ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled
|
ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled
|
||||||
|
|
||||||
ctx.Data["ShowUserEmail"] = setting.UI.ShowUserEmail && ctx.ContextUser.Email != "" && ctx.IsSigned && !ctx.ContextUser.KeepEmailPrivate
|
ctx.Data["ShowUserEmail"] = len(ctx.ContextUser.Email) > 0 && ctx.IsSigned && (!ctx.ContextUser.KeepEmailPrivate || ctx.ContextUser.ID == ctx.Doer.ID)
|
||||||
|
|
||||||
ctx.HTML(http.StatusOK, tplProfile)
|
ctx.HTML(http.StatusOK, tplProfile)
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
<form class="ui form grid" action="{{.Link}}" method="post">
|
<form class="ui form grid" action="{{.Link}}" method="post">
|
||||||
{{.CsrfTokenHtml}}
|
{{.CsrfTokenHtml}}
|
||||||
<div class="eleven wide column">
|
<div class="eleven wide column">
|
||||||
<input type="hidden" id="redirect" name="redirect" value="{{.redirect}}">
|
|
||||||
<div class="field {{if .Err_Title}}error{{end}}">
|
<div class="field {{if .Err_Title}}error{{end}}">
|
||||||
<label>{{.locale.Tr "repo.projects.title"}}</label>
|
<label>{{.locale.Tr "repo.projects.title"}}</label>
|
||||||
<input name="title" placeholder="{{.locale.Tr "repo.projects.title"}}" value="{{.title}}" autofocus required>
|
<input name="title" placeholder="{{.locale.Tr "repo.projects.title"}}" value="{{.title}}" autofocus required>
|
||||||
|
@ -46,7 +46,7 @@
|
|||||||
{{if $.CanWriteProjects}}
|
{{if $.CanWriteProjects}}
|
||||||
<div class="column right aligned">
|
<div class="column right aligned">
|
||||||
<div class="ui compact right small menu">
|
<div class="ui compact right small menu">
|
||||||
<a class="item" href="{{$.Link}}/edit?redirect=project" data-id={{$.Project.ID}} data-title={{$.Project.Title}}>
|
<a class="item" href="{{$.Link}}/edit" data-id={{$.Project.ID}} data-title={{$.Project.Title}}>
|
||||||
{{svg "octicon-pencil"}}
|
{{svg "octicon-pencil"}}
|
||||||
<span class="gt-mx-3">{{$.locale.Tr "repo.issues.label_edit"}}</span>
|
<span class="gt-mx-3">{{$.locale.Tr "repo.issues.label_edit"}}</span>
|
||||||
</a>
|
</a>
|
||||||
|
@ -28,10 +28,10 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
<span class="message gt-dib gt-ellipsis gt-mr-3">
|
<span class="message gt-dib gt-ellipsis gt-mr-2">
|
||||||
<span>{{RenderCommitMessage $.Context $commit.Subject $.RepoLink $.Repository.ComposeMetas}}</span>
|
<span>{{RenderCommitMessage $.Context $commit.Subject $.RepoLink $.Repository.ComposeMetas}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="tags gt-df gt-ac gt-mr-2">
|
<span class="tags gt-df gt-ac">
|
||||||
{{range $commit.Refs}}
|
{{range $commit.Refs}}
|
||||||
{{$refGroup := .RefGroup}}
|
{{$refGroup := .RefGroup}}
|
||||||
{{if eq $refGroup "pull"}}
|
{{if eq $refGroup "pull"}}
|
||||||
@ -54,20 +54,20 @@
|
|||||||
{{svg "octicon-git-branch" 16 "gt-mr-2"}}{{.ShortName}}
|
{{svg "octicon-git-branch" 16 "gt-mr-2"}}{{.ShortName}}
|
||||||
</a>
|
</a>
|
||||||
{{else}}
|
{{else}}
|
||||||
<!-- Unknown ref type .Name -->
|
<!-- Unknown ref type {{.Name}} -->
|
||||||
{{end}}
|
{{end}}
|
||||||
{{end}}
|
{{end}}
|
||||||
</span>
|
</span>
|
||||||
<span class="author gt-df gt-ac gt-mr-3">
|
<span class="author gt-df gt-ac gt-mr-2">
|
||||||
{{$userName := $commit.Commit.Author.Name}}
|
{{$userName := $commit.Commit.Author.Name}}
|
||||||
{{if $commit.User}}
|
{{if $commit.User}}
|
||||||
{{if $commit.User.FullName}}
|
{{if $commit.User.FullName}}
|
||||||
{{$userName = $commit.User.FullName}}
|
{{$userName = $commit.User.FullName}}
|
||||||
{{end}}
|
{{end}}
|
||||||
<span class="gt-mr-2">{{avatar $.Context $commit.User}}</span>
|
{{avatar $.Context $commit.User}}
|
||||||
<a href="{{$commit.User.HomeLink}}">{{$userName}}</a>
|
<a href="{{$commit.User.HomeLink}}">{{$userName}}</a>
|
||||||
{{else}}
|
{{else}}
|
||||||
<span class="gt-mr-2">{{avatarByEmail $.Context $commit.Commit.Author.Email $userName}}</span>
|
{{avatarByEmail $.Context $commit.Commit.Author.Email $userName}}
|
||||||
{{$userName}}
|
{{$userName}}
|
||||||
{{end}}
|
{{end}}
|
||||||
</span>
|
</span>
|
||||||
|
@ -24,7 +24,6 @@
|
|||||||
<form class="ui form grid" action="{{.Link}}" method="post">
|
<form class="ui form grid" action="{{.Link}}" method="post">
|
||||||
{{.CsrfTokenHtml}}
|
{{.CsrfTokenHtml}}
|
||||||
<div class="eleven wide column">
|
<div class="eleven wide column">
|
||||||
<input type="hidden" id="redirect" name="redirect" value="{{.redirect}}">
|
|
||||||
<div class="field {{if .Err_Title}}error{{end}}">
|
<div class="field {{if .Err_Title}}error{{end}}">
|
||||||
<label>{{.locale.Tr "repo.projects.title"}}</label>
|
<label>{{.locale.Tr "repo.projects.title"}}</label>
|
||||||
<input name="title" placeholder="{{.locale.Tr "repo.projects.title"}}" value="{{.title}}" autofocus required>
|
<input name="title" placeholder="{{.locale.Tr "repo.projects.title"}}" value="{{.title}}" autofocus required>
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
{{if and (or $.CanWriteIssues $.CanWritePulls) (not $.Repository.IsArchived)}}
|
{{if and (or $.CanWriteIssues $.CanWritePulls) (not $.Repository.IsArchived)}}
|
||||||
<div class="column right aligned">
|
<div class="column right aligned">
|
||||||
<div class="ui compact right small menu">
|
<div class="ui compact right small menu">
|
||||||
<a class="item" href="{{$.RepoLink}}/projects/{{.Project.ID}}/edit?redirect=project" data-id={{$.Project.ID}} data-title={{$.Project.Title}}>
|
<a class="item" href="{{$.RepoLink}}/projects/{{.Project.ID}}/edit" data-id={{$.Project.ID}} data-title={{$.Project.Title}}>
|
||||||
{{svg "octicon-pencil"}}
|
{{svg "octicon-pencil"}}
|
||||||
<span class="gt-mx-3">{{$.locale.Tr "repo.issues.label_edit"}}</span>
|
<span class="gt-mx-3">{{$.locale.Tr "repo.issues.label_edit"}}</span>
|
||||||
</a>
|
</a>
|
||||||
|
@ -45,49 +45,38 @@ func TestSettingShowUserEmailProfile(t *testing.T) {
|
|||||||
defer tests.PrepareTestEnv(t)()
|
defer tests.PrepareTestEnv(t)()
|
||||||
|
|
||||||
showUserEmail := setting.UI.ShowUserEmail
|
showUserEmail := setting.UI.ShowUserEmail
|
||||||
|
|
||||||
// user1: keep_email_private = false, user2: keep_email_private = true
|
|
||||||
|
|
||||||
setting.UI.ShowUserEmail = true
|
setting.UI.ShowUserEmail = true
|
||||||
|
|
||||||
// user1 can see self
|
session := loginUser(t, "user2")
|
||||||
session := loginUser(t, "user1")
|
req := NewRequest(t, "GET", "/user2")
|
||||||
req := NewRequest(t, "GET", "/user1")
|
|
||||||
resp := session.MakeRequest(t, req, http.StatusOK)
|
resp := session.MakeRequest(t, req, http.StatusOK)
|
||||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||||
assert.Contains(t, htmlDoc.doc.Find(".user.profile").Text(), "user1@example.com")
|
assert.Contains(t,
|
||||||
|
htmlDoc.doc.Find(".user.profile").Text(),
|
||||||
// user1 can not see user2
|
"user2@example.com",
|
||||||
req = NewRequest(t, "GET", "/user2")
|
)
|
||||||
resp = session.MakeRequest(t, req, http.StatusOK)
|
|
||||||
htmlDoc = NewHTMLParser(t, resp.Body)
|
|
||||||
// Should not contain even if the user visits their own profile page
|
|
||||||
assert.NotContains(t, htmlDoc.doc.Find(".user.profile").Text(), "user2@example.com")
|
|
||||||
|
|
||||||
// user2 can see user1
|
|
||||||
session = loginUser(t, "user2")
|
|
||||||
req = NewRequest(t, "GET", "/user1")
|
|
||||||
resp = session.MakeRequest(t, req, http.StatusOK)
|
|
||||||
htmlDoc = NewHTMLParser(t, resp.Body)
|
|
||||||
assert.Contains(t, htmlDoc.doc.Find(".user.profile").Text(), "user1@example.com")
|
|
||||||
|
|
||||||
// user2 can not see self
|
|
||||||
session = loginUser(t, "user2")
|
|
||||||
req = NewRequest(t, "GET", "/user2")
|
|
||||||
resp = session.MakeRequest(t, req, http.StatusOK)
|
|
||||||
htmlDoc = NewHTMLParser(t, resp.Body)
|
|
||||||
assert.NotContains(t, htmlDoc.doc.Find(".user.profile").Text(), "user2@example.com")
|
|
||||||
|
|
||||||
setting.UI.ShowUserEmail = false
|
setting.UI.ShowUserEmail = false
|
||||||
|
|
||||||
// user1 can not see self
|
req = NewRequest(t, "GET", "/user2")
|
||||||
session = loginUser(t, "user1")
|
|
||||||
req = NewRequest(t, "GET", "/user1")
|
|
||||||
resp = session.MakeRequest(t, req, http.StatusOK)
|
resp = session.MakeRequest(t, req, http.StatusOK)
|
||||||
htmlDoc = NewHTMLParser(t, resp.Body)
|
htmlDoc = NewHTMLParser(t, resp.Body)
|
||||||
assert.NotContains(t, htmlDoc.doc.Find(".user.profile").Text(), "user1@example.com")
|
// Should contain since this user owns the profile page
|
||||||
|
assert.Contains(t,
|
||||||
|
htmlDoc.doc.Find(".user.profile").Text(),
|
||||||
|
"user2@example.com",
|
||||||
|
)
|
||||||
|
|
||||||
setting.UI.ShowUserEmail = showUserEmail
|
setting.UI.ShowUserEmail = showUserEmail
|
||||||
|
|
||||||
|
session = loginUser(t, "user4")
|
||||||
|
req = NewRequest(t, "GET", "/user2")
|
||||||
|
resp = session.MakeRequest(t, req, http.StatusOK)
|
||||||
|
htmlDoc = NewHTMLParser(t, resp.Body)
|
||||||
|
assert.NotContains(t,
|
||||||
|
htmlDoc.doc.Find(".user.profile").Text(),
|
||||||
|
"user2@example.com",
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSettingLandingPage(t *testing.T) {
|
func TestSettingLandingPage(t *testing.T) {
|
||||||
|
@ -78,7 +78,7 @@ function updateDeadline(deadlineString) {
|
|||||||
|
|
||||||
export function initRepoIssueDue() {
|
export function initRepoIssueDue() {
|
||||||
$(document).on('click', '.issue-due-edit', () => {
|
$(document).on('click', '.issue-due-edit', () => {
|
||||||
toggleElem('#deadlineForm');
|
$('#deadlineForm').fadeToggle(150);
|
||||||
});
|
});
|
||||||
$(document).on('click', '.issue-due-remove', () => {
|
$(document).on('click', '.issue-due-remove', () => {
|
||||||
updateDeadline('');
|
updateDeadline('');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user