See https://ci.suse.de/job/yast-yast-autoinstallation-master/67/display/redirect...
Changes:
[teclator] Cleanup and unit test for AutoInstallRules#Process
------------------------------------------
[...truncated 156.34 KB...]
[ 77s] does not include it
[ 77s] when a module has elements to merge
[ 77s] creates each element in the current profile
[ 77s] but there is no content for some of the elements
[ 78s] does not include the element with no content
[ 78s] when a module uses an alternative resource name
[ 78s] uses the alternative name
[ 78s] #ReadXML
[ 78s] when the file is valid
[ 78s] returns true
[ 78s] imports the file content
[ 78s] when the file content is invalid
[ 78s] returns false
[ 78s] displays an error message
[ 78s] does not import the file content
[ 78s] when the content is encrypted
[ 78s] decrypts and imports the file content
[ 78s] during the first stage
[ 78s] saves the unencrypted content
[ 78s] #Save
[ 78s] returns true if saved profile to file
[ 78s] returns false when failed
[ 78s] #SaveSingleSections
[ 78s] returns list of saved sections
[ 78s] it does not return sections that failed to save
[ 78s] #set_element_by_path
[ 78s] when a string is given as path
[ 78s] sets the element by using the path's parts
[ 78s] when a profile path object is given as path
[ 78s] sets the element by using the path's parts
[ 78s] #setElementByList
[ 78s] when the element exists
[ 78s] replaces its value
[ 78s] when the element does not exist
[ 78s] adds the element in the given path
[ 78s] when the element is supposed to be an array member but it does not exist
[ 78s] adds an element to the array
[ 78s] fills any gap with nil
[ 78s] when parent elements are missing
[ 78s] adds all the full hierarchy up to the given path
[ 78s]
[ 78s] Yast::AutoinstClass
[ 78s] #Read
[ 78s] when some class definition exists
[ 79s] read content into @Classes
[ 79s] returns nil
[ 79s] when class definition is not valid
[ 79s] sets Classes to []
[ 79s] returns nil
[ 79s] when classes definition file does not exist
[ 79s] sets Classes to []
[ 79s] returns nil
[ 79s] when classes definition is empty or not valid XML
[ 79s] set Classes to []
[ 79s] returns nil
[ 79s] #Files
[ 79s] when some class definition exists
[ 79s] sets confs to an array containing classes configurations
[ 79s] when classes definitions are not found
[ 79s] when directory does not exist
[ 79s] sets confs to an empty array
[ 79s] when directory is empty
[ 79s] sets confs to an empty array
[ 79s] #classDirChanged
[ 79s] reads again the classes definitions
[ 79s] #findPath
[ 79s] when class and configuration exists
[ 79s] returns string with path to classes directory, class name and configuration
[ 79s] when class does not exist
[ 79s] returns string with path to a default directory below the classes directory
[ 79s] when name does not exist
[ 79s] returns string with path to a default directory below the classes directory
[ 79s] #Compat
[ 79s] when a classes.xml file exists in the new location
[ 79s] does not overwrite classes.xml file
[ 79s] when a classes.xml file does not exist in the new location
[ 79s] and /etc/autoinstall/classes.xml exists
[ 79s] creates a classes.xml file in the new location
[ 79s] and /etc/autoinstall/classes.xml is empty or not valid XML
[ 79s] creates a classes.xmlfile in the new location with no classes
[ 79s] #class_dir=
[ 79s] sets the classes definitions directory
[ 79s] #MergeClasses
[ 79s] executes xsltproc and returns a hash with info about the result
[ 79s] when all elements must be merged
[ 79s] merges elements from profile and configuration
[ 79s] when some elements are not intended to be merged
[ 79s] does not merge those elements
[ 79s] #Import
[ 79s] sets profile_conf variable as a copy of the given settings
[ 79s] #Export
[ 79s] returns a copy of profile_conf
[ 79s] #Summary
[ 79s] when some settings are given
[ 79s] returns a summary containing class names and configurations
[ 79s] when no class name is given
[ 79s] 'None' is used instead
[ 79s] when no configuration is given
[ 79s] 'None' is used instead
[ 79s] when no settings are given
[ 79s] returns an empty summary
[ 79s] #Save
[ 79s] creates a classes.xml file in the new location
[ 79s] does not raise exception when serialization failed
[ 79s] when classes are marked for deletion
[ 79s] deletes classes files
[ 79s]
[ 79s] Yast::AutoinstallAskInclude
[ 79s] #askDialog
[ 79s] when ask-list is empty
[ 79s] no dialog is shown
[ 79s] dialogs creation
[ 79s] when the ask-list contains a question with type 'string'
[ 79s] creates a TextEntry widget
[ 79s] when the ask-list contains a question with timeout=0
[ 79s] waits for user input infinitely
[ 79s] when the ask-list contains a question with timeout>0
[ 79s] when user does not do anything
[ 79s] waits for user input with timeout and then time-outs
[ 79s] when user stops the execution manually
[ 79s] waits for user input with timeout and then stops and waits for user infinitely
[ 79s] when ask-list contains a question with type 'selection'
[ 79s] creates a ComboBox widget
[ 79s] when ask-list contains a question with type 'password'
[ 79s] creates two Password widgets
[ 79s] when ask-list contains a question with type 'static_text'
[ 79s] creates a Label widget
[ 79s] when ask-list contains question with type 'symbol'
[ 79s] creates a ComboBox widget
[ 79s] when ask-list contains a question with type 'boolean'
[ 79s] creates a CheckBox widget
[ 79s] when ask-list contains more than one question
[ 79s] creates one widget for each one of them
[ 79s] when ask-list contains more than one password question
[ 79s] creates two password widgets for each question without repeating the Ids
[ 79s] dialogs actions
[ 79s] when ok button is pressed
[ 79s] when a path was specified
[ 79s] response is saved into the Profile at the specified path
[ 79s] when a pathlist was specified
[ 79s] saves response into Profile at the paths specified in the pathlist
[ 79s] when a file was specified
[ 79s] saves the user answer in the file
[ 79s] when response is a boolean
[ 79s] converts the answer to a string and saves it in the file
[ 79s] when asking for a 'password' and values don't match
[ 79s] shows an error message and try run the dialog again
[ 79s] when a script was specified
[ 79s] shows some feedback while script is running
[ 79s] when 'environment' property is not set
[ 79s] runs the script without passing the ask response
[ 79s] when 'environment' property is set
[ 79s] runs the script passing the ask response
[ 79s] when more dialogs left
[ 79s] next dialog is shown
[ 79s] when no more dialogs left
[ 79s] finishes dialog processing and returns
[ 79s] when a value for 'next dialog' is set
[ 79s] jumps to that dialog
[ 79s]
[ 79s] Yast::AutoinstallConfTreeInclude
[ 79s] #ShowSource
[ 79s] shows xml with current profile serialized to XML
[ 79s] shows error popup when profile serialization failed
[ 79s] #configureModule
[ 79s] when the user accepts the configuration dialog
[ 79s] and the settings have been changed
[ 79s] sets the module and the profile as modified
[ 79s] and the settings has not been changed
[ 79s] does not set the module or profile as modified
[ 79s] when new settings are not valid
[ 80s] imports the original settings again
[ 80s] reports the error and returns :abort
[ 80s] when the user aborts the configuration dialog
[ 80s] imports the original settings again
[ 80s]
[ 80s] Pending: (Failures listed here are expected and do not affect your suite's status)
[ 80s]
[ 80s] 1) Yast::AutoinstPartPlan #read partition target exporting nfs root partition
[ 80s] # pending on nfs definition in yml files
[ 80s] # ./test/AutoinstPartPlan_test.rb:41
[ 80s]
[ 80s] Failures:
[ 80s]
[ 80s] 1) Yast::AutoInstallRules #classes_to_merge when there classes defined in the profile adds the configuration file to the list of files to be merged
[ 80s] Failure/Error: expect { subject.classes_to_merge }.to change { subject.tomerge }.from([]).to(tomerge)
[ 80s]
[ 80s] NoMethodError:
[ 80s] undefined method `union' for []:Array
[ 80s] Did you mean? uniq
[ 80s] # ./src/modules/AutoInstallRules.rb:984:in `block in classes_to_merge'
[ 80s] # ./src/modules/AutoInstallRules.rb:979:in `each'
[ 80s] # ./src/modules/AutoInstallRules.rb:979:in `classes_to_merge'
[ 80s] # ./test/AutoInstallRules_test.rb:643:in `block (5 levels) in