1+ import os
2+
13from leapp .libraries .actor import xfsinfoscanner
24from leapp .libraries .common .testutils import produce_mocked
3- from leapp .libraries .stdlib import api
4- from leapp .models import StorageInfo , FstabEntry , MountEntry , SystemdMountEntry , XFSPresence
5+ from leapp .libraries .stdlib import api , CalledProcessError
6+ from leapp .models import FstabEntry , MountEntry , StorageInfo , SystemdMountEntry , XFSPresence
57
68
79class run_mocked (object ):
@@ -87,6 +89,7 @@ def test_scan_xfs_mount(monkeypatch):
8789
8890def test_is_xfs_without_ftype (monkeypatch ):
8991 monkeypatch .setattr (xfsinfoscanner , "run" , run_mocked ())
92+ monkeypatch .setattr (os .path , "ismount" , lambda _ : True )
9093
9194 assert xfsinfoscanner .is_xfs_without_ftype ("/var" )
9295 assert ' ' .join (xfsinfoscanner .run .args ) == "/usr/sbin/xfs_info /var"
@@ -95,8 +98,22 @@ def test_is_xfs_without_ftype(monkeypatch):
9598 assert ' ' .join (xfsinfoscanner .run .args ) == "/usr/sbin/xfs_info /boot"
9699
97100
101+ def test_is_xfs_command_failed (monkeypatch ):
102+ def _run_mocked_exception (* args , ** kwargs ):
103+ raise CalledProcessError (message = "No such file or directory" , command = ["xfs_info" , "/nosuchmountpoint" ],
104+ result = 1 )
105+ # not a mountpoint
106+ monkeypatch .setattr (os .path , "ismount" , lambda _ : False )
107+ monkeypatch .setattr (xfsinfoscanner , "run" , _run_mocked_exception )
108+ assert not xfsinfoscanner .is_xfs_without_ftype ("/nosuchmountpoint" )
109+ # a real mountpoint but something else caused command to fail
110+ monkeypatch .setattr (os .path , "ismount" , lambda _ : True )
111+ assert not xfsinfoscanner .is_xfs_without_ftype ("/nosuchmountpoint" )
112+
113+
98114def test_scan_xfs (monkeypatch ):
99115 monkeypatch .setattr (xfsinfoscanner , "run" , run_mocked ())
116+ monkeypatch .setattr (os .path , "ismount" , lambda _ : True )
100117
101118 def consume_no_xfs_message_mocked (* models ):
102119 yield StorageInfo ()
0 commit comments