diff options
| author | Duong Do Minh Chau <[email protected]> | 2020-11-12 16:38:44 +0700 |
|---|---|---|
| committer | Elvis Angelaccio <[email protected]> | 2020-12-28 20:18:31 +0000 |
| commit | a512176b4bdbf0f0471a9b9089f4a936c14e2732 (patch) | |
| tree | 51f1ecf98d29b9994af950d9ca2fb0085f29e337 /src/settings/contextmenu/test | |
| parent | b339ac1b5f22efb57619c738eb39268c3e00948d (diff) | |
Add options to hide some context menu entries
This commit add options to hide the following context menu entries:
- Add to Places
- Copy Location
- Duplicate Here
- Open in New Tab and Open in New Tabs
- Open in New Window
- Sort By
- View Mode
The Services settings page is renamed to Context Menu
ShowCopyMoveMenu option is moved from GeneralSettings to ContextMenuSettings
BUG: 314594
Diffstat (limited to 'src/settings/contextmenu/test')
4 files changed, 247 insertions, 0 deletions
diff --git a/src/settings/contextmenu/test/service_menu_deinstallation_test.rb b/src/settings/contextmenu/test/service_menu_deinstallation_test.rb new file mode 100644 index 000000000..bf44b7b7f --- /dev/null +++ b/src/settings/contextmenu/test/service_menu_deinstallation_test.rb @@ -0,0 +1,112 @@ +#!/usr/bin/env ruby + +# SPDX-FileCopyrightText: 2019 Harald Sitter <[email protected]> +# +# SPDX-License-Identifier: GPL-2.0-or-later + +require_relative 'test_helper' + +require 'tmpdir' + +class ServiceMenuDeinstallationTest < Test::Unit::TestCase + def setup + @tmpdir = Dir.mktmpdir("dolphintest-#{self.class.to_s.tr(':', '_')}") + @pwdir = Dir.pwd + Dir.chdir(@tmpdir) + + ENV['XDG_DATA_HOME'] = File.join(@tmpdir, 'data') + end + + def teardown + Dir.chdir(@pwdir) + FileUtils.rm_rf(@tmpdir) + + ENV.delete('XDG_DATA_HOME') + end + + def test_run_deinstall + service_dir = File.join(Dir.pwd, 'share/servicemenu-download') + archive_base = "#{service_dir}/foo.zip" + archive_dir = "#{archive_base}-dir/foo-1.1/" + FileUtils.mkpath(archive_dir) + File.write("#{archive_dir}/deinstall.sh", <<-DEINSTALL_SH) +#!/bin/sh +set -e +cat deinstall.sh +touch #{@tmpdir}/deinstall.sh-run + DEINSTALL_SH + File.write("#{archive_dir}/install.sh", <<-INSTALL_SH) +#!/bin/sh +set -e +cat install.sh +touch #{@tmpdir}/install.sh-run + INSTALL_SH + + assert(system('servicemenuinstaller', 'uninstall', archive_base)) + + # deinstaller should be run + # installer should not be run + # archive_dir should have been correctly removed + + assert_path_exist('deinstall.sh-run') + assert_path_not_exist('install.sh-run') + assert_path_not_exist(archive_dir) + end + + def test_run_install_with_arg + service_dir = File.join(Dir.pwd, 'share/servicemenu-download') + archive_base = "#{service_dir}/foo.zip" + archive_dir = "#{archive_base}-dir/foo-1.1/" + FileUtils.mkpath(archive_dir) + + File.write("#{archive_dir}/install.sh", <<-INSTALL_SH) +#!/bin/sh +if [ "$@" = "--uninstall" ]; then + touch #{@tmpdir}/install.sh-run + exit 0 +fi +exit 1 + INSTALL_SH + + assert(system('servicemenuinstaller', 'uninstall', archive_base)) + + assert_path_not_exist('deinstall.sh-run') + assert_path_exist('install.sh-run') + assert_path_not_exist(archive_dir) + end + + # no scripts in sight + def test_run_fail + service_dir = File.join(Dir.pwd, 'share/servicemenu-download') + archive_base = "#{service_dir}/foo.zip" + archive_dir = "#{archive_base}-dir/foo-1.1/" + FileUtils.mkpath(archive_dir) + + refute(system('servicemenuinstaller', 'uninstall', archive_base)) + + # I am unsure if deinstallation really should keep the files around. But + # that's how it behaved originally so it's supposedly intentional + # - sitter, 2019 + assert_path_exist(archive_dir) + end + + # For desktop files things are a bit special. There is one in .local/share/servicemenu-download + # and another in the actual ServiceMenus dir. The latter gets removed by the + # script, the former by KNS. + def test_run_desktop + service_dir = File.join(Dir.pwd, 'share/servicemenu-download') + downloaded_file = "#{service_dir}/foo.desktop" + FileUtils.mkpath(service_dir) + FileUtils.touch(downloaded_file) + + menu_dir = "#{ENV['XDG_DATA_HOME']}/kservices5/ServiceMenus/" + installed_file = "#{menu_dir}/foo.desktop" + FileUtils.mkpath(menu_dir) + FileUtils.touch(installed_file) + + assert(system('servicemenuinstaller', 'uninstall', downloaded_file)) + + assert_path_exist(downloaded_file) + assert_path_not_exist(installed_file) + end +end diff --git a/src/settings/contextmenu/test/service_menu_installation_test.rb b/src/settings/contextmenu/test/service_menu_installation_test.rb new file mode 100644 index 000000000..7c05a40e3 --- /dev/null +++ b/src/settings/contextmenu/test/service_menu_installation_test.rb @@ -0,0 +1,106 @@ +#!/usr/bin/env ruby + +# SPDX-FileCopyrightText: 2019 Harald Sitter <[email protected]> +# +# SPDX-License-Identifier: GPL-2.0-or-later + +require_relative 'test_helper' + +require 'tmpdir' + +class ServiceMenuInstallationTest < Test::Unit::TestCase + def setup + @tmpdir = Dir.mktmpdir("dolphintest-#{self.class.to_s.tr(':', '_')}") + @pwdir = Dir.pwd + Dir.chdir(@tmpdir) + + ENV['XDG_DATA_HOME'] = File.join(@tmpdir, 'data') + end + + def teardown + Dir.chdir(@pwdir) + FileUtils.rm_rf(@tmpdir) + + ENV.delete('XDG_DATA_HOME') + end + + def test_run_install + service_dir = File.join(Dir.pwd, 'share/servicemenu-download') + FileUtils.mkpath(service_dir) + archive = "#{service_dir}/foo.tar" + + archive_dir = 'foo' # relative so tar cf is relative without fuzz + FileUtils.mkpath(archive_dir) + File.write("#{archive_dir}/install-it.sh", <<-INSTALL_IT_SH) +#!/bin/sh +touch #{@tmpdir}/install-it.sh-run +INSTALL_IT_SH + File.write("#{archive_dir}/install.sh", <<-INSTALL_SH) +#!/bin/sh +touch #{@tmpdir}/install.sh-run + INSTALL_SH + assert(system('tar', '-cf', archive, archive_dir)) + + assert(system('servicemenuinstaller', 'install', archive)) + + tar_dir = "#{service_dir}/foo.tar-dir" + tar_extract_dir = "#{service_dir}/foo.tar-dir/foo" + assert_path_exist(tar_dir) + assert_path_exist(tar_extract_dir) + assert_path_exist("#{tar_extract_dir}/install-it.sh") + assert_path_exist("#{tar_extract_dir}/install.sh") + end + + def test_run_install_with_arg + service_dir = File.join(Dir.pwd, 'share/servicemenu-download') + FileUtils.mkpath(service_dir) + archive = "#{service_dir}/foo.tar" + + archive_dir = 'foo' # relative so tar cf is relative without fuzz + FileUtils.mkpath(archive_dir) + File.write("#{archive_dir}/install.sh", <<-INSTALL_SH) +#!/bin/sh +if [ "$@" = "--install" ]; then + touch #{@tmpdir}/install.sh-run + exit 0 +fi +exit 1 + INSTALL_SH + assert(system('tar', '-cf', archive, archive_dir)) + + assert(system('servicemenuinstaller', 'install', archive)) + + tar_dir = "#{service_dir}/foo.tar-dir" + tar_extract_dir = "#{service_dir}/foo.tar-dir/foo" + assert_path_exist(tar_dir) + assert_path_exist(tar_extract_dir) + assert_path_not_exist("#{tar_extract_dir}/install-it.sh") + assert_path_exist("#{tar_extract_dir}/install.sh") + end + + def test_run_fail + service_dir = File.join(Dir.pwd, 'share/servicemenu-download') + FileUtils.mkpath(service_dir) + archive = "#{service_dir}/foo.tar" + + archive_dir = 'foo' # relative so tar cf is relative without fuzz + FileUtils.mkpath(archive_dir) + assert(system('tar', '-cf', archive, archive_dir)) + + refute(system('servicemenuinstaller', 'install', archive)) + end + + def test_run_desktop + service_dir = File.join(Dir.pwd, 'share/servicemenu-download') + downloaded_file = "#{service_dir}/foo.desktop" + FileUtils.mkpath(service_dir) + FileUtils.touch(downloaded_file) + + installed_file = "#{ENV['XDG_DATA_HOME']}/kservices5/ServiceMenus/foo.desktop" + + assert(system('servicemenuinstaller', 'install', downloaded_file)) + + assert_path_exist(downloaded_file) + assert_path_exist(installed_file) + end +end diff --git a/src/settings/contextmenu/test/test_helper.rb b/src/settings/contextmenu/test/test_helper.rb new file mode 100644 index 000000000..b4e4dded2 --- /dev/null +++ b/src/settings/contextmenu/test/test_helper.rb @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: 2019 Harald Sitter <[email protected]> +# +# SPDX-License-Identifier: GPL-2.0-or-later + +$LOAD_PATH.unshift(File.absolute_path('../', __dir__)) # ../ + +def __test_method_name__ + return @method_name if defined?(:@method_name) + index = 0 + caller = '' + until caller.start_with?('test_') + caller = caller_locations(index, 1)[0].label + index += 1 + end + caller +end + +require 'test/unit' diff --git a/src/settings/contextmenu/test/test_run.rb b/src/settings/contextmenu/test/test_run.rb new file mode 100755 index 000000000..ab298a0b0 --- /dev/null +++ b/src/settings/contextmenu/test/test_run.rb @@ -0,0 +1,11 @@ +#!/usr/bin/env ruby + +# SPDX-FileCopyrightText: 2019 Harald Sitter <[email protected]> +# +# SPDX-License-Identifier: GPL-2.0-or-later +# This is a fancy wrapper around test_helper to prevent the collector from +# loading the helper twice as it would occur if we ran the helper directly. + +require_relative 'test_helper' + +Test::Unit::AutoRunner.run(true, File.absolute_path(__dir__)) |
