From 1e18fce3b05b14d8e90ecdcf2a0b3dbf0759b2ee Mon Sep 17 00:00:00 2001 From: Xi Xu Date: Thu, 31 Jul 2025 14:40:48 +0800 Subject: [PATCH] Add openSUSE platform support and tests Added openSUSE to the supported platforms in the documentation and configuration. Updated README with openSUSE usage instructions and examples. Introduced tests to verify openSUSE path transformation logic. --- README.md | 26 ++++++++++++++++++ src/config/platforms.js | 1 + test/opensuse.test.js | 61 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 test/opensuse.test.js diff --git a/README.md b/README.md index 355b805..be846af 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ [![Ubuntu](https://img.shields.io/badge/Ubuntu-E95420?logo=ubuntu&logoColor=white)](#linux-发行版加速) [![Fedora](https://img.shields.io/badge/Fedora-294172?logo=fedora&logoColor=white)](#linux-发行版加速) [![Rocky Linux](https://img.shields.io/badge/Rocky%20Linux-10B981?logo=rockylinux&logoColor=white)](#linux-发行版加速) +[![openSUSE](https://img.shields.io/badge/openSUSE-73BA25?logo=opensuse&logoColor=white)](#linux-发行版加速) [![Arch Linux](https://img.shields.io/badge/Arch%20Linux-1793D1?logo=archlinux&logoColor=white)](#linux-发行版加速) [![arXiv](https://img.shields.io/badge/arXiv-B31B1B?logo=arxiv&logoColor=white)](#学术资源加速) [![容器注册表](https://img.shields.io/badge/容器注册表-%23007EC6.svg?logo=docker&logoColor=white)](#容器注册表) @@ -139,6 +140,7 @@ | Ubuntu | `ubuntu` | `https://archive.ubuntu.com/...` | `https://xget.xi-xu.me/ubuntu/...` | | Fedora | `fedora` | `https://dl.fedoraproject.org/...` | `https://xget.xi-xu.me/fedora/...` | | Rocky Linux | `rocky` | `https://download.rockylinux.org/...` | `https://xget.xi-xu.me/rocky/...` | +| openSUSE | `opensuse` | `https://download.opensuse.org/...` | `https://xget.xi-xu.me/opensuse/...` | | Arch Linux | `arch` | `https://geo.mirror.pkgbuild.com/...` | `https://xget.xi-xu.me/arch/...` | | arXiv | `arxiv` | `https://arxiv.org/...` | `https://xget.xi-xu.me/arxiv/...` | | 容器注册表 | `cr` | 见[容器注册表](#容器注册表) | 见[容器注册表](#容器注册表) | @@ -420,6 +422,12 @@ https://download.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os/Packages/b/bash-5.1 # 转换后(添加 rocky 前缀) https://xget.xi-xu.me/rocky/pub/rocky/9/BaseOS/x86_64/os/Packages/b/bash-5.1.8-6.el9.x86_64.rpm +# openSUSE 包原始链接 +https://download.opensuse.org/distribution/leap/15.5/repo/oss/x86_64/vim-9.0.1572-150500.20.8.1.x86_64.rpm + +# 转换后(添加 opensuse 前缀) +https://xget.xi-xu.me/opensuse/distribution/leap/15.5/repo/oss/x86_64/vim-9.0.1572-150500.20.8.1.x86_64.rpm + # Arch Linux 包原始链接 https://geo.mirror.pkgbuild.com/core/os/x86_64/linux-6.6.10.arch1-1-x86_64.pkg.tar.zst @@ -1125,6 +1133,24 @@ sudo sed -i 's|^#baseurl=http://dl.rockylinux.org|baseurl=https://xget.xi-xu.me/ sudo dnf makecache ``` +#### openSUSE Zypper 配置 + +```bash +# 配置 openSUSE Leap 镜像 +sudo zypper mr -d repo-oss +sudo zypper ar -f https://xget.xi-xu.me/opensuse/distribution/leap/15.5/repo/oss/ repo-oss-xget + +# 配置 openSUSE Tumbleweed 镜像 +sudo zypper mr -d repo-oss +sudo zypper ar -f https://xget.xi-xu.me/opensuse/tumbleweed/repo/oss/ repo-oss-xget + +# 刷新软件源 +sudo zypper refresh + +# 验证配置 +sudo zypper lr -u +``` + #### Arch Linux Pacman 配置 ```bash diff --git a/src/config/platforms.js b/src/config/platforms.js index 5978310..ee51178 100644 --- a/src/config/platforms.js +++ b/src/config/platforms.js @@ -26,6 +26,7 @@ export const PLATFORMS = { ubuntu: 'https://archive.ubuntu.com', fedora: 'https://dl.fedoraproject.org', rocky: 'https://download.rockylinux.org', + opensuse: 'https://download.opensuse.org', arch: 'https://geo.mirror.pkgbuild.com', arxiv: 'https://arxiv.org', diff --git a/test/opensuse.test.js b/test/opensuse.test.js new file mode 100644 index 0000000..d31edc0 --- /dev/null +++ b/test/opensuse.test.js @@ -0,0 +1,61 @@ +import { describe, expect, it } from 'vitest'; +import { PLATFORMS, transformPath } from '../src/config/platforms.js'; + +describe('openSUSE Platform Configuration', () => { + it('should have openSUSE platform configured', () => { + expect(PLATFORMS.opensuse).toBe('https://download.opensuse.org'); + }); + + it('should transform openSUSE paths correctly', () => { + const testCases = [ + { + input: + '/opensuse/distribution/leap/15.5/repo/oss/x86_64/vim-9.0.1572-150500.20.8.1.x86_64.rpm', + expected: '/distribution/leap/15.5/repo/oss/x86_64/vim-9.0.1572-150500.20.8.1.x86_64.rpm', + description: 'Leap package file' + }, + { + input: '/opensuse/tumbleweed/repo/oss/x86_64/firefox-121.0-1.1.x86_64.rpm', + expected: '/tumbleweed/repo/oss/x86_64/firefox-121.0-1.1.x86_64.rpm', + description: 'Tumbleweed package file' + }, + { + input: '/opensuse/distribution/leap/15.5/repo/oss/repodata/repomd.xml', + expected: '/distribution/leap/15.5/repo/oss/repodata/repomd.xml', + description: 'repository metadata' + }, + { + input: + '/opensuse/source/distribution/leap/15.5/repo/oss/src/kernel-default-5.14.21-150500.55.44.1.src.rpm', + expected: + '/source/distribution/leap/15.5/repo/oss/src/kernel-default-5.14.21-150500.55.44.1.src.rpm', + description: 'source package' + }, + { + input: '/opensuse/update/leap/15.5/oss/x86_64/systemd-249.17-150400.8.35.1.x86_64.rpm', + expected: '/update/leap/15.5/oss/x86_64/systemd-249.17-150400.8.35.1.x86_64.rpm', + description: 'update package' + } + ]; + + testCases.forEach(({ input, expected, description }) => { + const result = transformPath(input, 'opensuse'); + expect(result).toBe(expected, `Failed for ${description}: ${input}`); + }); + }); + + it('should handle root path correctly', () => { + const result = transformPath('/opensuse/', 'opensuse'); + expect(result).toBe('/'); + }); + + it('should handle paths without platform prefix', () => { + const result = transformPath( + '/distribution/leap/15.5/repo/oss/x86_64/vim-9.0.1572-150500.20.8.1.x86_64.rpm', + 'opensuse' + ); + expect(result).toBe( + '/distribution/leap/15.5/repo/oss/x86_64/vim-9.0.1572-150500.20.8.1.x86_64.rpm' + ); + }); +});