Top Level Namespace

Defined Under Namespace

Modules: CFA, CWM, Firewalld, Installation, Packages, UI, Y2Firewall, Y2Issues, Y2Packager, Yast, Yast2

Instance Method Summary collapse

Instance Method Details

#expect_to_show_popup_which_return(output) ⇒ Object

# File 'library/general/src/lib/yast2/popup_rspec.rb', line 7

def expect_to_show_popup_which_return(output)
  expect(Yast2::Popup).to receive(:show).and_call_original
  allow(Yast::UI).to receive(:OpenDialog).and_return true
  allow(Yast::UI).to receive(:CloseDialog)
  allow(Yast::UI).to receive(:SetFocus).and_return true
  allow(Yast::UI).to receive(:UserInput).and_return output
  allow(Yast::UI).to receive(:TimeoutUserInput).and_return output



Main goal of hooks is to execute a third party code within the workflow of installation, system update or some other process. Hook files must be executable files written in bash, ruby or anything else available in inst-sys environment.

The module provides method #run which creates a hook and executes it instantly.

This includes following actions:

  • adding the hook into the hooks collection - every hook is identified by unique name which should be self-descriptive
  • looking up the files matching the hook script pattern: hook_name_[0-9][0-9]_*
  • executing the identified hook files
  • storing the results returned by the scripts for further inspection later if needed; this might be useful if some of the files has failed and we want to show it the user.

If a hook script returns non-zero result, the whole hook is considered as failed. By default the hooks are searched for in /var/lib/YaST2/hooks directory. This path can be modified globally for all hooks before they get called.


  • using a hook within a yast client

module Yast import 'Hooks'

class MyFavoriteClient < Client def main # this will change the search path to /var/lib/YaST2/hooks/personal Hooks.search_path.join!('personal') # and this will set a completely different path Hooks.search_path.set "/root/hooks" hook = 'before_showing_ui' # Lot of beautiful and useful code follows here. # If needed make use of: # * hook.failed? # * hook.succeeded? # * # * hook.results # * hook.files # * hook.search_path # * Hooks.last.failed? # * Hooks.last.succeeded? # * # * Hooks.last.search_path # * Hooks.last.results # * Hooks.last.files 'after_showing_ui' # reset the search path if needed Hooks.search_path.reset end end end

# File 'library/general/src/modules/Hooks.rb', line 60

require "shellwords"