mirror of
https://github.com/chickensoft-games/setup-godot.git
synced 2025-08-14 12:55:08 +00:00
227 lines
10 KiB
TypeScript
227 lines
10 KiB
TypeScript
import {describe, expect, test} from '@jest/globals'
|
|
import path from 'path'
|
|
import os from 'os'
|
|
|
|
import {getGodotUrl, getPlatform, parseVersion, getExportTemplatePath} from '../src/utils'
|
|
|
|
describe('parseVersion', () => {
|
|
test('parses valid godot versions', () => {
|
|
expect(parseVersion('3.5.2')).toEqual({
|
|
major: '3',
|
|
minor: '5',
|
|
patch: '2',
|
|
label: ''
|
|
})
|
|
|
|
expect(parseVersion('4.0.0-beta1')).toEqual({
|
|
major: '4',
|
|
minor: '0',
|
|
patch: '0',
|
|
label: 'beta1'
|
|
})
|
|
|
|
expect(parseVersion('4.0.0-beta.16')).toEqual({
|
|
major: '4',
|
|
minor: '0',
|
|
patch: '0',
|
|
label: 'beta.16'
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('getGodotUrl', () => {
|
|
describe('useDotnet = true', () => {
|
|
test('4.0.0-beta1', () => {
|
|
expect(getGodotUrl('4.0.0-beta1', getPlatform('linux'), true, false)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/beta1/mono/Godot_v4.0-beta1_mono_linux_x86_64.zip'
|
|
)
|
|
expect(getGodotUrl('4.0.0-beta1', getPlatform('win32'), true, false)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/beta1/mono/Godot_v4.0-beta1_mono_win64.zip'
|
|
)
|
|
expect(getGodotUrl('4.0.0-beta1', getPlatform('darwin'), true, false)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/beta1/mono/Godot_v4.0-beta1_mono_macos.universal.zip'
|
|
)
|
|
expect(getGodotUrl('4.0.0-beta1', getPlatform('linux'), true, true)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/beta1/mono/Godot_v4.0-beta1_mono_export_templates.tpz'
|
|
)
|
|
})
|
|
test('4.0.0-beta.16', () => {
|
|
expect(getGodotUrl('4.0.0-beta.16', getPlatform('linux'), true, false)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/beta16/mono/Godot_v4.0-beta16_mono_linux_x86_64.zip'
|
|
)
|
|
expect(getGodotUrl('4.0.0-beta.16', getPlatform('win32'), true, false)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/beta16/mono/Godot_v4.0-beta16_mono_win64.zip'
|
|
)
|
|
expect(getGodotUrl('4.0.0-beta.16', getPlatform('darwin'), true, false)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/beta16/mono/Godot_v4.0-beta16_mono_macos.universal.zip'
|
|
)
|
|
})
|
|
test('4.0.0-beta8', () => {
|
|
expect(getGodotUrl('4.0.0-beta8', getPlatform('linux'), true, false)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/beta8/mono/Godot_v4.0-beta8_mono_linux_x86_64.zip'
|
|
)
|
|
expect(getGodotUrl('4.0.0-beta8', getPlatform('win32'), true, false)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/beta8/mono/Godot_v4.0-beta8_mono_win64.zip'
|
|
)
|
|
expect(getGodotUrl('4.0.0-beta8', getPlatform('darwin'), true, false)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/beta8/mono/Godot_v4.0-beta8_mono_macos.universal.zip'
|
|
)
|
|
})
|
|
test('4.0.0', () => {
|
|
expect(getGodotUrl('4.0.0', getPlatform('linux'), true, false)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/mono/Godot_v4.0-stable_mono_linux_x86_64.zip'
|
|
)
|
|
expect(getGodotUrl('4.0.0', getPlatform('win32'), true, false)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/mono/Godot_v4.0-stable_mono_win64.zip'
|
|
)
|
|
expect(getGodotUrl('4.0.0', getPlatform('darwin'), true, false)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/mono/Godot_v4.0-stable_mono_macos.universal.zip'
|
|
)
|
|
expect(getGodotUrl('4.0.0', getPlatform('linux'), true, true)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/mono/Godot_v4.0-stable_mono_export_templates.tpz'
|
|
)
|
|
})
|
|
test('3.5.2', () => {
|
|
expect(getGodotUrl('3.5.2', getPlatform('linux'), true, true)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/3.5.2/mono/Godot_v3.5.2-stable_mono_export_templates.tpz'
|
|
)
|
|
})
|
|
})
|
|
|
|
describe('useDotnet = false', () => {
|
|
test('4.0.0-beta1', () => {
|
|
expect(getGodotUrl('4.0.0-beta1', getPlatform('linux'), false, false)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/beta1/Godot_v4.0-beta1_linux.x86_64.zip'
|
|
)
|
|
expect(getGodotUrl('4.0.0-beta1', getPlatform('win32'), false, false)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/beta1/Godot_v4.0-beta1_win64.exe.zip'
|
|
)
|
|
expect(getGodotUrl('4.0.0-beta1', getPlatform('darwin'), false, false)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/beta1/Godot_v4.0-beta1_macos.universal.zip'
|
|
)
|
|
expect(getGodotUrl('4.0.0-beta1', getPlatform('darwin'), false, true)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/beta1/Godot_v4.0-beta1_export_templates.tpz'
|
|
)
|
|
})
|
|
test('4.0.0-beta.16', () => {
|
|
expect(getGodotUrl('4.0.0-beta.16', getPlatform('linux'), false, false)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/beta16/Godot_v4.0-beta16_linux.x86_64.zip'
|
|
)
|
|
expect(getGodotUrl('4.0.0-beta.16', getPlatform('win32'), false, false)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/beta16/Godot_v4.0-beta16_win64.exe.zip'
|
|
)
|
|
expect(
|
|
getGodotUrl('4.0.0-beta.16', getPlatform('darwin'), false, false)
|
|
).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/beta16/Godot_v4.0-beta16_macos.universal.zip'
|
|
)
|
|
})
|
|
test('4.0.0', () => {
|
|
expect(getGodotUrl('4.0.0', getPlatform('linux'), false, true)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/4.0/Godot_v4.0-stable_export_templates.tpz'
|
|
)
|
|
})
|
|
test('3.5.2', () => {
|
|
expect(getGodotUrl('3.5.2', getPlatform('linux'), false, true)).toEqual(
|
|
'https://downloads.tuxfamily.org/godotengine/3.5.2/Godot_v3.5.2-stable_export_templates.tpz'
|
|
)
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('getExportTemplatePath', () => {
|
|
describe('useDotnet = true', () => {
|
|
test('4.0.0-beta1', () => {
|
|
expect(getExportTemplatePath('4.0.0-beta1', getPlatform('linux'), true)).toEqual(
|
|
path.join(os.homedir(), '.local/share/godot/export_templates', '4.0.beta1.mono')
|
|
)
|
|
expect(getExportTemplatePath('4.0.0-beta1', getPlatform('win32'), true)).toEqual(
|
|
path.join(os.homedir(), 'AppData/Roaming/Godot/export_templates', '4.0.beta1.mono')
|
|
)
|
|
expect(getExportTemplatePath('4.0.0-beta1', getPlatform('darwin'), true)).toEqual(
|
|
path.join(os.homedir(), '/Library/Application Support/Godot/export_templates', '4.0.beta1.mono')
|
|
)
|
|
})
|
|
test('4.0.0', () => {
|
|
expect(getExportTemplatePath('4.0.0', getPlatform('linux'), true)).toEqual(
|
|
path.join(os.homedir(), '.local/share/godot/export_templates', '4.0.stable.mono')
|
|
)
|
|
expect(getExportTemplatePath('4.0.0', getPlatform('win32'), true)).toEqual(
|
|
path.join(os.homedir(), 'AppData/Roaming/Godot/export_templates', '4.0.stable.mono')
|
|
)
|
|
expect(getExportTemplatePath('4.0.0', getPlatform('darwin'), true)).toEqual(
|
|
path.join(os.homedir(), '/Library/Application Support/Godot/export_templates', '4.0.stable.mono')
|
|
)
|
|
})
|
|
test('3.5.1', () => {
|
|
expect(getExportTemplatePath('3.5.1', getPlatform('linux'), true)).toEqual(
|
|
path.join(os.homedir(), '.local/share/godot/templates', '3.5.1.stable.mono')
|
|
)
|
|
expect(getExportTemplatePath('3.5.1', getPlatform('win32'), true)).toEqual(
|
|
path.join(os.homedir(), 'AppData/Roaming/Godot/templates', '3.5.1.stable.mono')
|
|
)
|
|
expect(getExportTemplatePath('3.5.1', getPlatform('darwin'), true)).toEqual(
|
|
path.join(os.homedir(), '/Library/Application Support/Godot/templates', '3.5.1.stable.mono')
|
|
)
|
|
})
|
|
test('3.5.0', () => {
|
|
expect(getExportTemplatePath('3.5.0', getPlatform('linux'), true)).toEqual(
|
|
path.join(os.homedir(), '.local/share/godot/templates', '3.5.stable.mono')
|
|
)
|
|
expect(getExportTemplatePath('3.5.0', getPlatform('win32'), true)).toEqual(
|
|
path.join(os.homedir(), 'AppData/Roaming/Godot/templates', '3.5.stable.mono')
|
|
)
|
|
expect(getExportTemplatePath('3.5.0', getPlatform('darwin'), true)).toEqual(
|
|
path.join(os.homedir(), '/Library/Application Support/Godot/templates', '3.5.stable.mono')
|
|
)
|
|
})
|
|
})
|
|
|
|
describe('useDotnet = false', () => {
|
|
test('4.0.0-beta1', () => {
|
|
expect(getExportTemplatePath('4.0.0-beta1', getPlatform('linux'), false)).toEqual(
|
|
path.join(os.homedir(), '.local/share/godot/export_templates', '4.0.beta1')
|
|
)
|
|
expect(getExportTemplatePath('4.0.0-beta1', getPlatform('win32'), false)).toEqual(
|
|
path.join(os.homedir(), 'AppData/Roaming/Godot/export_templates', '4.0.beta1')
|
|
)
|
|
expect(getExportTemplatePath('4.0.0-beta1', getPlatform('darwin'), false)).toEqual(
|
|
path.join(os.homedir(), '/Library/Application Support/Godot/export_templates', '4.0.beta1')
|
|
)
|
|
})
|
|
test('4.0.0', () => {
|
|
expect(getExportTemplatePath('4.0.0', getPlatform('linux'), false)).toEqual(
|
|
path.join(os.homedir(), '.local/share/godot/export_templates', '4.0.stable')
|
|
)
|
|
expect(getExportTemplatePath('4.0.0', getPlatform('win32'), false)).toEqual(
|
|
path.join(os.homedir(), 'AppData/Roaming/Godot/export_templates', '4.0.stable')
|
|
)
|
|
expect(getExportTemplatePath('4.0.0', getPlatform('darwin'), false)).toEqual(
|
|
path.join(os.homedir(), '/Library/Application Support/Godot/export_templates', '4.0.stable')
|
|
)
|
|
})
|
|
test('3.5.1', () => {
|
|
expect(getExportTemplatePath('3.5.1', getPlatform('linux'), false)).toEqual(
|
|
path.join(os.homedir(), '.local/share/godot/templates', '3.5.1.stable')
|
|
)
|
|
expect(getExportTemplatePath('3.5.1', getPlatform('win32'), false)).toEqual(
|
|
path.join(os.homedir(), 'AppData/Roaming/Godot/templates', '3.5.1.stable')
|
|
)
|
|
expect(getExportTemplatePath('3.5.1', getPlatform('darwin'), false)).toEqual(
|
|
path.join(os.homedir(), '/Library/Application Support/Godot/templates', '3.5.1.stable')
|
|
)
|
|
})
|
|
test('3.5.0', () => {
|
|
expect(getExportTemplatePath('3.5.0', getPlatform('linux'), false)).toEqual(
|
|
path.join(os.homedir(), '.local/share/godot/templates', '3.5.stable')
|
|
)
|
|
expect(getExportTemplatePath('3.5.0', getPlatform('win32'), false)).toEqual(
|
|
path.join(os.homedir(), 'AppData/Roaming/Godot/templates', '3.5.stable')
|
|
)
|
|
expect(getExportTemplatePath('3.5.0', getPlatform('darwin'), false)).toEqual(
|
|
path.join(os.homedir(), '/Library/Application Support/Godot/templates', '3.5.stable')
|
|
)
|
|
})
|
|
})
|
|
})
|