diff --git a/src/spec-configuration/containerFeaturesOrder.ts b/src/spec-configuration/containerFeaturesOrder.ts index 3eaebce6d..ac0bbf149 100644 --- a/src/spec-configuration/containerFeaturesOrder.ts +++ b/src/spec-configuration/containerFeaturesOrder.ts @@ -16,19 +16,20 @@ interface FeatureNode { export function computeFeatureInstallationOrder(config: DevContainerConfig, features: FeatureSet[]) { - if (!config.overrideFeatureInstallOrder) { - return computeInstallationOrder(features); + if (config.overrideFeatureInstallOrder) { + return computeOverrideInstallationOrder(config, features); } else { - return computeOverrideInstallationOrder(config, features); + return computeInstallationOrder(features); } } function computeOverrideInstallationOrder(config: DevContainerConfig, features: FeatureSet[]) { + // Starts with the automatic installation order. const automaticOrder = computeInstallationOrder(features); + // Moves to the beginning the features that are explicitly configured. const orderedFeatures = []; - for (const featureId of config.overrideFeatureInstallOrder!) { const feature = automaticOrder.find(feature => feature.features[0].name === featureId); if (!feature) { diff --git a/src/test/container-features/generateFeaturesConfig.offline.test.ts b/src/test/container-features/generateFeaturesConfig.offline.test.ts index fab0a7a26..0296e1866 100644 --- a/src/test/container-features/generateFeaturesConfig.offline.test.ts +++ b/src/test/container-features/generateFeaturesConfig.offline.test.ts @@ -4,9 +4,8 @@ import { createPlainLog, LogLevel, makeLog } from '../../spec-utils/log'; import * as os from 'os'; import * as path from 'path'; import { mkdirpLocal } from '../../spec-utils/pfs'; -import { DevContainerConfig } from '../../spec-configuration/configuration'; +import { DevContainerConfig, DevContainerFeature } from '../../spec-configuration/configuration'; import { URI } from 'vscode-uri'; -import { DevContainerFeature } from '../../spec-common/injectHeadless'; export const output = makeLog(createPlainLog(text => process.stdout.write(text), () => LogLevel.Trace));