fix(tests): flacky tests fixes
This commit is contained in:
parent
67bc6a188a
commit
6e41408812
1 changed files with 21 additions and 11 deletions
|
|
@ -318,16 +318,14 @@ def branch_permission_setter(request):
|
|||
branch_permission_setter(repo_name, username, pattern='*', permission='branch.push')
|
||||
|
||||
"""
|
||||
from rhodecode.model.permission import PermissionModel
|
||||
|
||||
rule_id = None
|
||||
write_perm_id = None
|
||||
write_perm = None
|
||||
rule = None
|
||||
# Track ALL created permissions for proper cleanup
|
||||
# Critical for parameterized tests that call this fixture multiple times
|
||||
created_rules = []
|
||||
created_write_perms = []
|
||||
|
||||
def _branch_permissions_setter(repo_name, username, pattern="*", permission="branch.push_force"):
|
||||
global rule_id, write_perm_id
|
||||
global rule, write_perm
|
||||
|
||||
repo = Repository.get_by_repo_name(repo_name)
|
||||
repo_id = repo.repo_id
|
||||
|
||||
|
|
@ -344,6 +342,7 @@ def branch_permission_setter(request):
|
|||
.first()
|
||||
)
|
||||
|
||||
write_perm = None
|
||||
if not perm:
|
||||
# such user isn't defined in Permissions for repository
|
||||
# we now on-the-fly add new permission
|
||||
|
|
@ -356,6 +355,7 @@ def branch_permission_setter(request):
|
|||
Session().flush()
|
||||
|
||||
perm = write_perm
|
||||
created_write_perms.append(write_perm)
|
||||
|
||||
rule = UserToRepoBranchPermission()
|
||||
rule.rule_to_perm_id = perm.repo_to_perm_id
|
||||
|
|
@ -366,15 +366,25 @@ def branch_permission_setter(request):
|
|||
Session().add(rule)
|
||||
Session().commit()
|
||||
|
||||
created_rules.append(rule)
|
||||
|
||||
# Flush permission caches so the change is immediately visible
|
||||
# Critical for tests with PostgreSQL where permission checks happen
|
||||
# in separate VCSServer process that needs fresh permission data
|
||||
PermissionModel().trigger_permission_flush([user_id])
|
||||
|
||||
return rule
|
||||
|
||||
@request.addfinalizer
|
||||
def cleanup():
|
||||
if rule:
|
||||
# Clean up ALL created rules and permissions, not just the last ones
|
||||
# Critical for PostgreSQL where orphaned rows cause duplicate results
|
||||
for rule in created_rules:
|
||||
Session().delete(rule)
|
||||
Session().commit()
|
||||
if write_perm:
|
||||
Session().commit()
|
||||
|
||||
for write_perm in created_write_perms:
|
||||
Session().delete(write_perm)
|
||||
Session().commit()
|
||||
Session().commit()
|
||||
|
||||
return _branch_permissions_setter
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue