mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-07 19:22:14 +09:00
fix(ci): keep published source maps when a rebuild differs (#3113)
This commit is contained in:
+35
-1
@@ -562,7 +562,12 @@ pub(crate) fn split_append_only_upload_plan(
|
||||
let mut skipped = Vec::new();
|
||||
for item in plan {
|
||||
if let Some(remote) = existing_objects.get(&item.key) {
|
||||
ensure_existing_s3_object_matches_local(bucket, &item, remote)?;
|
||||
if let Err(error) = ensure_existing_s3_object_matches_local(bucket, &item, remote) {
|
||||
if !item.key.ends_with(".map") {
|
||||
return Err(error);
|
||||
}
|
||||
println!("Keeping the published source map: {error}");
|
||||
}
|
||||
skipped.push(item);
|
||||
} else {
|
||||
pending.push(item);
|
||||
@@ -1159,6 +1164,35 @@ mod tests {
|
||||
assert!(error.to_string().contains("differs from local file"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn append_only_plan_keeps_a_published_source_map_that_differs() {
|
||||
let temp = tempfile::tempdir().unwrap();
|
||||
let path = temp.path().join("abc.worker.js.map");
|
||||
fs::write(&path, "local").unwrap();
|
||||
let plan = vec![S3UploadPlanItem::new(
|
||||
path,
|
||||
"assets/abc.worker.js.map".to_string(),
|
||||
)];
|
||||
let existing = BTreeMap::from([(
|
||||
"assets/abc.worker.js.map".to_string(),
|
||||
S3ObjectMetadata {
|
||||
e_tag: Some("\"00000000000000000000000000000000\"".to_string()),
|
||||
size: Some(9),
|
||||
},
|
||||
)]);
|
||||
|
||||
let (pending, skipped) = split_append_only_upload_plan("bucket", plan, &existing).unwrap();
|
||||
|
||||
assert!(pending.is_empty());
|
||||
assert_eq!(
|
||||
skipped
|
||||
.iter()
|
||||
.map(|item| item.key.as_str())
|
||||
.collect::<Vec<_>>(),
|
||||
vec!["assets/abc.worker.js.map"]
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn append_only_plan_rejects_existing_key_without_comparable_etag() {
|
||||
let temp = tempfile::tempdir().unwrap();
|
||||
|
||||
Reference in New Issue
Block a user