Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package yast2-users for openSUSE:Factory checked in at 2024-08-22 18:10:32 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/yast2-users (Old) and /work/SRC/openSUSE:Factory/.yast2-users.new.2698 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-users" Thu Aug 22 18:10:32 2024 rev:262 rq:1195134 version:5.0.2 Changes: -------- --- /work/SRC/openSUSE:Factory/yast2-users/yast2-users.changes 2023-09-28 00:28:18.138751970 +0200 +++ /work/SRC/openSUSE:Factory/.yast2-users.new.2698/yast2-users.changes 2024-08-22 18:10:42.471267015 +0200 @@ -1,0 +2,7 @@ +Wed Aug 21 13:21:10 UTC 2024 - Stefan Hundhammer <shundham...@suse.com> + +- Relax check in GECOS field (bsc#1228149): + Allow any data except colons +- 5.0.2 + +------------------------------------------------------------------- Old: ---- yast2-users-5.0.1.tar.bz2 New: ---- yast2-users-5.0.2.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-users.spec ++++++ --- /var/tmp/diff_new_pack.BeXOoW/_old 2024-08-22 18:10:43.023289941 +0200 +++ /var/tmp/diff_new_pack.BeXOoW/_new 2024-08-22 18:10:43.023289941 +0200 @@ -1,7 +1,7 @@ # # spec file for package yast2-users # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: yast2-users -Version: 5.0.1 +Version: 5.0.2 Release: 0 Summary: YaST2 - User and Group Configuration License: GPL-2.0-only ++++++ yast2-users-5.0.1.tar.bz2 -> yast2-users-5.0.2.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/.github/workflows/ci.yml new/yast2-users-5.0.2/.github/workflows/ci.yml --- old/yast2-users-5.0.1/.github/workflows/ci.yml 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/.github/workflows/ci.yml 2024-08-21 16:03:42.000000000 +0200 @@ -2,7 +2,7 @@ name: CI -on: [push, pull_request] +on: [ push, pull_request ] jobs: Tests: @@ -11,33 +11,32 @@ strategy: fail-fast: false matrix: - distro: [ "tumbleweed", "leap_latest" ] + distro: [ "tumbleweed" ] container: image: registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby steps: + - name: Git Checkout + uses: actions/checkout@v2 - - name: Git Checkout - uses: actions/checkout@v2 - - # just for easier debugging... - - name: Inspect Installed Packages - run: rpm -qa | sort - - - name: Unit Tests - run: rake test:unit - # enable code coverage reporting - env: - COVERAGE: 1 - - # send the coverage report to coveralls.io - - name: Coveralls Report - # send it only from the TW build to avoid duplicate submits - if: ${{ matrix.distro == 'tumbleweed' }} - uses: coverallsapp/github-action@master - with: - github-token: ${{ secrets.GITHUB_TOKEN }} + # just for easier debugging... + - name: Inspect Installed Packages + run: rpm -qa | sort + + - name: Unit Tests + run: rake test:unit + # enable code coverage reporting + env: + COVERAGE: 1 + + # send the coverage report to coveralls.io + - name: Coveralls Report + # send it only from the TW build to avoid duplicate submits + if: ${{ matrix.distro == 'tumbleweed' }} + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} Rubocop: runs-on: ubuntu-latest @@ -45,47 +44,48 @@ strategy: fail-fast: false matrix: - distro: [ "leap_latest" ] + distro: [ "tumbleweed" ] container: image: registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby steps: + - name: Git Checkout + uses: actions/checkout@v2 - - name: Git Checkout - uses: actions/checkout@v2 - - - name: Rubocop - run: rake check:rubocop + - name: Rubocop + run: rake check:rubocop Package: + # skip in master, but run in forks + if: github.ref_name != 'master' || github.repository_owner != 'yast' + runs-on: ubuntu-latest container: image: registry.opensuse.org/yast/head/containers/yast-cpp:latest steps: + - name: Git Checkout + uses: actions/checkout@v2 - - name: Git Checkout - uses: actions/checkout@v2 - - - name: Prepare System - run: | - # build_dependencies:install is not enough as some perl deps are runtime only - rake build_dependencies:install - zypper --non-interactive in --force-resolution --no-recommends \ - cracklib-devel \ - perl-Digest-SHA1 \ - perl-X500-DN \ - yast2-perl-bindings - - - name: Package Build - run: yast-ci-cpp - env: - # the tests require specific locale settings to pass - LANG: POSIX - LC_ALL: "" - # for the Perl syntax check - PERL5LIB: "./agents-perl/lib" + - name: Prepare System + run: | + # build_dependencies:install is not enough as some perl deps are runtime only + rake build_dependencies:install + zypper --non-interactive in --force-resolution --no-recommends \ + cracklib-devel \ + perl-Digest-SHA1 \ + perl-X500-DN \ + yast2-perl-bindings + + - name: Package Build + run: yast-ci-cpp + env: + # the tests require specific locale settings to pass + LANG: POSIX + LC_ALL: "" + # for the Perl syntax check + PERL5LIB: "./agents-perl/lib" Yardoc: runs-on: ubuntu-latest @@ -93,18 +93,17 @@ strategy: fail-fast: false matrix: - distro: [ "tumbleweed", "leap_latest" ] + distro: [ "tumbleweed" ] container: image: registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby steps: + - name: Git Checkout + uses: actions/checkout@v2 - - name: Git Checkout - uses: actions/checkout@v2 - - - name: Yardoc - run: rake check:doc + - name: Yardoc + run: rake check:doc Checks: runs-on: ubuntu-latest @@ -112,16 +111,14 @@ strategy: fail-fast: false matrix: - distro: [ "leap_latest" ] + distro: [ "tumbleweed" ] container: image: registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby steps: + - name: Git Checkout + uses: actions/checkout@v2 - - name: Git Checkout - uses: actions/checkout@v2 - - - name: POT Check - run: rake check:pot - + - name: POT Check + run: rake check:pot diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/.github/workflows/submit.yml new/yast2-users-5.0.2/.github/workflows/submit.yml --- old/yast2-users-5.0.1/.github/workflows/submit.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/yast2-users-5.0.2/.github/workflows/submit.yml 2024-08-21 16:03:42.000000000 +0200 @@ -0,0 +1,29 @@ +# See https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions + +name: OBS + +on: + # only when committing to master + push: + branches: master + + # allow running manually from GitHub Web + workflow_dispatch: + +jobs: + submit: + # do not run in forks + if: github.repository_owner == 'yast' + + runs-on: ubuntu-latest + + # the default timeout is 6 hours, do not wait for that long if osc gets stucked + timeout-minutes: 30 + + steps: + - name: Submit the package + # see https://github.com/yast/actions/blob/master/submit/action.yml + uses: yast/actions/submit@master + with: + obs_user: ${{ secrets.OBS_USER }} + obs_password: ${{ secrets.OBS_PASSWORD }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/.rubocop.yml new/yast2-users-5.0.2/.rubocop.yml --- old/yast2-users-5.0.1/.rubocop.yml 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/.rubocop.yml 2024-08-21 16:03:42.000000000 +0200 @@ -1,19 +1,29 @@ # use the shared YaST defaults inherit_from: - /usr/share/YaST2/data/devtools/data/rubocop-0.71.0_yast_style.yml + /usr/share/YaST2/data/devtools/data/rubocop-1.24.1_yast_style.yml # Don't enforce any particular name for block params -SingleLineBlockParams: +Style/SingleLineBlockParams: Enabled: false Style/FrozenStringLiteralComment: Enabled: false +Metrics/AbcSize: + Max: 40 + +Metrics/CyclomaticComplexity: + Max: 10 + Metrics/BlockLength: # rspec is known as DSL with big blocks Exclude: - test/**/* +# do not break API +Naming/MethodParameterName: + Enabled: false + AllCops: Exclude: - 'src/modules/**/*' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/README.md new/yast2-users-5.0.2/README.md --- old/yast2-users-5.0.1/README.md 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/README.md 2024-08-21 16:03:42.000000000 +0200 @@ -2,8 +2,7 @@ [![Workflow Status](https://github.com/yast/yast-users/workflows/CI/badge.svg?branch=master)]( https://github.com/yast/yast-users/actions?query=branch%3Amaster) -[![Jenkins Status](https://ci.opensuse.org/buildStatus/icon?job=yast-yast-users-master)]( -https://ci.opensuse.org/view/Yast/job/yast-yast-users-master/) +[![OBS](https://github.com/yast/yast-users/actions/workflows/submit.yml/badge.svg)](https://github.com/yast/yast-users/actions/workflows/submit.yml) This module allows to use YaST to manage local and LDAP users and groups. It also makes possible to configure some aspects of the system related to user management and authentication. For a partial diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/package/yast2-users.changes new/yast2-users-5.0.2/package/yast2-users.changes --- old/yast2-users-5.0.1/package/yast2-users.changes 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/package/yast2-users.changes 2024-08-21 16:03:42.000000000 +0200 @@ -1,4 +1,11 @@ ------------------------------------------------------------------- +Wed Aug 21 13:21:10 UTC 2024 - Stefan Hundhammer <shundham...@suse.com> + +- Relax check in GECOS field (bsc#1228149): + Allow any data except colons +- 5.0.2 + +------------------------------------------------------------------- Mon Sep 25 12:33:45 UTC 2023 - Stefan Hundhammer <shundham...@suse.com> - Don't use obsolete method Dir.exists? (bsc#1215637) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/package/yast2-users.spec new/yast2-users-5.0.2/package/yast2-users.spec --- old/yast2-users-5.0.1/package/yast2-users.spec 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/package/yast2-users.spec 2024-08-21 16:03:42.000000000 +0200 @@ -17,7 +17,7 @@ Name: yast2-users -Version: 5.0.1 +Version: 5.0.2 Release: 0 Summary: YaST2 - User and Group Configuration License: GPL-2.0-only diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/users/clients/auto.rb new/yast2-users-5.0.2/src/lib/users/clients/auto.rb --- old/yast2-users-5.0.1/src/lib/users/clients/auto.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/users/clients/auto.rb 2024-08-21 16:03:42.000000000 +0200 @@ -19,14 +19,13 @@ require "yast" require "installation/auto_client" +require "y2issues" require "y2users" require "y2users/autoinst/reader" -require "y2issues" -require "y2users/config_merger" require "y2users/config_manager" -require "y2users/autoinst/reader" -require "y2users/users_module/reader" +require "y2users/config_merger" require "y2users/linux/writer" +require "y2users/users_module/reader" Yast.import "Users" Yast.import "Linuxrc" @@ -41,6 +40,7 @@ # AutoYaST users client class Auto < ::Installation::AutoClient def initialize + super textdomain "users" Yast.include self, "users/wizards.rb" @@ -55,9 +55,7 @@ result = reader.read read_linuxrc_root_pwd(result.config) - if result.issues? - return false unless Y2Issues.report(result.issues) - end + return false if result.issues? && !Y2Issues.report(result.issues) Y2Users::ConfigManager.instance.target = result.config diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/users/clients/users_finish.rb new/yast2-users-5.0.2/src/lib/users/clients/users_finish.rb --- old/yast2-users-5.0.1/src/lib/users/clients/users_finish.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/users/clients/users_finish.rb 2024-08-21 16:03:42.000000000 +0200 @@ -37,6 +37,7 @@ include Logger def initialize + super textdomain "users" Yast.import "Users" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/users/dialogs/inst_root_first.rb new/yast2-users-5.0.2/src/lib/users/dialogs/inst_root_first.rb --- old/yast2-users-5.0.1/src/lib/users/dialogs/inst_root_first.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/users/dialogs/inst_root_first.rb 2024-08-21 16:03:42.000000000 +0200 @@ -33,6 +33,7 @@ # # @param root_user [Y2Users::Users] object holding the root user configuration def initialize(root_user) + super() textdomain "users" @root_user = root_user diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/users/encryption_proposal.rb new/yast2-users-5.0.2/src/lib/users/encryption_proposal.rb --- old/yast2-users-5.0.1/src/lib/users/encryption_proposal.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/users/encryption_proposal.rb 2024-08-21 16:03:42.000000000 +0200 @@ -26,6 +26,7 @@ include Yast::Logger def initialize + super Yast.import "Wizard" textdomain "users" end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/users/proposal.rb new/yast2-users-5.0.2/src/lib/users/proposal.rb --- old/yast2-users-5.0.1/src/lib/users/proposal.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/users/proposal.rb 2024-08-21 16:03:42.000000000 +0200 @@ -29,6 +29,7 @@ include Yast::Logger def initialize + super Yast.import "Wizard" Yast.import "Mode" textdomain "users" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/users/ssh_authorized_keys_file.rb new/yast2-users-5.0.2/src/lib/users/ssh_authorized_keys_file.rb --- old/yast2-users-5.0.1/src/lib/users/ssh_authorized_keys_file.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/users/ssh_authorized_keys_file.rb 2024-08-21 16:03:42.000000000 +0200 @@ -100,9 +100,12 @@ keys end + # it is not our regexp + # rubocop:disable Lint/MixedRegexpCaptureTypes # https://github.com/puppetlabs/puppet/blob/master/lib/puppet/type/ssh_authorized_key.rb#L138 AUTHORIZED_KEYS_REGEX = /\A(?<env>(.+)\s+)?(?<type>(ssh|ecdsa)-\S+)\s+(?<key>[^ ]+)\s*(?<comment>.*)\z/.freeze + # rubocop:enable Lint/MixedRegexpCaptureTypes # Determine is a string qualifies like a valid key # diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/users/ssh_public_key.rb new/yast2-users-5.0.2/src/lib/users/ssh_public_key.rb --- old/yast2-users-5.0.1/src/lib/users/ssh_public_key.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/users/ssh_public_key.rb 2024-08-21 16:03:42.000000000 +0200 @@ -47,7 +47,7 @@ # # @return [String] Comment field def comment - @comment ||= raw.split(" ")[2] + @comment ||= raw.split[2] end # Returns the string version of the public key @@ -64,7 +64,7 @@ # # @see https://github.com/openssh/openssh-portable/blob/1a4a9cf80f5b92b9d1dadd0bfa8867c04d195391/sshkey.c#L955 def formatted_fingerprint - fp = fingerprint.sub(/\=+\Z/, "") + fp = fingerprint.sub(/=+\Z/, "") "SHA256:#{fp}" end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/users/widgets/inst_root_first.rb new/yast2-users-5.0.2/src/lib/users/widgets/inst_root_first.rb --- old/yast2-users-5.0.1/src/lib/users/widgets/inst_root_first.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/users/widgets/inst_root_first.rb 2024-08-21 16:03:42.000000000 +0200 @@ -31,6 +31,7 @@ # # @param user [Y2Users::User] the root user to work with def initialize(user) + super() textdomain "users" @user = user diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/users/widgets/public_key_selector.rb new/yast2-users-5.0.2/src/lib/users/widgets/public_key_selector.rb --- old/yast2-users-5.0.1/src/lib/users/widgets/public_key_selector.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/users/widgets/public_key_selector.rb 2024-08-21 16:03:42.000000000 +0200 @@ -40,6 +40,7 @@ # # @param user [Y2Users::User] the user to work with def initialize(user) + super() textdomain "users" @user = user diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/users/widgets.rb new/yast2-users-5.0.2/src/lib/users/widgets.rb --- old/yast2-users-5.0.1/src/lib/users/widgets.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/users/widgets.rb 2024-08-21 16:03:42.000000000 +0200 @@ -51,6 +51,7 @@ # @param focus [Boolean] if set, then widget set focus to first password input field # @param allow_empty [Boolean] whether the user can left the password empty or not def initialize(user, little_space: false, focus: false, allow_empty: false) + super() textdomain "users" @user = user @@ -105,7 +106,6 @@ # FIXME: Validation methods should only check values. Note that with the current implementation, # this method is taking care of setting/removing the user's password. This method should not # modify the user. - # rubocop:disable Metrics/CyclomaticComplexity def validate password1 = Yast::UI.QueryWidget(Id(:pw1), :Value) password2 = Yast::UI.QueryWidget(Id(:pw2), :Value) @@ -139,7 +139,6 @@ true end - # rubocop:enable Metrics/CyclomaticComplexity def help # rubocop:disable Metrics/MethodLength # help text ( explain what the user "root" is and does ) 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/y2users/autoinst_profile/groups_section.rb new/yast2-users-5.0.2/src/lib/y2users/autoinst_profile/groups_section.rb --- old/yast2-users-5.0.1/src/lib/y2users/autoinst_profile/groups_section.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/y2users/autoinst_profile/groups_section.rb 2024-08-21 16:03:42.000000000 +0200 @@ -41,6 +41,7 @@ end def initialize(groups = []) + super() @groups = groups end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/y2users/autoinst_profile/users_section.rb new/yast2-users-5.0.2/src/lib/y2users/autoinst_profile/users_section.rb --- old/yast2-users-5.0.1/src/lib/y2users/autoinst_profile/users_section.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/y2users/autoinst_profile/users_section.rb 2024-08-21 16:03:42.000000000 +0200 @@ -40,6 +40,7 @@ end def initialize(users = []) + super() @users = users end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/y2users/config.rb new/yast2-users-5.0.2/src/lib/y2users/config.rb --- old/yast2-users-5.0.1/src/lib/y2users/config.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/y2users/config.rb 2024-08-21 16:03:42.000000000 +0200 @@ -188,7 +188,7 @@ if !exist log.warn("Detach element: element #{element} is attached to the config #{self}, but " \ - "it cannot be found.") + "it cannot be found.") end collection_for(element).delete(element.id) if exist diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/y2users/config_element.rb new/yast2-users-5.0.2/src/lib/y2users/config_element.rb --- old/yast2-users-5.0.1/src/lib/y2users/config_element.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/y2users/config_element.rb 2024-08-21 16:03:42.000000000 +0200 @@ -74,7 +74,7 @@ # @param other [ConfigElement] # @return [Boolean] def is?(other) - return false unless self.class == other.class + return false unless instance_of?(other.class) return false if id.nil? || other.id.nil? id == other.id diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/y2users/config_element_collection.rb new/yast2-users-5.0.2/src/lib/y2users/config_element_collection.rb --- old/yast2-users-5.0.1/src/lib/y2users/config_element_collection.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/y2users/config_element_collection.rb 2024-08-21 16:03:42.000000000 +0200 @@ -26,7 +26,7 @@ # # @param elements [Array<ConfigElement>] def initialize(elements = []) - @elements = elements + super end # Deletes the element with the given id from the collection diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/y2users/config_manager.rb new/yast2-users-5.0.2/src/lib/y2users/config_manager.rb --- old/yast2-users-5.0.1/src/lib/y2users/config_manager.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/y2users/config_manager.rb 2024-08-21 16:03:42.000000000 +0200 @@ -34,13 +34,11 @@ # @param [Config] config # @param [Symbol] as id of config # @note if given id is already registered, it is overwritten - # rubocop:disable Naming/UncommunicativeMethodParamName def register(config, as:) raise ArgumentError, "#{as.inspect} is not Symbol" unless as.is_a?(Symbol) @register[as] = config end - # rubocop:enable Naming/UncommunicativeMethodParamName # Unregister given id # @param [Symbol] id of config diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/y2users/linux/groups_writer.rb new/yast2-users-5.0.2/src/lib/y2users/linux/groups_writer.rb --- old/yast2-users-5.0.1/src/lib/y2users/linux/groups_writer.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/y2users/linux/groups_writer.rb 2024-08-21 16:03:42.000000000 +0200 @@ -42,6 +42,7 @@ # @param initial_config [Config] see #initial_config # @param commit_config [CommitConfig] see #commit_config def initialize(target_config, initial_config, commit_config) + super() textdomain "users" @initial_config = initial_config diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/y2users/linux/local_reader.rb new/yast2-users-5.0.2/src/lib/y2users/linux/local_reader.rb --- old/yast2-users-5.0.1/src/lib/y2users/linux/local_reader.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/y2users/linux/local_reader.rb 2024-08-21 16:03:42.000000000 +0200 @@ -27,6 +27,7 @@ # # @param source_dir [String, Pathname] path of source directory for reading files def initialize(source_dir = "/") + super() @source_dir = source_dir end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/y2users/linux/set_user_password_action.rb new/yast2-users-5.0.2/src/lib/y2users/linux/set_user_password_action.rb --- old/yast2-users-5.0.1/src/lib/y2users/linux/set_user_password_action.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/y2users/linux/set_user_password_action.rb 2024-08-21 16:03:42.000000000 +0200 @@ -125,7 +125,7 @@ def chage_options return [] unless user.password - opts = chage_options_hash.reject { |_, v| v.nil? }.flatten + opts = chage_options_hash.compact.flatten return [] if opts.empty? opts + root_path_options diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/y2users/linux/useradd_config_writer.rb new/yast2-users-5.0.2/src/lib/y2users/linux/useradd_config_writer.rb --- old/yast2-users-5.0.1/src/lib/y2users/linux/useradd_config_writer.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/y2users/linux/useradd_config_writer.rb 2024-08-21 16:03:42.000000000 +0200 @@ -115,7 +115,7 @@ def write_useradd(issues) if !write_useradd? log.info "Not writing useradd file. " \ - "#{useradd_config.inspect} - #{initial_useradd_config.inspect}" + "#{useradd_config.inspect} - #{initial_useradd_config.inspect}" return end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/y2users/linux/users_writer.rb new/yast2-users-5.0.2/src/lib/y2users/linux/users_writer.rb --- old/yast2-users-5.0.1/src/lib/y2users/linux/users_writer.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/y2users/linux/users_writer.rb 2024-08-21 16:03:42.000000000 +0200 @@ -53,6 +53,7 @@ # @param initial_config [Config] see #initial_config # @param commit_config [CommitConfig] def initialize(target_config, initial_config, commit_config) + super() textdomain "users" @initial_config = initial_config diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/y2users/password.rb new/yast2-users-5.0.2/src/lib/y2users/password.rb --- old/yast2-users-5.0.1/src/lib/y2users/password.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/y2users/password.rb 2024-08-21 16:03:42.000000000 +0200 @@ -176,6 +176,7 @@ # # @param content [String] password value def initialize(content) + super() self.content = content end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/y2users/password_validator.rb new/yast2-users-5.0.2/src/lib/y2users/password_validator.rb --- old/yast2-users-5.0.1/src/lib/y2users/password_validator.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/y2users/password_validator.rb 2024-08-21 16:03:42.000000000 +0200 @@ -73,14 +73,14 @@ NUMBERS = "0123456789".freeze # This regexp is allowed characters. It is what can be easily press on default keyboard layout # to prevent issues with emergency login from console. - PASSWORD_REGEXP = /\A[-#{NUMBERS}#{LETTERS}!@#\:!\$%^&*() ,;:._+\/|?{}=\['\"`~<>\]\\]+\z/.freeze + PASSWORD_REGEXP = /\A[-#{NUMBERS}#{LETTERS}!@#:$%^&*() ,;._+\/|?{}=\['"`~<>\]\\]+\z/.freeze def check_password - # note duplicite string as in UsersSimple. Keep them in sync. + # NOTE: duplicite string as in UsersSimple. Keep them in sync. return _("No password entered.\nTry again.") if !content || content.empty? return "" if content =~ PASSWORD_REGEXP - # note duplicite string as in UsersSimple. Keep them in sync. Be aware of different + # NOTE: duplicite string as in UsersSimple. Keep them in sync. Be aware of different # escaping in perl _("The password may only contain the following characters:\n" \ "0-9, a-z, A-Z, and any of \"`~!@#$%^&* ,.;:._-+/|?='{[(<>)]}\\\".\n" \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/y2users/user_validator.rb new/yast2-users-5.0.2/src/lib/y2users/user_validator.rb --- old/yast2-users-5.0.1/src/lib/y2users/user_validator.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/y2users/user_validator.rb 2024-08-21 16:03:42.000000000 +0200 @@ -93,14 +93,14 @@ # reason: see for example man utmp, UT_NAMESIZE MAX_LENGTH = 32 def check_length - # note duplicite string as in UsersSimple. Keep them in sync. + # NOTE: duplicite string as in UsersSimple. Keep them in sync. return _("No username entered.\nTry again.") if user.name.nil? || user.name.empty? return "" if (MIN_LENGTH..MAX_LENGTH).include?(user.name.size) - # note duplicite string as in UsersSimple. Keep them in sync. + # NOTE: duplicite string as in UsersSimple. Keep them in sync. format(_("The username must be between %i and %i characters in length.\n" \ - "Try again."), MIN_LENGTH, MAX_LENGTH) + "Try again."), MIN_LENGTH, MAX_LENGTH) end LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".freeze @@ -111,7 +111,7 @@ def check_characters return "" if user.name =~ CHAR_REGEXP - # note duplicite string as in UsersSimple. Keep them in sync. + # NOTE: duplicite string as in UsersSimple. Keep them in sync. _("The username may contain only\n" \ "Latin letters and digits, \"-\", \".\", and \"_\"\n" \ "and must begin with a letter or \"_\".\n" \ @@ -208,7 +208,7 @@ return "" unless usernames.include?(user.name) - # note duplicite string as in UsersSimple. Keep them in sync. + # NOTE: duplicite string as in UsersSimple. Keep them in sync. _("There is a conflict between the entered\n" \ "username and an existing username.\n" \ "Try another one.") @@ -219,7 +219,7 @@ return "" if user.full_name !~ /[:,]/ - # note duplicite string as in UsersSimple. Keep them in sync. + # NOTE: duplicite string as in UsersSimple. Keep them in sync. _("The user's full name cannot contain\n" \ "\":\" or \",\" characters.\n" \ "Try again.") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/y2users/useradd_config.rb new/yast2-users-5.0.2/src/lib/y2users/useradd_config.rb --- old/yast2-users-5.0.1/src/lib/y2users/useradd_config.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/y2users/useradd_config.rb 2024-08-21 16:03:42.000000000 +0200 @@ -92,6 +92,7 @@ # # @return [String, nil] attr_reader :group + attr_setter :group # This value is used as prefix to calculate the home directory for a new user, if no home @@ -103,6 +104,7 @@ # # @return [String, nil] attr_reader :home + attr_setter :home # The file mode mask used to create new home directories, if HOME_MODE is not specified in @@ -120,6 +122,7 @@ # # @return [String, nil] attr_reader :umask + attr_setter :umask # Password expiration date to use when creating a user, if none was set @@ -131,6 +134,7 @@ # # @return [String, nil] attr_reader :expiration + attr_setter :expiration # Inactivity period to set when creating a user, if none was set @@ -141,6 +145,7 @@ # # @return [Integer, nil] attr_reader :inactivity_period + attr_setter :inactivity_period # Login shell to set for a newly created user, if none was specified @@ -149,6 +154,7 @@ # # @return [String, nil] attr_reader :shell + attr_setter :shell # Skeleton directory from which the files will be copied when creating a home directory for diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/y2users/username.rb new/yast2-users-5.0.2/src/lib/y2users/username.rb --- old/yast2-users-5.0.1/src/lib/y2users/username.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/y2users/username.rb 2024-08-21 16:03:42.000000000 +0200 @@ -28,7 +28,7 @@ # @param text [String] text for generating the username (usually the user fullname) # @return [String] a valid username def generate_from(text) - username = text.split(" ").first || "" + username = text.split.first || "" username = transliterate(username) username = sanitize(username) username.downcase diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/lib/y2users/users_module/reader.rb new/yast2-users-5.0.2/src/lib/y2users/users_module/reader.rb --- old/yast2-users-5.0.1/src/lib/y2users/users_module/reader.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/lib/y2users/users_module/reader.rb 2024-08-21 16:03:42.000000000 +0200 @@ -119,7 +119,7 @@ ["local", "system"].each do |type| next unless removed_users[type] - removed_users[type].values.each { |u| system_config.attach(user(u, system_config)) } + removed_users[type].each_value { |u| system_config.attach(user(u, system_config)) } end end @@ -142,7 +142,7 @@ ["local", "system"].each do |type| next unless removed_groups[type] - removed_groups[type].values.each { |u| system_config.attach(group(u)) } + removed_groups[type].each_value { |u| system_config.attach(group(u)) } end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/src/modules/Users.pm new/yast2-users-5.0.2/src/modules/Users.pm --- old/yast2-users-5.0.1/src/modules/Users.pm 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/src/modules/Users.pm 2024-08-21 16:03:42.000000000 +0200 @@ -4659,14 +4659,6 @@ contain a colon (:). Try again."); } - my @gecos_l = split (/,/, $gecos); - if (@gecos_l > 3 ) { - # error popup - return __("The \"Additional User Information\" entry can consist -of up to three sections separated by commas. -Remove the surplus."); - } - return ""; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/test/dialogs_test.rb new/yast2-users-5.0.2/test/dialogs_test.rb --- old/yast2-users-5.0.1/test/dialogs_test.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/test/dialogs_test.rb 2024-08-21 16:03:42.000000000 +0200 @@ -6,6 +6,7 @@ class UsersDialogsDummy < Yast::Module def initialize + super Yast.include self, "users/dialogs.rb" end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/test/fixtures/users_export.rb new/yast2-users-5.0.2/test/fixtures/users_export.rb --- old/yast2-users-5.0.1/test/fixtures/users_export.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/test/fixtures/users_export.rb 2024-08-21 16:03:42.000000000 +0200 @@ -273,7 +273,8 @@ "shell" => "/bin/bash", "uid" => "1000", "user_password" => "$6$Jn1sSsaWb5Jj$97bMFbWPGB5UgE/Vt7uuUMjLPIW4C" \ - "7McyvXxkyltK/0GgW0Q7qG6F0eKeVLYziskSihzlakgXUG1gPRw/ZKw10", + "7McyvXxkyltK/0GgW0Q7qG6F0eKeVLYziskSihzlakgXU" \ + "G1gPRw/ZKw10", "username" => "tux" }, { "authorized_keys" => [], "encrypted" => true, @@ -386,7 +387,8 @@ "shell" => "/bin/bash", "uid" => "0", "user_password" => "$6$ASfaLE9EGIam$Gk9YxWfX/EeB8sEv3qLYdHQXTx.9T" \ - "1wNoyn5Y34PMZ03wh8S48QhbpjC8gUQvdFnbdH.4HqGeT3z5Y2zdlM11/", + "1wNoyn5Y34PMZ03wh8S48QhbpjC8gUQvdFnbdH.4HqGeT" \ + "3z5Y2zdlM11/", "username" => "root" }, { "authorized_keys" => [], "encrypted" => true, @@ -547,7 +549,8 @@ "shell" => "/bin/bash", "uid" => "0", "user_password" => "$6$ASfaLE9EGIam$Gk9YxWfX/EeB8sEv3qLYdHQXTx.9T1" \ - "wNoyn5Y34PMZ03wh8S48QhbpjC8gUQvdFnbdH.4HqGeT3z5Y2zdlM11/", + "wNoyn5Y34PMZ03wh8S48QhbpjC8gUQvdFnbdH.4HqGeT3z" \ + "5Y2zdlM11/", "username" => "toor" }, { "authorized_keys" => [], "encrypted" => true, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/test/lib/users/clients/auto_test.rb new/yast2-users-5.0.2/test/lib/users/clients/auto_test.rb --- old/yast2-users-5.0.1/test/lib/users/clients/auto_test.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/test/lib/users/clients/auto_test.rb 2024-08-21 16:03:42.000000000 +0200 @@ -168,7 +168,7 @@ end context "when 'compact' export is wanted" do - let(:args) { [func, "target" => "compact"] } + let(:args) { [func, { "target" => "compact" }] } it "it exports only local users and groups" do expect(subject.run).to eq(local_users) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/test/lib/users/widgets/inst_root_first_test.rb new/yast2-users-5.0.2/test/lib/users/widgets/inst_root_first_test.rb --- old/yast2-users-5.0.1/test/lib/users/widgets/inst_root_first_test.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/test/lib/users/widgets/inst_root_first_test.rb 2024-08-21 16:03:42.000000000 +0200 @@ -52,9 +52,6 @@ end context "when neither a password nor public key was given" do - before do - end - it "returns false" do expect(widget.validate).to eq(false) end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/test/lib/y2users/test_helper.rb new/yast2-users-5.0.2/test/lib/y2users/test_helper.rb --- old/yast2-users-5.0.1/test/lib/y2users/test_helper.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/test/lib/y2users/test_helper.rb 2024-08-21 16:03:42.000000000 +0200 @@ -1 +1 @@ -require_relative "../../test_helper.rb" +require_relative "../../test_helper" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/test/lib/y2users/users_module/commit_config_reader_test.rb new/yast2-users-5.0.2/test/lib/y2users/users_module/commit_config_reader_test.rb --- old/yast2-users-5.0.1/test/lib/y2users/users_module/commit_config_reader_test.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/test/lib/y2users/users_module/commit_config_reader_test.rb 2024-08-21 16:03:42.000000000 +0200 @@ -79,7 +79,7 @@ "uid" => "test6", "uidNumber" => 1001, "userPassword" => "$6$jap/4cvK4.veohli$0JPqLC3sheKRTv79PoiW1fBtbudBad04hWKrUdfOM" \ - "yzVoGCUZ1KZivJqq1bIFUlJUJPXIbwFOqxNU1wrpZ8/", + "yzVoGCUZ1KZivJqq1bIFUlJUJPXIbwFOqxNU1wrpZ8/", "what" => "delete_user" }, "test2" => { @@ -106,7 +106,7 @@ "uid" => "test2", "uidNumber" => 1002, "userPassword" => "!$6$yRZunFQ0DSZghYQ4$7K2cLQ/XrhucUZr4btKmUbfMuUmbDmRX7msfs6VQ" \ - "GKb2nkrbNn0c2d3mNmG.MGfFgmYyv.540Yaq2GtpVaK1", + "GKb2nkrbNn0c2d3mNmG.MGfFgmYyv.540Yaq2GtpVaK1", "what" => "delete_user" } } @@ -114,7 +114,7 @@ end before do - mapped_users = Hash[users.map { |u| [u["uid"], u] }] + mapped_users = users.map { |u| [u["uid"], u] }.to_h allow(Yast::Users).to receive(:GetUsers).and_return(mapped_users, {}) allow(Yast::Users).to receive(:RemovedUsers).and_return(removed_users) end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-5.0.1/test/lib/y2users/users_module/reader_test.rb new/yast2-users-5.0.2/test/lib/y2users/users_module/reader_test.rb --- old/yast2-users-5.0.1/test/lib/y2users/users_module/reader_test.rb 2023-09-25 14:47:05.000000000 +0200 +++ new/yast2-users-5.0.2/test/lib/y2users/users_module/reader_test.rb 2024-08-21 16:03:42.000000000 +0200 @@ -63,7 +63,7 @@ "uid" => "test1", "uidNumber" => 1002, "userPassword" => "$6$CIrJOmyF8WBnHsAn$Sh.pjryO9CD.Dfm9KzDdVYYXblxiTw05b9b0GVpMbckbU" \ - "gK/fFvn7nM.ipqooa3Ks5fGgzV.6gPBGG1l8hs7L.", + "gK/fFvn7nM.ipqooa3Ks5fGgzV.6gPBGG1l8hs7L.", "what" => "group_change" }, { @@ -116,7 +116,7 @@ "uid" => "test2", "uidNumber" => 1001, "userPassword" => "!$6$7CgeIaVsqcVd2OXq$T9ObPbjPCOm7E3U730S8ZLJ82GBBi9XXYJM4iUNadk" \ - "gfpZ3CU/cXe.hdaGhdutqhixtFuZ2hrhEIZvlTcKgSc." + "gfpZ3CU/cXe.hdaGhdutqhixtFuZ2hrhEIZvlTcKgSc." }, "plugins" => [], "removed_grouplist" => { @@ -134,7 +134,7 @@ "uid" => "test2", "uidNumber" => 1001, "userPassword" => "!$6$7CgeIaVsqcVd2OXq$T9ObPbjPCOm7E3U730S8ZLJ82GBBi9XXYJM4iUNadkg" \ - "fpZ3CU/cXe.hdaGhdutqhixtFuZ2hrhEIZvlTcKgSc.", + "fpZ3CU/cXe.hdaGhdutqhixtFuZ2hrhEIZvlTcKgSc.", "what" => "edit_user" } ] @@ -166,7 +166,7 @@ "uid" => "test3", "uidNumber" => 1001, "userPassword" => "$6$jap/4cvK4.veohli$0JPqLC3sheKRTv79PoiW1fBtbudBad04hWKrUdfOMyzA" \ - "tVoGCUZ1KZivJqq1bIFUlJUJPXIbwFOqxNU1wrpZ8/", + "tVoGCUZ1KZivJqq1bIFUlJUJPXIbwFOqxNU1wrpZ8/", "what" => "delete_user" }, "test4" => { @@ -193,7 +193,7 @@ "uid" => "test4", "uidNumber" => 1002, "userPassword" => "!$6$yRZunFQ0DSZghYQ4$7K2cLQ/XrhucUZr4btKmUbfMuUmbDmRX7msfs6VQGKE" \ - "fb2nkrbNn0c2d3mNmG.MGfFgmYyv.540Yaq2GtpVaK1", + "fb2nkrbNn0c2d3mNmG.MGfFgmYyv.540Yaq2GtpVaK1", "what" => "delete_user" } } @@ -285,10 +285,10 @@ before do allow(Yast::Users).to receive(:GetLoginDefaults).and_return(login_config) - mapped_users = Hash[users.map { |u| [u["uid"], u] }] + mapped_users = users.map { |u| [u["uid"], u] }.to_h allow(Yast::Users).to receive(:GetUsers).and_return({}, mapped_users) - mapped_sys_groups = Hash[sys_groups.map { |g| [g["cn"], g] }] - mapped_local_groups = Hash[local_groups.map { |g| [g["cn"], g] }] + mapped_sys_groups = sys_groups.map { |g| [g["cn"], g] }.to_h + mapped_local_groups = local_groups.map { |g| [g["cn"], g] }.to_h allow(Yast::Users).to receive(:GetGroups).and_return(mapped_sys_groups, mapped_local_groups) allow(Yast::Users).to receive(:RemovedUsers).and_return(removed_users) allow(Yast::Users).to receive(:RemovedGroups).and_return(removed_groups)