feat: unify source and skills for Dever 0.1.2 installation

This commit is contained in:
Antigravity committed 2026-10-05 02:49:17 +00:00
1 parent a2e0436ed4
commit 19f122b4b4
47 files changed
+1951 -63

No files matched your search

+32 -12
View File
@@ -108,22 +108,24 @@ fn signed_catalog_paths_and_total_size_are_bounded_before_extraction() {
#[test]
fn official_redirects_reject_http_credentials_ports_and_foreign_hosts() {
let current = "https://github.com/shemic/dever-main/releases/latest/download/a";
let current = "https://git.dever.cc/shemic/dever/dist/latest/a";
assert!(
redirect(
current,
"https://release-assets.githubusercontent.com/asset?token=opaque"
"https://git.dever.cc/shemic/dever/dist/1.2.3/a?token=opaque"
)
.is_ok()
);
assert!(redirect(current, "/shemic/dever-main/releases/download/v1.2.3/a").is_ok());
assert!(redirect(current, "/shemic/dever/dist/1.2.3/a").is_ok());
for address in [
"http://github.com/a",
"http://git.dever.cc/a",
"https://evil.example/a",
"https://github.com.evil.example/a",
"https://user@github.com/a",
"https://github.com:444/a",
"https://github.com/a#fragment",
"https://git.dever.cc.evil.example/a",
"https://user@git.dever.cc/a",
"https://git.dever.cc:444/a",
"https://git.dever.cc/a#fragment",
"https://github.com/a",
"https://release-assets.githubusercontent.com/a",
] {
assert!(redirect(current, address).is_err(), "{address}");
}
@@ -135,14 +137,21 @@ fn official_asset_names_are_versioned_and_platform_specific() {
assert_eq!(
source.asset("latest", "manifest.json"),
format!(
"{OFFICIAL_RELEASES}/latest/download/dever-{}.manifest.json",
"https://git.dever.cc/shemic/dever/dist/latest/dever-{}.manifest.json",
platform_identity()
)
);
assert_eq!(
source.asset("1.2.3", "tar.zst"),
format!(
"{OFFICIAL_RELEASES}/download/v1.2.3/dever-{}.tar.zst",
"https://git.dever.cc/shemic/dever/dist/1.2.3/dever-{}.tar.zst",
platform_identity()
)
);
assert_eq!(
source.asset("1.2.3", "ext-runtime-pip-linux-x86_64.tar.zst"),
format!(
"https://git.dever.cc/shemic/dever/dist/1.2.3/dever-{}.ext-runtime-pip-linux-x86_64.tar.zst",
platform_identity()
)
);
@@ -174,7 +183,7 @@ fn server(responses: Vec<Vec<u8>>) -> (ReleaseSource, std::thread::JoinHandle<()
let base = format!("http://{}/releases", listener.local_addr().unwrap());
let worker = std::thread::spawn(move || {
let deadline = Instant::now() + Duration::from_secs(5);
for response in responses {
for (index, response) in responses.into_iter().enumerate() {
let mut stream = loop {
match listener.accept() {
Ok((stream, _)) => break stream,
@@ -194,7 +203,18 @@ fn server(responses: Vec<Vec<u8>>) -> (ReleaseSource, std::thread::JoinHandle<()
let mut reader = io::BufReader::new(stream.try_clone().unwrap());
let mut request = String::new();
reader.read_line(&mut request).unwrap();
assert!(request.starts_with("GET /releases/"));
let (selection, suffix) = [
("latest", "manifest.json"),
("latest", "manifest.sig"),
("1.2.3", "tar.zst"),
][index];
assert_eq!(
request,
format!(
"GET /releases/{selection}/dever-{}.{suffix} HTTP/1.1\r\n",
platform_identity()
)
);
loop {
let mut line = String::new();
reader.read_line(&mut line).unwrap();