UNPKG

alacritty-themes

Version:

Themes for Alacritty : A cross-platform GPU-Accelerated Terminal emulator

99 lines (84 loc) 2.89 kB
/* globals describe it afterEach */ 'use strict'; const assert = require('assert'); const mockFs = require('mock-fs'); const fs = require('fs'); const YAML = require('yaml'); const { getAlacrittyConfig, createConfigFile, applyTheme } = require('../'); const { NoAlacrittyFileFoundError, alacrittyTemplatePath, linuxHome, themeFilePath, } = require('../src/helpers'); const homeDir = linuxHome(); afterEach(mockFs.restore); describe('Alacritty Themes', () => { it('returns NoAlacrittyFileFoundError error', () => { mockFs(); assert.throws(() => getAlacrittyConfig(), NoAlacrittyFileFoundError); }); it('creates an alacritty.yml config file', async () => { const templatePath = alacrittyTemplatePath(); const mockDir = { 'alacritty.yml': mockFs.load(templatePath), }; mockDir[`${homeDir}/.config/`] = { alacritty: {} }; mockFs(mockDir); await createConfigFile(); const ymlPath = getAlacrittyConfig(); assert.strictEqual(ymlPath, `${homeDir}/.config/alacritty/alacritty.yml`); }); it('sets the correct theme colors', async () => { const templatePath = alacrittyTemplatePath(); const draculaPath = themeFilePath('Dracula'); const draculaTemplateContent = mockFs.bypass(() => fs.readFileSync(draculaPath, 'utf8') ); const draculaParsedContent = YAML.parse(draculaTemplateContent); const mockDir = { 'alacritty.yml': mockFs.load(templatePath), themes: { 'Dracula.yml': draculaTemplateContent, }, }; mockDir[`${homeDir}/.config`] = { alacritty: {} }; mockFs(mockDir); await createConfigFile(); const ymlPath = getAlacrittyConfig(); await applyTheme('Dracula'); const newAlacrittyFile = fs.readFileSync(ymlPath, 'utf8'); const alacrittyParsedContent = YAML.parse(newAlacrittyFile); assert.deepStrictEqual( alacrittyParsedContent.colors, draculaParsedContent.colors ); }); it('keeps comments', async () => { const alacrittyPath = alacrittyTemplatePath(); const alacrittyContent = mockFs.bypass(() => fs.readFileSync(alacrittyPath, 'utf8') ); const draculaPath = themeFilePath('Dracula'); const draculaContent = mockFs.bypass(() => fs.readFileSync(draculaPath, 'utf8') ); const mockDir = { 'alacritty.yml': alacrittyContent, themes: { 'Dracula.yml': draculaContent, }, }; mockDir[`${homeDir}/.config`] = { alacritty: {} }; mockFs(mockDir); await createConfigFile(); const userAlacrittyPath = getAlacrittyConfig(); await applyTheme('Dracula'); const userAlacrittyFile = fs.readFileSync(userAlacrittyPath, 'utf8'); const alacritty = YAML.parseDocument(userAlacrittyFile); assert.strictEqual( alacritty.commentBefore, ' Configuration for Alacritty, the GPU enhanced terminal emulator.' ); }); });