feat: unify source and skills for Dever 0.1.2 installation
This commit is contained in:
1 parent
a2e0436ed4
commit
19f122b4b4
47 files changed
+1951
-63
No files matched your search
@@ -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();
|
||||
|
||||
Reference in new issue
Block a user