diff --git a/check-needles.py b/check-needles.py index 351529ab..9215a343 100755 --- a/check-needles.py +++ b/check-needles.py @@ -78,7 +78,7 @@ for user in ("jack", "jim"): testliterals.append(f"user_confirm_{user}") # partitioning stuff, there's a bunch of this, all in anaconda.pm # multiple things use this -for part in ("swap", "root", "efi", "boot", "vda2"): +for part in ("swap", "root", "efi", "boot", "home", "vda2"): testliterals.append(f"anaconda_part_select_{part}") testliterals.append(f"anaconda_blivet_part_inactive_{part}") # select_disks diff --git a/needles/anaconda/partitioning/anaconda_part_confirm_delete.json b/needles/anaconda/partitioning/anaconda_part_confirm_delete.json new file mode 100644 index 00000000..67a4942b --- /dev/null +++ b/needles/anaconda/partitioning/anaconda_part_confirm_delete.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 669, + "ypos": 398, + "width": 56, + "height": 16, + "type": "match" + } + ], + "properties": [], + "tags": [ + "anaconda_part_confirm_delete" + ] +} \ No newline at end of file diff --git a/needles/anaconda/partitioning/anaconda_part_confirm_delete.png b/needles/anaconda/partitioning/anaconda_part_confirm_delete.png new file mode 100644 index 00000000..df353080 Binary files /dev/null and b/needles/anaconda/partitioning/anaconda_part_confirm_delete.png differ diff --git a/needles/anaconda/partitioning/anaconda_part_select_home.json b/needles/anaconda/partitioning/anaconda_part_select_home.json new file mode 100644 index 00000000..7997145b --- /dev/null +++ b/needles/anaconda/partitioning/anaconda_part_select_home.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 49, + "ypos": 370, + "width": 56, + "height": 22, + "type": "match" + } + ], + "properties": [], + "tags": [ + "anaconda_part_select_home" + ] +} \ No newline at end of file diff --git a/needles/anaconda/partitioning/anaconda_part_select_home.png b/needles/anaconda/partitioning/anaconda_part_select_home.png new file mode 100644 index 00000000..d46113a1 Binary files /dev/null and b/needles/anaconda/partitioning/anaconda_part_select_home.png differ diff --git a/templates.fif.json b/templates.fif.json index cfa0873a..a59f5bbf 100644 --- a/templates.fif.json +++ b/templates.fif.json @@ -984,6 +984,20 @@ "ROOT_PASSWORD": "weakpassword" } }, + "install_btrfs_preserve_home": { + "profiles": { + "fedora-Server-dvd-iso-aarch64-*-aarch64": 10, + "fedora-Server-dvd-iso-ppc64le-*-ppc64le": 10, + "fedora-Server-dvd-iso-x86_64-*-64bit": 10 + }, + "settings": { + "PARTITIONING": "custom_btrfs_preserve_home", + "INSTALL": 1, + "ROOT_PASSWORD": "weakpassword", + "POSTINSTALL": "btrfs_preserve_home_check_content", + "HDD_1": "disk_f%CURRREL%_desktop_4_%ARCH%.img" + } + }, "install_cyrillic_language": { "profiles": { "fedora-universal-aarch64-*-aarch64": 40, diff --git a/tests/btrfs_preserve_home_check_content.pm b/tests/btrfs_preserve_home_check_content.pm new file mode 100644 index 00000000..352fde60 --- /dev/null +++ b/tests/btrfs_preserve_home_check_content.pm @@ -0,0 +1,24 @@ +use base "installedtest"; +use strict; +use testapi; +use utils; + +sub run { + my $self=shift; + bypass_1691487 unless (get_var("DESKTOP")); + # switch to TTY3 for both, graphical and console tests + $self->root_console(tty=>3); + # The pre-created image has a special file left in the home + # directory. This checks that the file has been left there + # correctly after system reinstall. + assert_script_run "ls /home/home_preserved"; +} + + +sub test_flags { + return { fatal => 1 }; +} + +1; + +# vim: set sw=4 et: diff --git a/tests/disk_custom_btrfs.pm b/tests/disk_custom_btrfs.pm index 2740eb6f..736a6f84 100644 --- a/tests/disk_custom_btrfs.pm +++ b/tests/disk_custom_btrfs.pm @@ -1,6 +1,7 @@ use base "anacondatest"; use strict; use testapi; +use utils; use anaconda; sub run { diff --git a/tests/disk_custom_btrfs_preserve_home.pm b/tests/disk_custom_btrfs_preserve_home.pm new file mode 100644 index 00000000..bff41ddb --- /dev/null +++ b/tests/disk_custom_btrfs_preserve_home.pm @@ -0,0 +1,75 @@ +use base "anacondatest"; +use strict; +use testapi; +use utils; +use anaconda; + + +sub use_current_partition { + my ($partition, $reformat) = @_; + + # Select the partition + assert_and_click "anaconda_part_select_$partition"; + # Select the mountpoint field + send_key_until_needlematch("anaconda_part_mountpoint_selected", "tab", 20); + # Type in the mountpoint + if ($partition eq "root") { + type_very_safely "/"; + } + else { + type_very_safely "/$partition"; + } + # Click on reformat if we so wish + if ($reformat == 1) { + assert_and_click "anaconda_part_device_reformat"; + } + # Update chosen settings + assert_and_click "anaconda_part_update_settings"; + # Wait for the UI to settle down. + wait_still_screen 5; +} + +sub run { + my $self = shift; + # Go to INSTALLATION DESTINATION and ensure the disk is selected. + # Because PARTITIONING starts with 'custom_', this will select custom. + select_disks(); + assert_and_click "anaconda_spoke_done"; + + # Manual partitioning spoke should be displayed. Select BTRFS + # partitioning scheme + custom_scheme_select("btrfs"); + # Select the currently installed system + assert_and_click "anaconda_part_use_current"; + + # Use the home partition from the current scheme + use_current_partition("home", 0); + # Use the boot partition from the current scheme + use_current_partition("boot", 1); + + # Select the root partition from the current scheme + # and delete it + assert_and_click "anaconda_part_select_root"; + assert_and_click "anaconda_part_delete"; + assert_and_click "anaconda_part_confirm_delete"; + + # Add the new root partition to the scheme + assert_and_click "anaconda_part_add"; + type_very_safely "/\n"; + + # Confirm changes + assert_and_click "anaconda_spoke_done"; + assert_and_click "anaconda_part_accept_changes"; + + # Anaconda hub + assert_screen "anaconda_main_hub", 300; # + +} + +sub test_flags { + return { fatal => 1 }; +} + +1; + +# vim: set sw=4 et: