Some checks failed
CI / test-unit (push) Has been cancelled
CI / test-integration (push) Has been cancelled
CI / test-container (push) Has been cancelled
CI / test-e2e (push) Has been cancelled
CI / test-virgin-user (push) Has been cancelled
CI / test-virgin-root (push) Has been cancelled
- Switch MIRRORS to SSH-based URLs including custom ports/domains
(GitHub, git.veen.world, code.cymais.cloud)
- Extend mirror IO:
- load_config_mirrors filters empty values
- read_mirrors_file now supports:
* "name url" lines
* "url" lines with auto-generated names from URL host (host[:port])
- write_mirrors_file prints full preview content
- Enhance git_remote:
- determine_primary_remote_url used for origin bootstrap
- ensure_origin_remote keeps existing origin URL and
adds all mirror URLs as additional push URLs
- add is_remote_reachable() helper based on `git ls-remote --exit-code`
- Implement non-destructive remote mirror checks in setup_cmd:
- `_probe_mirror()` wraps `git ls-remote` and returns (ok, message)
- `pkgmgr mirror setup --remote` now probes each mirror URL and
prints [OK]/[WARN] with details instead of placeholder text
- Add unit tests for mirror actions:
- test_git_remote: default SSH URL building and primary URL selection
- test_io: config + MIRRORS parsing including auto-named URL-only entries
- test_setup_cmd: probe_mirror success/failure handling
https://chatgpt.com/share/693adee0-aa3c-800f-b72a-98473fdaf760
111 lines
3.4 KiB
Python
111 lines
3.4 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from __future__ import annotations
|
|
|
|
import unittest
|
|
|
|
from pkgmgr.actions.mirror.git_remote import (
|
|
build_default_ssh_url,
|
|
determine_primary_remote_url,
|
|
)
|
|
from pkgmgr.actions.mirror.types import MirrorMap, Repository
|
|
|
|
|
|
class TestMirrorGitRemote(unittest.TestCase):
|
|
"""
|
|
Unit tests for SSH URL and primary remote selection logic.
|
|
"""
|
|
|
|
def test_build_default_ssh_url_without_port(self) -> None:
|
|
repo: Repository = {
|
|
"provider": "github.com",
|
|
"account": "kevinveenbirkenbach",
|
|
"repository": "package-manager",
|
|
}
|
|
|
|
url = build_default_ssh_url(repo)
|
|
self.assertEqual(
|
|
url,
|
|
"git@github.com:kevinveenbirkenbach/package-manager.git",
|
|
)
|
|
|
|
def test_build_default_ssh_url_with_port(self) -> None:
|
|
repo: Repository = {
|
|
"provider": "code.cymais.cloud",
|
|
"account": "kevinveenbirkenbach",
|
|
"repository": "pkgmgr",
|
|
"port": 2201,
|
|
}
|
|
|
|
url = build_default_ssh_url(repo)
|
|
self.assertEqual(
|
|
url,
|
|
"ssh://git@code.cymais.cloud:2201/kevinveenbirkenbach/pkgmgr.git",
|
|
)
|
|
|
|
def test_build_default_ssh_url_missing_fields_returns_none(self) -> None:
|
|
repo: Repository = {
|
|
"provider": "github.com",
|
|
"account": "kevinveenbirkenbach",
|
|
# "repository" fehlt absichtlich
|
|
}
|
|
|
|
url = build_default_ssh_url(repo)
|
|
self.assertIsNone(url)
|
|
|
|
def test_determine_primary_remote_url_prefers_origin_in_resolved_mirrors(
|
|
self,
|
|
) -> None:
|
|
repo: Repository = {
|
|
"provider": "github.com",
|
|
"account": "kevinveenbirkenbach",
|
|
"repository": "package-manager",
|
|
}
|
|
mirrors: MirrorMap = {
|
|
"origin": "git@github.com:kevinveenbirkenbach/package-manager.git",
|
|
"backup": "ssh://git@git.veen.world:2201/kevinveenbirkenbach/pkgmgr.git",
|
|
}
|
|
|
|
url = determine_primary_remote_url(repo, mirrors)
|
|
self.assertEqual(
|
|
url,
|
|
"git@github.com:kevinveenbirkenbach/package-manager.git",
|
|
)
|
|
|
|
def test_determine_primary_remote_url_uses_any_mirror_if_no_origin(self) -> None:
|
|
repo: Repository = {
|
|
"provider": "github.com",
|
|
"account": "kevinveenbirkenbach",
|
|
"repository": "package-manager",
|
|
}
|
|
mirrors: MirrorMap = {
|
|
"backup": "ssh://git@git.veen.world:2201/kevinveenbirkenbach/pkgmgr.git",
|
|
"mirror2": "ssh://git@code.cymais.cloud:2201/kevinveenbirkenbach/pkgmgr.git",
|
|
}
|
|
|
|
url = determine_primary_remote_url(repo, mirrors)
|
|
# Alphabetisch sortiert: backup, mirror2 → backup gewinnt
|
|
self.assertEqual(
|
|
url,
|
|
"ssh://git@git.veen.world:2201/kevinveenbirkenbach/pkgmgr.git",
|
|
)
|
|
|
|
def test_determine_primary_remote_url_falls_back_to_default_ssh(self) -> None:
|
|
repo: Repository = {
|
|
"provider": "github.com",
|
|
"account": "kevinveenbirkenbach",
|
|
"repository": "package-manager",
|
|
}
|
|
mirrors: MirrorMap = {}
|
|
|
|
url = determine_primary_remote_url(repo, mirrors)
|
|
self.assertEqual(
|
|
url,
|
|
"git@github.com:kevinveenbirkenbach/package-manager.git",
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|