Skip to content

Commit

Permalink
Refactored LanItems#ReplaceItemUdev
Browse files Browse the repository at this point in the history
  • Loading branch information
mchf committed Jun 8, 2016
1 parent 40ac6c1 commit 1ea3476
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 21 deletions.
27 changes: 6 additions & 21 deletions src/modules/LanItems.rb
Expand Up @@ -424,35 +424,20 @@ def GetItemUdev(key)
# Thats bcs this function is currently used for touching "NAME", "KERNELS" and
# "ATTR{address}" keys
def ReplaceItemUdev(replace_key, new_key, new_val)
new_rules = []
# udev syntax distinguishes among others:
# = for assignment
# == for equality checks
operator = new_key == "NAME" ? "=" : "=="

Builtins.foreach(getUdevFallback) do |row|
if Builtins.issubstring(row, replace_key)
row = Builtins.sformat("%1%2\"%3\"", new_key, operator, new_val)
end
new_rules = Builtins.add(new_rules, row)
end
rule = RemoveKeyFromUdevRule(getUdevFallback, replace_key)
new_rule = AddToUdevRule(rule, "#{new_key}#{operator}\"#{new_val}\"")

Builtins.y2debug(
"LanItems::ReplaceItemUdev: udev rules %1",
Ops.get_list(@Items, [@current, "udev", "net"], [])
)
log.info("ReplaceItemUdev: new udev rule = #{new_rule}")

Ops.set(@Items, [@current, "udev", "net"], new_rules)

Builtins.y2debug(
"LanItems::ReplaceItemUdev(%1, %2, %3) %4",
replace_key,
new_key,
new_val,
new_rules
)
Items()[@current]["udev"] = { "net" => {} } if !Items()[@current]["udev"]
Items()[@current]["udev"]["net"] = new_rule

deep_copy(new_rules)
deep_copy(new_rule)
end

# Updates device name.
Expand Down
6 changes: 6 additions & 0 deletions test/udev_test.rb
Expand Up @@ -79,6 +79,9 @@ def initialize
Yast.import "LanItems"

it "replaces triplet in the rule as requested" do
allow(Yast::LanItems)
.to receive(:Items)
.and_return(0 => {})
allow(Yast::LanItems)
.to receive(:getUdevFallback)
.and_return(
Expand All @@ -89,6 +92,9 @@ def initialize
]
)

# internally used in ReplaceItemUdev, needed to be able to mock its usage
Yast::LanItems.current = 0

updated_rule = Yast::LanItems.ReplaceItemUdev(
"KERNELS",
"ATTR{address}",
Expand Down

0 comments on commit 1ea3476

Please sign in to comment.