]> cloud.milkyroute.net Git - dolphin.git/commit
redo service menu ruby helpers from ground up more or less
authorHarald Sitter <sitter@kde.org>
Tue, 26 Feb 2019 12:48:08 +0000 (13:48 +0100)
committerHarald Sitter <sitter@kde.org>
Mon, 18 Mar 2019 13:02:16 +0000 (14:02 +0100)
commit644d6f85223d486a412af9aaf4b40ef3d5d6705b
tree3c9e99afe3f7d65007e7cc20185d932834f28437
parent363fd1afa9dc68ffdee4d55a8c8bde56a13f0969
redo service menu ruby helpers from ground up more or less

Summary:
- apply ruby community style guidelines
- full rewrite fixing, among other things:
  - inefficient/unreadable String#end_with reimplementation
  - inefficient use of Kernel.system (forked shell to fork a shell)
  - inefficient/unreadable Dir.glob reimplementation
  - inefficient File initialization for single chmod
  - invocation conditions are now actually readable
  - invocation conditions now also force +x on argless scripts, not just
    scripts that need arguments
  - repetitive conditions are now expressed as loops on argument arrays
  - mime detection now uses xdg-mime instead of file (xdg-mime internally
    may fall back to mime but will prefer higher level tools such as
    kmimetypefinder5; giving better results overall)
  - return values of "backtick forks" are now checked and will produce
    suitable errors on stderr
  - fail now takes a log_msg argument which is printed to stderr. this
    is in addition to the error raised as notification for the user, as
    that is unfortunately not so useful for diagnostics
  - overall error handling and logging of problem causes is much improved
- add license headers. the original code was actually fairly exhaustive, so
  this really should have had a header to begin with. the code was
  originally introduced in svn r1045663 on Nov 6 14:56:35 2009 UTC
- add blackbox tests. in the interest of keeping the scripts actually
  simple scripts (as opposed to a bunch of classes used by even simpler
  scirpts) they are now also covered by test rigging which runs them as
  scripts (again, as opposed to individual unit testing of distinct units)
  - the tests optionally can use simplecov to gather coverage metrics
  - also wired up to ctest so it actually gets run

structurally there is actually a fair amount of overlap between the two
scripts, but again, in the interest of keeping things simple I think it's
better to live with that instead of refactoring a shared library out of
it and then use heavy-duty meta-programming

Reviewers: #dolphin, elvisangelaccio

Reviewed By: #dolphin, elvisangelaccio

Subscribers: elvisangelaccio, kfm-devel

Tags: #dolphin

Differential Revision: https://phabricator.kde.org/D19334
src/settings/services/servicemenudeinstallation
src/settings/services/servicemenuinstallation
src/settings/services/test/service_menu_deinstallation_test.rb [new file with mode: 0644]
src/settings/services/test/service_menu_installation_test.rb [new file with mode: 0644]
src/settings/services/test/test_helper.rb [new file with mode: 0644]
src/settings/services/test/test_run.rb [new file with mode: 0755]
src/tests/CMakeLists.txt