Skip to content

Commit 2b25a8a

Browse files
committed
Guard native CLI packaging PHP selection
1 parent 3a40a06 commit 2b25a8a

2 files changed

Lines changed: 46 additions & 2 deletions

File tree

packages/playground/cli-native/src/bin/package-native-cli.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,7 @@ fn print_help() {
325325
--out-dir <path> Output directory, defaults to target/package\n\
326326
--name <name> Package directory/archive name\n\
327327
--php-version <version> Include only this PHP version; repeatable\n\
328+
Omit to package all supported PHP versions\n\
328329
--precompile-wasmtime Generate target-specific Wasmtime .cwasm assets\n\
329330
--no-precompile-wasmtime Copy wasm assets without target-specific precompile\n\
330331
--skip-wordpress-assets Do not copy bundled WordPress/SQLite ZIPs\n\

packages/playground/cli-native/src/packaging.rs

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1380,10 +1380,11 @@ mod tests {
13801380

13811381
use super::{
13821382
extract_package_archive, package_native_cli, precompile_packaged_wasm_for_target,
1383-
PackageOptions, PACKAGE_SHARE_DIR,
1383+
selected_php_manifest, PackageOptions, PACKAGE_SHARE_DIR,
13841384
};
13851385
use crate::{
1386-
assets::{load_php_assets_manifest, select_php_asset},
1386+
args::SUPPORTED_PHP_VERSIONS,
1387+
assets::{load_php_assets_manifest, select_php_asset, AssetManifest, FileAsset, PhpAsset},
13871388
sha256::sha256_hex,
13881389
};
13891390
use zip::{write::SimpleFileOptions, CompressionMethod, ZipWriter};
@@ -1571,6 +1572,48 @@ mod tests {
15711572
);
15721573
}
15731574

1575+
fn fake_php_asset(version: &str) -> PhpAsset {
1576+
let normalized = version.replace('.', "_");
1577+
PhpAsset {
1578+
version: version.to_string(),
1579+
runtime: None,
1580+
js: FileAsset {
1581+
path: PathBuf::from(format!("php_{normalized}.js")),
1582+
sha256: "0".repeat(64),
1583+
},
1584+
wasm: FileAsset {
1585+
path: PathBuf::from(format!("php_{normalized}.wasm")),
1586+
sha256: "0".repeat(64),
1587+
},
1588+
wasmtime: None,
1589+
}
1590+
}
1591+
1592+
#[test]
1593+
fn default_selection_includes_every_supported_php_version() {
1594+
let mut php = vec![fake_php_asset("5.2")];
1595+
php.extend(
1596+
SUPPORTED_PHP_VERSIONS
1597+
.iter()
1598+
.map(|version| fake_php_asset(version)),
1599+
);
1600+
php.push(fake_php_asset("9.9"));
1601+
let manifest = AssetManifest {
1602+
schema_version: 1,
1603+
runtime: "node-builds/asyncify".to_string(),
1604+
php,
1605+
};
1606+
1607+
let selected = selected_php_manifest(&manifest, &[]).unwrap();
1608+
let versions = selected
1609+
.php
1610+
.iter()
1611+
.map(|asset| asset.version.as_str())
1612+
.collect::<Vec<_>>();
1613+
1614+
assert_eq!(versions, SUPPORTED_PHP_VERSIONS.to_vec());
1615+
}
1616+
15741617
#[test]
15751618
fn packages_supported_assets_by_default() {
15761619
let root = temp_dir("supported-asset-root");

0 commit comments

Comments
 (0)