Files
native/src/lib/__tests__/licences.test.ts
T
Linus Rath 6f515e15f7 feat: rework settings into the picked list, About and Storage & backup pages
The settings list now has the account card on top, title-case group
labels and 56 dp rows that show each pane's current value. About and
"About & Data" were one placeholder page with a letter logo, a fixed
name and a store link that pointed at GitHub releases.

- About: the real logo, the app name from app.config.js, the update
  state, a source link that a build can set with SOURCE_CODE_URL, and
  rows for the server, update checks (Android), open-source licences,
  privacy and a prefilled GitHub issue. iPhone updates link TestFlight.
- Storage & backup: usage card, offline mail, settings export/import
  and reset, and a Troubleshooting page for refresh and debug logging.
- Sender favicons moved to Appearance, like the webmail.
- The S/MIME and Plugins stub pages are gone; both are webmail plugins.

The licence list is generated by `scripts/generate-licences.mjs`.
2026-10-15 14:49:37 +02:00

26 lines
1.0 KiB
TypeScript

import { describe, it, expect } from 'vitest';
import { readFileSync } from 'node:fs';
import { join } from 'node:path';
import licences from '../licences.json';
const pkg = JSON.parse(readFileSync(join(__dirname, '..', '..', '..', 'package.json'), 'utf8'));
describe('open-source licences', () => {
it('lists every library the app ships, with its licence', () => {
const listed = new Map(licences.libraries.map((l) => [l.name, l]));
const missing = Object.keys(pkg.dependencies).filter((name) => !listed.has(name));
// Regenerate with `node scripts/generate-licences.mjs`.
expect(missing).toEqual([]);
for (const name of Object.keys(pkg.dependencies)) {
expect(listed.get(name)?.license, name).toBeTruthy();
expect(listed.get(name)?.version, name).toBe(
JSON.parse(readFileSync(join(__dirname, '..', '..', '..', 'node_modules', name, 'package.json'), 'utf8')).version,
);
}
});
it('names the app licence from package.json', () => {
expect(licences.app.license).toBe(pkg.license);
});
});