awesome/spec/menubar/utils_spec.lua
Sorky 3f26624160 Aligning 'regex' with other PR / Minor readability improvements
https://github.com/awesomeWM/awesome/issues/2596

Re-matched regex used elsewhere & updated test cases for "." in filename

Allowed for alternative extensions to be found even if specified

Reverted the change of behaviour but adjusted code for readability

Small readability change

Avoided delay searches that would never work

Untabify

Reverted possible [unlikely/undesired] behaviour changes

Untabify
2019-02-09 19:21:46 +11:00

148 lines
5.6 KiB
Lua

---------------------------------------------------------------------------
-- @author Zach Peltzer
-- @copyright 2017 Zach Peltzer
---------------------------------------------------------------------------
local utils = require("menubar.utils")
local theme = require("beautiful")
local glib = require("lgi").GLib
local gfs = require("gears.filesystem")
describe("menubar.utils lookup_icon_uncached", function()
local shimmed = {}
local gfs_shim_dir_readable
local gfs_shim_file_readable
local icon_theme
local function assert_found_in_path(icon, path)
assert.matches(path .. '$', utils.lookup_icon_uncached(icon) or '')
end
setup(function()
local root = (os.getenv("SOURCE_DIRECTORY") or '.') .. "/spec/menubar"
local function shim(name, retval)
shimmed[name] = glib[name]
glib[name] = function() return retval end
end
shim('get_home_dir', "/home")
shim('get_user_data_dir', "/home/.local/share")
shim('get_system_data_dirs', {
"/usr/local/share",
"/usr/share"
})
gfs_shim_dir_readable = gfs.dir_readable
gfs.dir_readable = function(path) return gfs_shim_dir_readable(root..path) end
gfs_shim_file_readable = gfs.file_readable
gfs.file_readable = function(filename) return gfs_shim_file_readable(root..filename) end
icon_theme = theme.icon_theme
theme.icon_theme = 'awesome'
end)
teardown(function()
for name, func in pairs(shimmed) do
glib[name] = func
end
gfs.dir_readable = gfs_shim_dir_readable
gfs.file_readable = gfs_shim_file_readable
theme.icon_theme = icon_theme
end)
it('finds icons in icon base directories, in correct order', function()
-- Shimmed icon base directories contain the following icons:
--
-- usr/share/pixmaps/icon[1-5].png
-- usr/share/icons/icon[2-5].png
-- usr/local/share/icons/icon[3-5].png
-- .local/share/icons/icon[4-5].png
-- .icons/icon5.png
assert_found_in_path('icon1', '/usr/share/pixmaps/icon1.png')
assert_found_in_path('icon2', '/usr/share/icons/icon2.png')
assert_found_in_path('icon3', '/usr/local/share/icons/icon3.png')
assert_found_in_path('icon4', '/.local/share/icons/icon4.png')
assert_found_in_path('icon5', '/.icons/icon5.png')
end)
it('finds icons in $HOME/.icons/<theme>/<size>/apps/', function()
-- Theme 'awesome' in shimmed $HOME/.icons:
assert_found_in_path('awesome', '/.icons/awesome/64x64/apps/awesome.png')
assert_found_in_path('awesome2', '/.icons/awesome/scalable/apps/awesome2.png')
end)
-- No argument
it('no icon specified', function()
assert.is_false(utils.lookup_icon_uncached())
assert.is_false(utils.lookup_icon_uncached(nil))
assert.is_false(utils.lookup_icon_uncached(false))
assert.is_false(utils.lookup_icon_uncached(''))
end)
-- Full path and filename with expected extension
it('finds icons even those not in the search paths when full path is specified', function()
-- Shimmed icon base directories contain the following icons:
--
-- usr/share/icon5.png
-- usr/share/icon6.xpm
-- usr/share/icon7.svg
-- usr/share/icons/.filename.png
assert_found_in_path('/usr/share/icon5.png', '/usr/share/icon5.png')
assert_found_in_path('/usr/share/icon6.xpm', '/usr/share/icon6.xpm')
assert_found_in_path('/usr/share/icon7.svg', '/usr/share/icon7.svg')
assert_found_in_path('/usr/share/.filename.png', '/usr/share/.filename.png')
assert.is_nil(utils.lookup_icon_uncached('/blah/icon6.png')) -- supported file does not exist in location
assert.is_nil(utils.lookup_icon_uncached('/.png')) -- path & supported ext - but also not found
end)
-- Filename with supported extension
it('finds icons with specified supported extension in the search path', function()
-- Shimmed icon base directories contain the following icons:
--
-- .icons/icon5.png
-- .icons/icon6.xpm
-- .icons/icon7.svg
-- usr/share/icons/.filename.png
assert_found_in_path('icon5.png', '/.icons/icon5.png')
assert_found_in_path('icon6.xpm', '/.icons/icon6.xpm')
assert_found_in_path('icon7.svg', '/.icons/icon7.svg')
assert_found_in_path('.filename.png', '/usr/share/icons/.filename.png')
-- Will fail as file does not exist (but extension is supported)
assert.is_false(utils.lookup_icon_uncached('icon8.png'))
end)
-- Find icon with no (or invalid) extension matching
it('finds icons without specified path or extension', function()
-- Shimmed icon base directories contain the following icons:
--
-- .icons/icon6.xpm
-- .icons/icon7.svg
-- usr/share/icons/.filename.png
assert_found_in_path('icon6', '/.icons/icon6.xpm')
assert_found_in_path('icon7', '/.icons/icon7.svg')
assert_found_in_path('.filename', '/usr/share/icons/.filename.png')
assert.is_false(utils.lookup_icon_uncached('/png')) -- path & no ext
assert.is_false(utils.lookup_icon_uncached('.png')) -- file does not exist
assert.is_false(utils.lookup_icon_uncached('png')) -- file does not exist
assert.is_false(utils.lookup_icon_uncached('icon9')) -- file does not exist
end)
end)
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80