From 8ce26b58e9ed3c7b0d7a2954787e825046d1ebe8 Mon Sep 17 00:00:00 2001 From: martinRenou Date: Tue, 24 Feb 2026 13:58:44 +0100 Subject: [PATCH] Fixup aliases --- packages/mambajs-core/src/helper.ts | 2 +- .../tests/mixed/test-create-channel-alias.ts | 75 ++++++++++++++++++- 2 files changed, 74 insertions(+), 3 deletions(-) diff --git a/packages/mambajs-core/src/helper.ts b/packages/mambajs-core/src/helper.ts index dd827ad..8cff232 100644 --- a/packages/mambajs-core/src/helper.ts +++ b/packages/mambajs-core/src/helper.ts @@ -493,7 +493,7 @@ export function formatChannels( channel: ILock['channelInfo'][keyof ILock['channelInfo']]; } | null => { // Check if it's a known channel alias - if (DEFAULT_CHANNELS.includes(urlOrName)) { + if (Object.keys(DEFAULT_CHANNELS_INFO).includes(urlOrName)) { return { name: urlOrName, channel: DEFAULT_CHANNELS_INFO[urlOrName] diff --git a/unittests/tests/mixed/test-create-channel-alias.ts b/unittests/tests/mixed/test-create-channel-alias.ts index e8419ba..8502108 100644 --- a/unittests/tests/mixed/test-create-channel-alias.ts +++ b/unittests/tests/mixed/test-create-channel-alias.ts @@ -4,7 +4,7 @@ import { expect } from 'earl'; const logger = new TestLogger(); -const yml = ` +let yml = ` channels: - emscripten-forge - conda-forge @@ -39,6 +39,77 @@ create({yml, logger}).then(async result => { expect(condaPackages['ipycanvas'].version).toEqual('0.13.2'); expect(pipPackages['bqplot'].version).toEqual('0.12.42'); - // Channel alias is deprecated + // Channel alias emscripten-forge points to 3x but is deprecated expect(logger.warnings).toInclude('deprecated'); + expect(condaPackages['emscripten-abi'].version[0]).toEqual('3'); +}); + +yml = ` +channels: + - emscripten-forge-3x + - conda-forge +dependencies: + - pandas + - xeus-python + - ipycanvas=0.13.2 + - pip: + - ipydatagrid + - bqplot ==0.12.42 +`; + +create({yml, logger}).then(async result => { + const condaPackageNames = Object.values(result.packages).map(pkg => pkg.name); + const pipPackageNames = Object.values(result.pipPackages).map(pkg => pkg.name); + + // Index by package name for convenienve + const condaPackages: { [key: string]: ISolvedPackage } = {}; + Object.keys(result.packages).map(filename => { + condaPackages[result.packages[filename].name] = + result.packages[filename]; + }); + const pipPackages: { [key: string]: ISolvedPipPackage } = {}; + Object.keys(result.pipPackages).map(filename => { + pipPackages[result.pipPackages[filename].name] = + result.pipPackages[filename]; + }); + + expect(condaPackageNames).toInclude('xeus-python', 'xeus-python-shell', 'pandas', 'ipycanvas', 'ipywidgets'); + expect(pipPackageNames).toInclude('bqplot', 'ipydatagrid'); + + expect(condaPackages['emscripten-abi'].version[0]).toEqual('3'); +}); + +yml = ` +channels: + - emscripten-forge-4x + - conda-forge +dependencies: + - pandas + - xeus-python + - ipycanvas=0.13.2 + - pip: + - ipydatagrid + - bqplot ==0.12.42 +`; + +create({yml, logger}).then(async result => { + const condaPackageNames = Object.values(result.packages).map(pkg => pkg.name); + const pipPackageNames = Object.values(result.pipPackages).map(pkg => pkg.name); + + // Index by package name for convenienve + const condaPackages: { [key: string]: ISolvedPackage } = {}; + Object.keys(result.packages).map(filename => { + condaPackages[result.packages[filename].name] = + result.packages[filename]; + }); + const pipPackages: { [key: string]: ISolvedPipPackage } = {}; + Object.keys(result.pipPackages).map(filename => { + pipPackages[result.pipPackages[filename].name] = + result.pipPackages[filename]; + }); + + expect(condaPackageNames).toInclude('xeus-python', 'xeus-python-shell', 'pandas', 'ipycanvas', 'ipywidgets'); + expect(pipPackageNames).toInclude('bqplot', 'ipydatagrid'); + + expect(condaPackages['emscripten-abi'].version[0]).toEqual('4'); });