@@ -3,8 +3,13 @@ import {
33 PLATFORM_PACKAGE_MATRIX ,
44 binaryFilenameForSpec ,
55 buildOptionalDependencyMap ,
6+ getHostPlatformPackageSpec ,
67 getPlatformPackageSpecByName ,
8+ getPlatformPackageSpecForHost ,
9+ normalizeHostArch ,
10+ normalizeHostPlatform ,
711 sortPlatformPackageSpecs ,
12+ type PlatformPackageSpec ,
813} from "../scripts/prebuilt-package-helpers" ;
914
1015describe ( "prebuilt package helpers" , ( ) => {
@@ -22,12 +27,50 @@ describe("prebuilt package helpers", () => {
2227 }
2328 } ) ;
2429
30+ test ( "binaryFilenameForSpec adds .exe for windows packages" , ( ) => {
31+ const windowsSpec : PlatformPackageSpec = {
32+ packageName : "hunkdiff-windows-x64" ,
33+ os : "windows" ,
34+ cpu : "x64" ,
35+ binaryName : "hunk" ,
36+ binaryRelativePath : "bin/hunk.exe" ,
37+ } ;
38+
39+ expect ( binaryFilenameForSpec ( windowsSpec ) ) . toBe ( "hunk.exe" ) ;
40+ } ) ;
41+
42+ test ( "normalizeHostPlatform and normalizeHostArch reject unsupported values" , ( ) => {
43+ expect ( normalizeHostPlatform ( "linux" ) ) . toBe ( "linux" ) ;
44+ expect ( normalizeHostPlatform ( "win32" ) ) . toBe ( "windows" ) ;
45+ expect ( normalizeHostPlatform ( "freebsd" as NodeJS . Platform ) ) . toBeUndefined ( ) ;
46+
47+ expect ( normalizeHostArch ( "x64" ) ) . toBe ( "x64" ) ;
48+ expect ( normalizeHostArch ( "arm64" ) ) . toBe ( "arm64" ) ;
49+ expect ( normalizeHostArch ( "ia32" as NodeJS . Architecture ) ) . toBeUndefined ( ) ;
50+ } ) ;
51+
2552 test ( "getPlatformPackageSpecByName returns known package specs" , ( ) => {
2653 expect ( getPlatformPackageSpecByName ( "hunkdiff-linux-x64" ) ?. cpu ) . toBe ( "x64" ) ;
2754 expect ( getPlatformPackageSpecByName ( "hunkdiff-darwin-arm64" ) ?. os ) . toBe ( "darwin" ) ;
2855 expect ( getPlatformPackageSpecByName ( "hunkdiff-does-not-exist" ) ) . toBeUndefined ( ) ;
2956 } ) ;
3057
58+ test ( "getPlatformPackageSpecForHost resolves supported combinations and rejects unsupported ones" , ( ) => {
59+ expect ( getPlatformPackageSpecForHost ( "linux" , "x64" ) . packageName ) . toBe ( "hunkdiff-linux-x64" ) ;
60+ expect ( getPlatformPackageSpecForHost ( "darwin" , "arm64" ) . packageName ) . toBe ( "hunkdiff-darwin-arm64" ) ;
61+ expect ( ( ) => getPlatformPackageSpecForHost ( "freebsd" as NodeJS . Platform , "x64" ) ) . toThrow (
62+ "Unsupported host platform for prebuilt packaging: freebsd" ,
63+ ) ;
64+ expect ( ( ) => getPlatformPackageSpecForHost ( "linux" , "ia32" as NodeJS . Architecture ) ) . toThrow (
65+ "Unsupported host architecture for prebuilt packaging: ia32" ,
66+ ) ;
67+ expect ( ( ) => getPlatformPackageSpecForHost ( "linux" , "arm64" ) ) . toThrow ( "No published prebuilt package spec matches linux/arm64" ) ;
68+ } ) ;
69+
70+ test ( "getHostPlatformPackageSpec resolves the current machine" , ( ) => {
71+ expect ( getHostPlatformPackageSpec ( ) ) . toEqual ( getPlatformPackageSpecForHost ( process . platform , process . arch ) ) ;
72+ } ) ;
73+
3174 test ( "sortPlatformPackageSpecs keeps package publish order stable" , ( ) => {
3275 const reversed = [ ...PLATFORM_PACKAGE_MATRIX ] . reverse ( ) ;
3376 expect ( sortPlatformPackageSpecs ( reversed ) . map ( ( spec ) => spec . packageName ) ) . toEqual ( [
0 commit comments