Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion src/commands/validate-schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@ import {
readAndValidateInputSchema,
readInputSchema,
readStorageSchema,
validateActorVersion,
validateDatasetSchema,
validateKvsSchema,
validateOutputSchema,
} from '../lib/input_schema.js';
import { error, info, success } from '../lib/outputs.js';
import { Ajv2019 } from '../lib/utils.js';
import { Ajv2019, getLocalConfig } from '../lib/utils.js';

export class ValidateSchemaCommand extends ApifyCommand<typeof ValidateSchemaCommand> {
static override name = 'validate-schema' as const;
Expand Down Expand Up @@ -77,6 +78,18 @@ When no path is provided, validates all schemas found in '${LOCAL_CONFIG_PATH}':
let foundAny = false;
let hasErrors = false;

try {
const localConfig = getLocalConfig(cwd);

if (localConfig) {
validateActorVersion(localConfig);
}
} catch (err) {
foundAny = true;
hasErrors = true;
error({ message: (err as Error).message });
}

// Input schema — not using readAndValidateInputSchema here because it throws
// when no schema is found; in the all-schemas scan, a missing input schema
// should be silently skipped, not treated as an error.
Expand Down
21 changes: 21 additions & 0 deletions src/lib/input_schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ import { ACTOR_SPECIFICATION_FOLDER, LOCAL_CONFIG_PATH } from './consts.js';
import { info, warning } from './outputs.js';
import { Ajv2019, getJsonFileContent, getLocalConfig, getLocalKeyValueStorePath } from './utils.js';

// Actor versions on the platform are MAJOR.MINOR with non-negative integers and no leading
// zeros. Three-part SemVer (e.g. "1.0.0") is a build-number format the platform rejects.
// TODO: replace with the shared export from @apify/consts once apify-shared-js #655 lands.
const ACTOR_VERSION_REGEX = /^(0|[1-9]\d*)\.(0|[1-9]\d*)$/;

const DEFAULT_INPUT_SCHEMA_PATHS = [
'.actor/INPUT_SCHEMA.json',
'./INPUT_SCHEMA.json',
Expand Down Expand Up @@ -231,6 +236,22 @@ export const readOutputSchema = ({
};
};

export function validateActorVersion(config: Record<string, unknown>): void {
if (config.version === undefined) {
return;
}

if (typeof config.version === 'string' && ACTOR_VERSION_REGEX.test(config.version)) {
return;
}

const received = typeof config.version === 'string' ? `"${config.version}"` : JSON.stringify(config.version);

throw new Error(
`Actor version in '${LOCAL_CONFIG_PATH}' must be in MAJOR.MINOR format, for example "1.0". Received ${received}.`,
);
}

/**
* Goes to the Actor directory and creates INPUT.json file from the input schema prefills.

Expand Down
36 changes: 35 additions & 1 deletion test/local/commands/validate-schema.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import { mkdir, readFile, writeFile } from 'node:fs/promises';
import { basename, join } from 'node:path';
import process from 'node:process';

import { ValidateSchemaCommand } from '../../../src/commands/validate-schema.js';
import { testRunCommand } from '../../../src/lib/command-framework/apify-command.js';
import { CommandExitCodes } from '../../../src/lib/consts.js';
import { validDatasetSchemaPath } from '../../__setup__/dataset-schemas/paths.js';
import { useConsoleSpy } from '../../__setup__/hooks/useConsoleSpy.js';
import { useTempPath } from '../../__setup__/hooks/useTempPath.js';
Expand All @@ -20,11 +22,13 @@
basePath: string,
{
inputSchema,
version,
datasetSchemaRef,
outputSchemaRef,
kvsSchemaRef,
}: {
inputSchema?: Record<string, unknown>;
version?: string;
datasetSchemaRef?: string | Record<string, unknown>;
outputSchemaRef?: string | Record<string, unknown>;
kvsSchemaRef?: string | Record<string, unknown>;
Expand All @@ -47,7 +51,7 @@
const actorJson: Record<string, unknown> = {
actorSpecification: 1,
name: 'test-actor',
version: '0.1',
version: version ?? '0.1',
input: './input_schema.json',
};

Expand Down Expand Up @@ -131,6 +135,7 @@
});

beforeEach(async () => {
process.exitCode = undefined;
await beforeAllCalls();
});

Expand Down Expand Up @@ -166,6 +171,33 @@
expect(allMessages).not.toContain('Key-Value Store');
});

it.each(['1.0.0', '01.0', '1.01'])('should reject platform-invalid Actor version %s', async (version) => {
await setupActorConfig(joinPath(), { version });

await testRunCommand(ValidateSchemaCommand, {});

const allMessages = logMessages.error.join('\n');
expect(allMessages).toContain(

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 20)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 1.01

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.01". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.01". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 20)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 1.01

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.01". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.01". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 20)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 01.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 20)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 01.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 20)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 01.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 20)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 01.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 20)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 1.0.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 20)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 1.0.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 20)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 1.0.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 20)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 1.0.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 24)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 1.01

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.01". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.01". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 24)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 1.01

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.01". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.01". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 24)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 01.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 24)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 01.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 24)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 01.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 24)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 01.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 24)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 1.0.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 24)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 1.0.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 24)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 1.0.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 24)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 1.0.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 22)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 1.01

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.01". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.01". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 22)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 1.01

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.01". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.01". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 22)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 01.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 22)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 01.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 22)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 01.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 22)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 01.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "01.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 22)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 1.0.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 22)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 1.0.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 22)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 1.0.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24

Check failure on line 180 in test/local/commands/validate-schema.test.ts

View workflow job for this annotation

GitHub Actions / Local Tests (windows-2025, 22)

test/local/commands/validate-schema.test.ts > apify validate-schema > without path argument (all schemas) > should reject platform-invalid Actor version 1.0.0

AssertionError: expected 'Error: Actor version in \'.actor\acto…' to contain 'Actor version in \'.actor/actor.json\…' - Expected + Received - Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Error: Actor version in '.actor\actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "1.0.0". + Info: Validating input schema at D:\a\apify-cli\apify-cli\test\tmp\validate-schema\.actor\input_schema.json + Success: Input schema is valid. ❯ test/local/commands/validate-schema.test.ts:180:24
`Actor version in '.actor/actor.json' must be in MAJOR.MINOR format, for example "1.0". Received "${version}".`,
);
expect(allMessages).toContain('Input schema is valid');
expect(process.exitCode).toBe(CommandExitCodes.InvalidInput);
});

it.each(['0.0', '1.0', '99.99', '100.0', '1.100'])(
'should accept platform-valid Actor version %s',
async (version) => {
await setupActorConfig(joinPath(), { version });

await testRunCommand(ValidateSchemaCommand, {});

const allMessages = logMessages.error.join('\n');
expect(allMessages).toContain('Input schema is valid');
expect(allMessages).not.toContain('Actor version in');
expect(process.exitCode).toBeUndefined();
},
);

it('should report error for invalid dataset schema', async () => {
await setupActorConfig(joinPath(), {
datasetSchemaRef: {
Expand Down Expand Up @@ -214,6 +246,7 @@

it('should only validate input schema when path arg is provided', async () => {
await setupActorConfig(joinPath(), {
version: '1.0.0',
datasetSchemaRef: validDatasetSchemaPath,
outputSchemaRef: validOutputSchemaPath,
kvsSchemaRef: validKvsSchemaPath,
Expand All @@ -225,6 +258,7 @@

const allMessages = logMessages.error.join('\n');
expect(allMessages).toContain('Input schema is valid');
expect(allMessages).not.toContain('Actor version in');
expect(allMessages).not.toContain('Dataset');
expect(allMessages).not.toContain('Output');
expect(allMessages).not.toContain('Key-Value Store');
Expand Down
Loading