Integrate native Rime and stabilize input, output, and rendering
- Add optional modifier-only Super binding whose tap is cancelled by other input, focus changes, grabs, locks, and session teardown. - Ship the native ferese-rime user service, Rime defaults, installer inventory, package dependencies, session environment, and docs. - Vendor Smithay 8a27023 with the SHM texture-cache format fix and add GPU regressions for format changes and resize snapshots. - Release reused CRTC owners before staging output modes, then restore changed outputs before former owners when a transaction fails. - Wait for resize-capture GPU completion, expand filtered surface damage, and preserve IME popup origin under fractional scaling. - Mark weekends like holidays in both calendar layouts.
This commit is contained in:
1 parent
a2be421974
commit
993bc0f88f
391 files changed
+130908
-76
No files matched your search
@@ -76,6 +76,14 @@ class PackageTests(unittest.TestCase):
|
||||
self.assertTrue((dest / 'usr/share/ferese/wallpapers/ferese.png').is_file())
|
||||
self.assertEqual((dest / 'usr/libexec/ferese/ferese-session').stat().st_mode & 0o777, 0o755)
|
||||
self.assertEqual((dest / 'usr/libexec/ferese').stat().st_mode & 0o777, 0o755)
|
||||
self.assertTrue((dest / 'usr/libexec/ferese/ferese-rime').is_file())
|
||||
self.assertIn('schema: luna_pinyin_simp',
|
||||
(dest / 'usr/libexec/ferese/rime/default.custom.yaml').read_text())
|
||||
provenance = dest / 'usr/share/doc/ferese/vendor/smithay'
|
||||
for name in ('UPSTREAM.md', 'shm-texture-cache-format.patch'):
|
||||
origin = PACKAGE.ROOT / 'vendor/smithay' / (
|
||||
name if name == 'UPSTREAM.md' else 'patches/' + name)
|
||||
self.assertEqual((provenance / name).read_bytes(), origin.read_bytes())
|
||||
|
||||
def test_same_version_from_different_sources_keeps_both_licenses(self):
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
@@ -107,6 +115,36 @@ class PackageTests(unittest.TestCase):
|
||||
self.assertEqual(report[0]['license'], 'MIT')
|
||||
self.assertEqual(report[0]['source'], 'registry+test')
|
||||
|
||||
def test_vendored_notices_exclude_workspace_members_and_are_relocatable(self):
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
root = Path(directory)
|
||||
reports = []
|
||||
for checkout in ('first-checkout', 'second-checkout'):
|
||||
workspace = root / checkout / 'ferese'
|
||||
packages = []
|
||||
for name, folder, license_text in (
|
||||
('ferese', workspace / 'compositor', 'workspace notice'),
|
||||
('smithay', workspace / 'vendor/smithay', 'Smithay MIT notice'),
|
||||
('external', workspace.parent / 'shared/external', 'external notice')):
|
||||
folder.mkdir(parents=True)
|
||||
(folder / 'LICENSE.txt').write_text(license_text)
|
||||
packages.append({'id': f'path+file://{folder}#{name}@0.7.0',
|
||||
'name': name, 'version': '0.7.0', 'source': None,
|
||||
'manifest_path': str(folder / 'Cargo.toml'),
|
||||
'license': 'MIT', 'license_file': None})
|
||||
destination = workspace / 'notices'
|
||||
PACKAGE.licenses(destination, {'packages': packages,
|
||||
'workspace_members': [packages[0]['id']], 'workspace_root': str(workspace)})
|
||||
report = json.loads((destination / 'dependencies.json').read_text())
|
||||
self.assertEqual({p['name']: p['source'] for p in report}, {
|
||||
'smithay': 'path+vendor/smithay', 'external': 'path+../shared/external'})
|
||||
notices = {p['name']: (destination / p['notice_directory'] / 'LICENSE.txt').read_text()
|
||||
for p in report}
|
||||
self.assertEqual(notices, {'smithay': 'Smithay MIT notice', 'external': 'external notice'})
|
||||
self.assertNotIn(str(root), (destination / 'dependencies.json').read_text())
|
||||
reports.append(report)
|
||||
self.assertEqual(reports[0], reports[1])
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in new issue
Block a user