Compare commits

..

5 Commits

Author SHA256 Message Date
709d59c1f8 fix free disk detection logic
Some checks failed
Integration tests / t (pull_request) Failing after 5m37s
2026-03-04 12:45:46 +01:00
545898b9d6 Add some diagnostics
Some checks failed
Integration tests / t (pull_request) Failing after 7m48s
2026-03-04 12:30:46 +01:00
ee3a64e113 ci: check free space in runner and clean if needed
Some checks failed
Integration tests / t (pull_request) Failing after 5m1s
2026-03-04 11:26:48 +01:00
Andrii Nikitin
61d03fc709 t: remove xfail from REVIEW t006 and t007
Some checks failed
Integration tests / t (pull_request) Failing after 4m51s
2026-03-03 15:21:01 +01:00
Andrii Nikitin
fca20232e6 ci: print logs on failure 2026-03-03 15:20:14 +01:00
5 changed files with 38 additions and 63 deletions

View File

@@ -18,6 +18,15 @@ jobs:
run: whoami
- name: pwd
run: pwd
- name: free disk space if needed
run: |
df -h
df -H . | tail -n 1 | awk '{ print $5 }' | grep -oE '[0-9]+'
test 85 -lt "$(df -H . | tail -n 1 | awk '{ print $5 }' | grep -oE '[0-9]+')" || echo too low space will attempt to clean
test 85 -lt "$(df -H . | tail -n 1 | awk '{ print $5 }' | grep -oE '[0-9]+')" || bash -xc 'go clean cache'
test 85 -lt "$(df -H . | tail -n 1 | awk '{ print $5 }' | grep -oE '[0-9]+')" || bash -xc 'podman rmi -a -f'
df -h
df -H . | tail -n 1 | awk '{ print $5 }' | grep -oE '[0-9]+'
- name: vars
run: |
set | grep GITEA_
@@ -45,6 +54,26 @@ jobs:
- name: Run tests
run: py.test-3.11 -v tests
working-directory: ./autogits/integration
- name: podman ps
if: failure()
run: podman ps
- name: workflow pr log
if: failure()
run: |
echo $(podman-compose logs workflow-pr | wc -l)
working-directory: ./autogits/integration
- name: workflow pr log
if: failure()
run: |
echo "here are the logs:"
podman-compose logs workflow-pr
working-directory: ./autogits/integration
- name: gitea log
if: failure()
run: podman logs gitea-test
- name: gitea publisher log
if: failure()
run: podman logs gitea-publisher
- name: Make sure the pod is down
if: always()
run: make down

View File

@@ -168,32 +168,12 @@ func (data *MaintainershipMap) IsApproved(pkg string, reviews []*models.PullRevi
return true
}
if !data.Config.ReviewRequired {
for _, review := range reviews {
if !review.Stale && review.State == ReviewStateApproved && slices.Contains(reviewers, review.User.UserName) {
LogDebug("Reviewed by", review.User.UserName)
return true
}
for _, review := range reviews {
if !review.Stale && review.State == ReviewStateApproved && slices.Contains(reviewers, review.User.UserName) {
LogDebug("Reviewed by", review.User.UserName)
return true
}
} else {
// all maintainers except submitter must approve
for _, m := range reviewers {
if m == submitter {
continue
}
approved := false
for _, review := range reviews {
if !review.Stale && review.State == ReviewStateApproved && review.User.UserName == m {
approved = true
break
}
}
if !approved {
LogDebug("Missing approval from maintainer:", m)
return false
}
}
return true
}
return false
}

View File

@@ -328,7 +328,7 @@ func (rs *PRSet) FindMissingAndExtraReviewers(maintainers MaintainershipData, id
if len(rs.PRs) > 1 {
noReviewPRCreators = append(noReviewPRCreators, rs.BotUser)
}
if slices.Contains(noReviewPRCreators, pr.PR.User.UserName) || pr.Reviews.IsRejectedByOneOf(prjMaintainers...) || (pr.Reviews.IsReviewedByOneOf(prjMaintainers...) && !rs.Config.ReviewRequired) {
if slices.Contains(noReviewPRCreators, pr.PR.User.UserName) || pr.Reviews.IsReviewedByOneOf(prjMaintainers...) {
LogDebug("Project already reviewed by a project maintainer, remove rest")
// do not remove reviewers if they are also maintainers
prjMaintainers = slices.DeleteFunc(prjMaintainers, func(m string) bool { return slices.Contains(missing, m) })
@@ -355,8 +355,8 @@ func (rs *PRSet) FindMissingAndExtraReviewers(maintainers MaintainershipData, id
LogDebug("packakge maintainers:", Maintainers)
missing = slices.Concat(configReviewers.Pkg, configReviewers.PkgOptional)
if slices.Contains(noReviewPkgPRCreators, pr.PR.User.UserName) || pr.Reviews.IsRejectedByOneOf(Maintainers...) || (pr.Reviews.IsReviewedByOneOf(Maintainers...) && !rs.Config.ReviewRequired) {
// submitter is maintainer or already reviewed/rejected
if slices.Contains(noReviewPkgPRCreators, pr.PR.User.UserName) || pr.Reviews.IsReviewedByOneOf(Maintainers...) {
// submitter is maintainer or already reviewed
LogDebug("Package reviewed by maintainer (or subitter is maintainer), remove the rest of them")
// do not remove reviewers if they are also maintainers
Maintainers = slices.DeleteFunc(Maintainers, func(m string) bool { return slices.Contains(missing, m) })

View File

@@ -16,8 +16,6 @@ type ReviewInterface interface {
HasPendingReviewBy(reviewer string) bool
IsReviewedBy(reviewer string) bool
IsReviewedByOneOf(reviewers ...string) bool
IsRejectedBy(reviewer string) bool
IsRejectedByOneOf(reviewers ...string) bool
SetRequiredReviewers(reviewers []string)
}
@@ -232,7 +230,7 @@ func (r *PRReviews) IsReviewedBy(reviewer string) bool {
for _, r := range r.Reviews {
if r.User.UserName == reviewer && !r.Stale {
switch r.State {
case ReviewStateApproved:
case ReviewStateApproved, ReviewStateRequestChanges:
return true
default:
return false
@@ -246,37 +244,6 @@ func (r *PRReviews) IsReviewedBy(reviewer string) bool {
func (r *PRReviews) IsReviewedByOneOf(reviewers ...string) bool {
for _, reviewer := range reviewers {
if r.IsReviewedBy(reviewer) {
LogDebug(" -- IsReviewedByOneOf: matched ", reviewer)
return true
}
}
return false
}
func (r *PRReviews) IsRejectedBy(reviewer string) bool {
if r == nil {
return false
}
for _, r := range r.Reviews {
if r.User.UserName == reviewer && !r.Stale {
switch r.State {
case ReviewStateRequestChanges:
return true
default:
return false
}
}
}
return false
}
func (r *PRReviews) IsRejectedByOneOf(reviewers ...string) bool {
for _, reviewer := range reviewers {
if r.IsRejectedBy(reviewer) {
LogDebug(" -- IsRejectedByOneOf: matched ", reviewer)
return true
}
}

View File

@@ -155,7 +155,6 @@ index 0000000..e69de29
@pytest.mark.t005
# @pytest.mark.xfail(reason="TBD troubleshoot")
def test_005_any_maintainer_approval_sufficient(maintainer_env, ownerA_client, ownerBB_client):
"""
Test scenario: