mirror of
https://github.com/nix-community/home-manager.git
synced 2025-12-06 17:11:03 +01:00
tests/gtk: expand testing for new customization
We can now customize a lot more in the gtk module. Test more scenarios to ensure a user has more control over what gets generated. Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
This commit is contained in:
parent
d9915499e3
commit
18ff4e1e11
5 changed files with 204 additions and 0 deletions
|
|
@ -1,6 +1,16 @@
|
|||
{
|
||||
gtk-global-inheritance = ./gtk-global-inheritance.nix;
|
||||
gtk-per-version-override = ./gtk-per-version-override.nix;
|
||||
gtk-selective-enable = ./gtk-selective-enable.nix;
|
||||
|
||||
# GTK2
|
||||
gtk2-basic-config = ./gtk2-basic-config.nix;
|
||||
gtk2-config-file-location = ./gtk2-config-file-location.nix;
|
||||
|
||||
# GTK3
|
||||
gtk3-basic-settings = ./gtk3-basic-settings.nix;
|
||||
|
||||
# GTK4
|
||||
gtk4-basic-settings = ./gtk4-basic-settings.nix;
|
||||
gtk4-theme-css-injection = ./gtk4-theme-css-injection.nix;
|
||||
}
|
||||
|
|
|
|||
57
tests/modules/misc/gtk/gtk-global-inheritance.nix
Normal file
57
tests/modules/misc/gtk/gtk-global-inheritance.nix
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
# Test that global settings are inherited by all GTK versions
|
||||
gtk = {
|
||||
enable = true;
|
||||
font = {
|
||||
name = "Ubuntu";
|
||||
size = 12;
|
||||
package = pkgs.ubuntu_font_family;
|
||||
};
|
||||
theme = {
|
||||
name = "Adwaita-dark";
|
||||
package = pkgs.gnome-themes-extra;
|
||||
};
|
||||
iconTheme = {
|
||||
name = "Adwaita";
|
||||
package = pkgs.adwaita-icon-theme;
|
||||
};
|
||||
cursorTheme = {
|
||||
name = "Adwaita";
|
||||
size = 24;
|
||||
};
|
||||
};
|
||||
|
||||
nmt.script = ''
|
||||
# Check GTK2 inherits global settings
|
||||
assertFileExists home-files/.gtkrc-2.0
|
||||
assertFileRegex home-files/.gtkrc-2.0 'gtk-theme-name = "Adwaita-dark"'
|
||||
assertFileRegex home-files/.gtkrc-2.0 'gtk-font-name = "Ubuntu 12"'
|
||||
assertFileRegex home-files/.gtkrc-2.0 'gtk-icon-theme-name = "Adwaita"'
|
||||
assertFileRegex home-files/.gtkrc-2.0 'gtk-cursor-theme-name = "Adwaita"'
|
||||
assertFileRegex home-files/.gtkrc-2.0 'gtk-cursor-theme-size = 24'
|
||||
|
||||
# Check GTK3 inherits global settings
|
||||
assertFileExists home-files/.config/gtk-3.0/settings.ini
|
||||
assertFileRegex home-files/.config/gtk-3.0/settings.ini 'gtk-theme-name=Adwaita-dark'
|
||||
assertFileRegex home-files/.config/gtk-3.0/settings.ini 'gtk-font-name=Ubuntu 12'
|
||||
assertFileRegex home-files/.config/gtk-3.0/settings.ini 'gtk-icon-theme-name=Adwaita'
|
||||
assertFileRegex home-files/.config/gtk-3.0/settings.ini 'gtk-cursor-theme-name=Adwaita'
|
||||
assertFileRegex home-files/.config/gtk-3.0/settings.ini 'gtk-cursor-theme-size=24'
|
||||
|
||||
# Check GTK4 inherits global settings
|
||||
assertFileExists home-files/.config/gtk-4.0/settings.ini
|
||||
assertFileRegex home-files/.config/gtk-4.0/settings.ini 'gtk-theme-name=Adwaita-dark'
|
||||
assertFileRegex home-files/.config/gtk-4.0/settings.ini 'gtk-font-name=Ubuntu 12'
|
||||
assertFileRegex home-files/.config/gtk-4.0/settings.ini 'gtk-icon-theme-name=Adwaita'
|
||||
assertFileRegex home-files/.config/gtk-4.0/settings.ini 'gtk-cursor-theme-name=Adwaita'
|
||||
assertFileRegex home-files/.config/gtk-4.0/settings.ini 'gtk-cursor-theme-size=24'
|
||||
|
||||
# Check GTK4 CSS with theme import
|
||||
assertFileExists home-files/.config/gtk-4.0/gtk.css
|
||||
assertFileRegex home-files/.config/gtk-4.0/gtk.css '@import url("file://.*/share/themes/Adwaita-dark/gtk-4.0/gtk.css")'
|
||||
|
||||
# Check packages are installed
|
||||
# Package installation verified by home-manager
|
||||
'';
|
||||
}
|
||||
60
tests/modules/misc/gtk/gtk-per-version-override.nix
Normal file
60
tests/modules/misc/gtk/gtk-per-version-override.nix
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
{
|
||||
# Test that per-version settings override global defaults
|
||||
gtk = {
|
||||
enable = true;
|
||||
# Global defaults
|
||||
font.name = "Global Font";
|
||||
theme.name = "Global-Theme";
|
||||
iconTheme.name = "Global-Icons";
|
||||
cursorTheme.name = "Global-Cursor";
|
||||
|
||||
# Per-version overrides
|
||||
gtk2 = {
|
||||
font.name = "GTK2-Font";
|
||||
theme.name = "GTK2-Theme";
|
||||
extraConfig = "gtk-can-change-accels = 1";
|
||||
};
|
||||
|
||||
gtk3 = {
|
||||
iconTheme.name = "GTK3-Icons";
|
||||
cursorTheme.name = "GTK3-Cursor";
|
||||
extraConfig = {
|
||||
gtk-recent-files-limit = 10;
|
||||
};
|
||||
extraCss = "window { border: 1px solid red; }";
|
||||
};
|
||||
|
||||
gtk4 = {
|
||||
font.name = "GTK4-Font";
|
||||
extraConfig = {
|
||||
gtk-recent-files-limit = 20;
|
||||
};
|
||||
extraCss = "window { border: 2px solid blue; }";
|
||||
};
|
||||
};
|
||||
|
||||
nmt.script = ''
|
||||
# GTK2 should use overridden font/theme, global icons/cursor
|
||||
assertFileRegex home-files/.gtkrc-2.0 'gtk-font-name = "GTK2-Font 11"'
|
||||
assertFileRegex home-files/.gtkrc-2.0 'gtk-theme-name = "GTK2-Theme"'
|
||||
assertFileRegex home-files/.gtkrc-2.0 'gtk-icon-theme-name = "Global-Icons"'
|
||||
assertFileRegex home-files/.gtkrc-2.0 'gtk-cursor-theme-name = "Global-Cursor"'
|
||||
assertFileRegex home-files/.gtkrc-2.0 'gtk-can-change-accels = 1'
|
||||
|
||||
# GTK3 should use global font/theme, overridden icons/cursor
|
||||
assertFileRegex home-files/.config/gtk-3.0/settings.ini 'gtk-font-name=Global Font 11'
|
||||
assertFileRegex home-files/.config/gtk-3.0/settings.ini 'gtk-theme-name=Global-Theme'
|
||||
assertFileRegex home-files/.config/gtk-3.0/settings.ini 'gtk-icon-theme-name=GTK3-Icons'
|
||||
assertFileRegex home-files/.config/gtk-3.0/settings.ini 'gtk-cursor-theme-name=GTK3-Cursor'
|
||||
assertFileRegex home-files/.config/gtk-3.0/settings.ini 'gtk-recent-files-limit=10'
|
||||
assertFileRegex home-files/.config/gtk-3.0/gtk.css 'window { border: 1px solid red; }'
|
||||
|
||||
# GTK4 should use overridden font, global theme/icons/cursor
|
||||
assertFileRegex home-files/.config/gtk-4.0/settings.ini 'gtk-font-name=GTK4-Font 11'
|
||||
assertFileRegex home-files/.config/gtk-4.0/settings.ini 'gtk-theme-name=Global-Theme'
|
||||
assertFileRegex home-files/.config/gtk-4.0/settings.ini 'gtk-icon-theme-name=Global-Icons'
|
||||
assertFileRegex home-files/.config/gtk-4.0/settings.ini 'gtk-cursor-theme-name=Global-Cursor'
|
||||
assertFileRegex home-files/.config/gtk-4.0/settings.ini 'gtk-recent-files-limit=20'
|
||||
assertFileRegex home-files/.config/gtk-4.0/gtk.css 'window { border: 2px solid blue; }'
|
||||
'';
|
||||
}
|
||||
28
tests/modules/misc/gtk/gtk-selective-enable.nix
Normal file
28
tests/modules/misc/gtk/gtk-selective-enable.nix
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
# Test that individual GTK versions can be selectively disabled
|
||||
gtk = {
|
||||
enable = true;
|
||||
theme.name = "Test-Theme";
|
||||
|
||||
# Only enable GTK3, disable others
|
||||
gtk2.enable = false;
|
||||
gtk3.enable = true;
|
||||
gtk4.enable = false;
|
||||
};
|
||||
|
||||
nmt.script = ''
|
||||
# GTK2 should not be configured
|
||||
assertPathNotExists home-files/.gtkrc-2.0
|
||||
|
||||
# GTK3 should be configured
|
||||
assertFileExists home-files/.config/gtk-3.0/settings.ini
|
||||
assertFileRegex home-files/.config/gtk-3.0/settings.ini 'gtk-theme-name=Test-Theme'
|
||||
|
||||
# GTK4 should not be configured
|
||||
assertPathNotExists home-files/.config/gtk-4.0/settings.ini
|
||||
assertPathNotExists home-files/.config/gtk-4.0/gtk.css
|
||||
|
||||
# DConf should still be configured from GTK3
|
||||
echo \"DConf generation depends on having actual theme/font/icon settings\"
|
||||
'';
|
||||
}
|
||||
49
tests/modules/misc/gtk/gtk4-theme-css-injection.nix
Normal file
49
tests/modules/misc/gtk/gtk4-theme-css-injection.nix
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
# Test GTK4 theme CSS injection with both theme and custom CSS
|
||||
gtk = {
|
||||
enable = true;
|
||||
|
||||
gtk4 = {
|
||||
theme = {
|
||||
name = "Adwaita-dark";
|
||||
package = pkgs.gnome-themes-extra;
|
||||
};
|
||||
extraCss = ''
|
||||
/* Custom user CSS */
|
||||
window {
|
||||
background-color: #2d2d2d;
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 8px;
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
nmt.script = ''
|
||||
# GTK4 CSS should exist and contain both theme import and custom CSS
|
||||
assertFileExists home-files/.config/gtk-4.0/gtk.css
|
||||
|
||||
# Check for theme import comment and URL
|
||||
assertFileRegex home-files/.config/gtk-4.0/gtk.css '/\*\*'
|
||||
assertFileRegex home-files/.config/gtk-4.0/gtk.css 'GTK 4 reads the theme configured by gtk-theme-name, but ignores it'
|
||||
assertFileRegex home-files/.config/gtk-4.0/gtk.css '@import url("file://.*/share/themes/Adwaita-dark/gtk-4.0/gtk.css")'
|
||||
|
||||
# Check for custom CSS
|
||||
assertFileRegex home-files/.config/gtk-4.0/gtk.css 'Custom user CSS'
|
||||
assertFileRegex home-files/.config/gtk-4.0/gtk.css 'background-color: #2d2d2d'
|
||||
assertFileRegex home-files/.config/gtk-4.0/gtk.css 'border-radius: 8px'
|
||||
|
||||
# Verify the theme import comes before custom CSS
|
||||
css_content=$(cat home-files/.config/gtk-4.0/gtk.css)
|
||||
import_line=$(echo "$css_content" | grep -n "@import" | cut -d: -f1)
|
||||
custom_line=$(echo "$css_content" | grep -n "Custom user CSS" | cut -d: -f1)
|
||||
|
||||
if [ "$import_line" -ge "$custom_line" ]; then
|
||||
echo "Theme import should come before custom CSS"
|
||||
exit 1
|
||||
fi
|
||||
'';
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue