3 # SPDX-FileCopyrightText: 2019 Harald Sitter <sitter@kde.org>
5 # SPDX-License-Identifier: GPL-2.0-or-later
7 require_relative
'test_helper'
11 class ServiceMenuInstallationTest
< Test
::Unit::TestCase
13 @tmpdir = Dir
.mktmpdir("dolphintest-#{self.class.to_s.tr(':', '_')}")
17 ENV['XDG_DATA_HOME'] = File
.join(@tmpdir, 'data')
22 FileUtils
.rm_rf(@tmpdir)
24 ENV.delete('XDG_DATA_HOME')
28 service_dir
= File
.join(Dir
.pwd
, 'share/servicemenu-download')
29 FileUtils
.mkpath(service_dir
)
30 archive
= "#{service_dir}/foo.tar"
32 archive_dir
= 'foo' # relative so tar cf is relative without fuzz
33 FileUtils
.mkpath(archive_dir
)
34 File
.write("#{archive_dir}/install-it.sh", <<-INSTALL_IT_SH)
36 touch #{@tmpdir}/install-it.sh-run
38 File
.write("#{archive_dir}/install.sh", <<-INSTALL_SH)
40 touch #{@tmpdir}/install.sh-run
42 assert(system('tar', '-cf', archive
, archive_dir
))
44 assert(system('servicemenuinstaller', 'install', archive
))
46 tar_dir
= "#{service_dir}/foo.tar-dir"
47 tar_extract_dir
= "#{service_dir}/foo.tar-dir/foo"
48 assert_path_exist(tar_dir
)
49 assert_path_exist(tar_extract_dir
)
50 assert_path_exist("#{tar_extract_dir}/install-it.sh")
51 assert_path_exist("#{tar_extract_dir}/install.sh")
54 def test_run_install_with_arg
55 service_dir
= File
.join(Dir
.pwd
, 'share/servicemenu-download')
56 FileUtils
.mkpath(service_dir
)
57 archive
= "#{service_dir}/foo.tar"
59 archive_dir
= 'foo' # relative so tar cf is relative without fuzz
60 FileUtils
.mkpath(archive_dir
)
61 File
.write("#{archive_dir}/install.sh", <<-INSTALL_SH)
63 if [ "$@" = "--install" ]; then
64 touch #{@tmpdir}/install.sh-run
69 assert(system('tar', '-cf', archive
, archive_dir
))
71 assert(system('servicemenuinstaller', 'install', archive
))
73 tar_dir
= "#{service_dir}/foo.tar-dir"
74 tar_extract_dir
= "#{service_dir}/foo.tar-dir/foo"
75 assert_path_exist(tar_dir
)
76 assert_path_exist(tar_extract_dir
)
77 assert_path_not_exist("#{tar_extract_dir}/install-it.sh")
78 assert_path_exist("#{tar_extract_dir}/install.sh")
82 service_dir
= File
.join(Dir
.pwd
, 'share/servicemenu-download')
83 FileUtils
.mkpath(service_dir
)
84 archive
= "#{service_dir}/foo.tar"
86 archive_dir
= 'foo' # relative so tar cf is relative without fuzz
87 FileUtils
.mkpath(archive_dir
)
88 assert(system('tar', '-cf', archive
, archive_dir
))
90 refute(system('servicemenuinstaller', 'install', archive
))
94 service_dir
= File
.join(Dir
.pwd
, 'share/servicemenu-download')
95 downloaded_file
= "#{service_dir}/foo.desktop"
96 FileUtils
.mkpath(service_dir
)
97 FileUtils
.touch(downloaded_file
)
99 installed_file
= "#{ENV['XDG_DATA_HOME']}/kservices5/ServiceMenus/foo.desktop"
101 assert(system('servicemenuinstaller', 'install', downloaded_file
))
103 assert_path_exist(downloaded_file
)
104 assert_path_exist(installed_file
)