pax_global_header00006660000000000000000000000064117512745340014523gustar00rootroot0000000000000052 comment=ecb514cdf713eeab2866153564bbaff3dcccf39c repocop-unittest-freedesktop-0.19/000075500000000000000000000000001175127453400173075ustar00rootroot00000000000000repocop-unittest-freedesktop-0.19/.gear/000075500000000000000000000000001175127453400203035ustar00rootroot00000000000000repocop-unittest-freedesktop-0.19/.gear/rules000064400000000000000000000000071175127453400213550ustar00rootroot00000000000000tar: . repocop-unittest-freedesktop-0.19/desktop-exec-fill-code.posttest000064400000000000000000000014621175127453400253500ustar00rootroot00000000000000#!/bin/sh sqlite3 "$REPOCOP_TEST_DBDIR/freedesktop-desktop.db" <1} qw/ AudioVideo Audio Video Development Education Game Graphics Network Office Science Settings System Utility /; my %L2=map {$_=>1} qw/ Building Debugger IDE GUIDesigner Profiling RevisionControl Translation Calendar ContactManagement Database Dictionary Chart Email Finance FlowChart PDA ProjectManagement Presentation Spreadsheet WordProcessor 2DGraphics VectorGraphics RasterGraphics 3DGraphics Scanning OCR Photography Publishing Viewer TextTools DesktopSettings HardwareSettings Printing PackageManager Dialup InstantMessaging Chat IRCClient FileTransfer HamRadio News P2P RemoteAccess Telephony TelephonyTools VideoConference WebBrowser WebDevelopment Midi Mixer Sequencer Tuner TV AudioVideoEditing Player Recorder DiscBurning ActionGame AdventureGame ArcadeGame BoardGame BlocksGame CardGame KidsGame LogicGame RolePlaying Simulation SportsGame StrategyGame Art Construction Music Languages Science ArtificialIntelligence Astronomy Biology Chemistry ComputerScience DataVisualization Economy Electricity Geography Geology Geoscience History ImageProcessing Literature Math NumericalAnalysis MedicalSoftware Physics Robotics Sports ParallelComputing Amusement Archiving Compression Electronics Emulator Engineering FileTools FileManager TerminalEmulator Filesystem Monitor Security Accessibility Calculator Clock TextEditor Documentation Core Teaching X-Teaching X-ALTLinux-Java X-Typing X-Desktop /; my $dbh = DBI->connect('dbi:SQLite:dbname='.$ENV{'REPOCOP_TEST_DBDIR'}.'/freedesktop-desktop.db',"",""); my $sth = $dbh->prepare("SELECT DESKTOPID, PKGID, DESKTOPDIR, DESKTOPFILE FROM freedesktop_desktop WHERE DESKTOPDIR='/usr/share/applications' AND DESKTOPTYPE='Application' AND IS_HIDDEN=0 AND IS_NODISPLAY=0 AND IS_ONLYSHOWIN=0"); $sth->execute(); my @row; while (@row = $sth->fetchrow_array) { my ($desktopid, $pkgid, $desktopdir, $filename)=@row; my $sth2 = $dbh->prepare('SELECT CATEGORY FROM freedesktop_desktop_categories WHERE DESKTOPID = ?'); $sth2->execute($desktopid); my @categories; while (@row = $sth2->fetchrow_array) { push @categories, @row; } my $STATUS=''; my @message; unless (grep {$L1{$_}} @categories) { $STATUS="fail"; push @message, "Main Categories consist of those categories that every conforming desktop environment MUST support.(http://standards.freedesktop.org/menu-spec/latest/apa.html). None found in $desktopdir/$filename. please, fix." } unless (grep {$L2{$_}} @categories) { $STATUS="warn" unless $STATUS eq "fail"; push @message, "Menu-related Additional Categories (http://standards.freedesktop.org/menu-spec/latest/apa.html) not found in $desktopdir/$filename. Please add it or report a bug against this test if you already have registered one (not including menu unrelated ones as Core or Qt)." } system {"repocop-test-$STATUS"} "repocop-test-$STATUS", '-k', $pkgid, @message if $STATUS; } repocop-unittest-freedesktop-0.19/freedesktop-desktop-file-proposed-patch.pl000064400000000000000000000012151175127453400274700ustar00rootroot00000000000000#!/usr/bin/perl -w push @SPECHOOKS, sub { my ($spec, $parent, $pkgname) = @_; my $section=$spec->get_section('install'); unless ($section) { print STDERR "Oops! %install not found!\n"; return; } my $filename=$ENV{'REPOCOP_TEST_STATEDIR'}."/${pkgname}.in"; my $fn; unless (open $fn, $filename) { warn "can't open $filename: $!"; return; } my @result = <$fn>; close $fn; $section->push_body(join('',@result)); my $mainsec=$spec->get_section('package',''); $mainsec->unshift_body('BuildRequires: desktop-file-utils'."\n") unless $mainsec->match_body(qr'^Build(Pre)?Req.+desktop-file-utils'); }; 1; repocop-unittest-freedesktop-0.19/freedesktop-desktop-file-proposed-patch.posttest000075500000000000000000000642521175127453400307570ustar00rootroot00000000000000#!/usr/bin/perl use DBI; use strict; use warnings; use File::Path qw(make_path remove_tree); my $localmode=not $ENV{'REPOCOP_TEST_STATEDIR'}; unless ($localmode) { remove_tree($ENV{'REPOCOP_TEST_STATEDIR'}); make_path($ENV{'REPOCOP_TEST_STATEDIR'}); } my @proposed_raw=qw! gtorrentviewer - +FileTransfer;+P2P; /usr/share/applications/gtorrentviewer.desktop xfe +inode/directory;-text/plain - /usr/share/applications/xfe.desktop xfe +application/x-rpm;+application/x-deb;-text/plain -Utility;+Settings; /usr/share/applications/xfp.desktop xfe +inage/jpg;+inage/png;-text/plain -Utility;+Graphics;+RasterGraphics;+2DGraphics; /usr/share/applications/xfi.desktop moto4lin - +TelephonyTools; /usr/share/applications/moto4lin.desktop gtkpod - +TelephonyTools;+Utility;-AudioVideo; /usr/share/applications/gtkpod.desktop ksocrat - -Utility; /usr/share/applications/kde/demo-menu-entry-ksocrat.desktop xchm - -Utility;-TextTools;-Graphics;+Office; /usr/share/applications/demo-menu-entry-xchm.desktop kicad - +Engineering; /usr/share/applications/eeschema.desktop kicad - +Engineering; /usr/share/applications/kicad.desktop gpsim - +Engineering;+Electronics; /usr/share/applications/gpsim.desktop ponyprog2000 - -Science; /usr/share/applications/ponyprog2000.desktop varkon - +Engineering;+Electronics; /usr/share/applications/varkon.desktop meld - -Development;+Utility;+FileTools; /usr/share/applications/meld.desktop xfdiff - +FileTools; /usr/share/applications/Xfdiff.desktop revelation - -Utility;+Settings;+X-PersonalSettings; /usr/share/applications/revelation.desktop kde4utils-kcalc - +Calculator; /usr/share/applications/kde4/kcalc.desktop wmsystray - +X-Desktop; /usr/share/applications/wmsystray.desktop notecase - +TextTools; /usr/share/applications/notecase.desktop mytetra - +TextTools; /usr/share/applications/mytetra.desktop xpad - +TextTools; /usr/share/applications/xpad.desktop almanah - +TextTools; /usr/share/applications/almanah.desktop xfce4-notes-plugin - +TextTools; /usr/share/applications/xfce4-notes.desktop tomboy - +TextTools; /usr/share/applications/tomboy.desktop cairo-compmgr - -System;+X-Desktop; /usr/share/applications/cairo-compmgr.desktop cairo-dock - -System;+X-Desktop; /usr/share/applications/cairo-dock-cairo.desktop cairo-dock - -System;+X-Desktop; /usr/share/applications/cairo-dock.desktop xtrlock - -System;+Utility;+X-Desktop; /usr/share/applications/xtrlock.desktop cog - -System;+Settings;+DesktopSettings; /usr/share/applications/cog.desktop qtemu - -Utility;+System;+Emulator; /usr/share/applications/qtemu.desktop kde4pim-ktimetracker - +Clock; /usr/share/applications/kde4/ktimetracker.desktop gnome-phone-manager - -System;-Telephony;+TelephonyTools;+Utility; /usr/share/applications/gnome-phone-manager.desktop gnome-applets-extra-hamster - +Clock; /usr/share/applications/hamster-time-tracker.desktop audex - +Audio;+AudioVideoEditing; /usr/share/applications/kde4/audex.desktop kde4webdev-kfilereplace - +FileTools; /usr/share/applications/kde4/kfilereplace.desktop hot-babe - +Monitor; /usr/share/applications/hot-babe.desktop gtkperf - -System;+Development;+Profiling; /usr/share/applications/altlinux-gtkperf.desktop glsof - +Monitor; /usr/share/applications/glsof.desktop krb5-ticket-watcher - +Security; /usr/share/applications/krb5-ticket-watcher.desktop tuxpaint-config - -System;-SystemSetup;+Game;+KidsGame; /usr/share/applications/tuxpaint-config.desktop kdesvn-kde3 - +RevisionControl; /usr/share/applications/kde/kdesvn.desktop gitg - +RevisionControl; /usr/share/applications/gitg.desktop qt4-assistant - +Documentation; /usr/share/applications/qt4-assistant.desktop qt3-assistant - +Documentation; /usr/share/applications/qt3-assistant.desktop devhelp - +Documentation; /usr/share/applications/devhelp.desktop ananas - +GUIDesigner; /usr/share/applications/ananas-designer.desktop dreampie - +IDE; /usr/share/applications/dreampie.desktop drpython - +IDE; /usr/share/applications/drpython.desktop gdb - +ConsoleOnly;+Debugger; /usr/share/applications/gdb.desktop wxlua - +IDE; /usr/share/applications/wxlua.desktop kuzya - +IDE;+ComputerScience; /usr/share/applications/kuzya.desktop qmpdclient - -Network;-Music;+AudioVideo;+Audio;+Player; /usr/share/applications/qmpdclient.desktop kdvdcreator - -Multimedia;+DiscBurning; /usr/share/applications/kde4/kdvdcreator.desktop qdvdauthor - +DiscBurning; /usr/share/applications/qdvdauthor.desktop dvdisaster - -System;-Utility;-Archiving;+AudioVideo;+DiscBurning; /usr/share/applications/dvdisaster.desktop sound-juicer - +DiscBurning; /usr/share/applications/sound-juicer.desktop nted - +Music; /usr/share/applications/nted.desktop ario - +Player; /usr/share/applications/ario.desktop arista - +AudioVideoEditing; /usr/share/applications/arista.desktop coriander - +Video;+Recorder; /usr/share/applications/coriander.desktop exfalso - +AudioVideoEditing; /usr/share/applications/exfalso.desktop fmit - +Music; /usr/share/applications/fmit.desktop gnomeradio - +Audio;+Tuner; /usr/share/applications/gnomeradio.desktop cheese - +Video;+Recorder; /usr/share/applications/cheese.desktop foobnix - +Audio;+Player; /usr/share/applications/foobnix.desktop gpodder - +Tuner; /usr/share/applications/gpodder.desktop gsopcast - -Multimedia;+Video;+TV; /usr/share/applications/gsopcast.desktop guvcview - +Recorder;+Video; /usr/share/applications/guvcview.desktop jokosher - +Audio;+AudioVideoEditing; /usr/share/applications/jokosher.desktop kino - +Video;+AudioVideoEditing; /usr/share/applications/Kino.desktop tkffmpeg - +Video;+AudioVideoEditing; /usr/share/applications/tkffmpeg.desktop tuxguitar - +Music; /usr/share/applications/tuxguitar.desktop rakarrack-data - +Music; /usr/share/applications/rakarrack.desktop terminatorx - +Audio;+AudioVideoEditing; /usr/share/applications/terminatorX.desktop wavesurfer - +AudioVideoEditing; /usr/share/applications/wavesurfer.desktop wmxmms - +Player; /usr/share/applications/wmxmms.desktop xmms-cyr-setup - +Player; /usr/share/applications/xmms-cyr-setup.desktop soundconverter - +Audio;+AudioVideoEditing; /usr/share/applications/soundconverter.desktop hydrogen - +Midi; /usr/share/applications/hydrogen.desktop miniAudicle-common - +Music; /usr/share/applications/miniAudicle.desktop patchage - +Midi; /usr/share/applications/patchage.desktop puddletag - +Audio;+AudioVideoEditing; /usr/share/applications/puddletag.desktop kde4network-krfb - -System; /usr/share/applications/kde4/krfb.desktop skype-call-recorder - +VideoConference; /usr/share/applications/skype-call-recorder.desktop linuxdcpp - +FileTransfer;+P2P; /usr/share/applications/linuxdcpp.desktop nicotine-plus - +FileTransfer;+P2P; /usr/share/applications/nicotine.desktop imule - +FileTransfer;+P2P; /usr/share/applications/imule.desktop deluge - +FileTransfer;+P2P; /usr/share/applications/deluge.desktop fatrat - +FileTransfer; /usr/share/applications/fatrat.desktop qgmailnotifier - +Email; /usr/share/applications/qgmailnotifier.desktop checkgmail - +Email; /usr/share/applications/checkgmail.desktop synce-kpm - -Network;+Office;+PDA; /usr/share/applications/synce-kpm.desktop knemo4 - +System;+Monitor; /usr/share/applications/kde4/knemo.desktop webhttrack - +FileTransfer; /usr/share/applications/WebHTTrack.desktop setools-gui - +Security; /usr/share/applications/sediffx.desktop setools-gui - +Security; /usr/share/applications/apol.desktop setools-gui - +Security; /usr/share/applications/seaudit.desktop airsnort - +Security; /usr/share/applications/airsnort.desktop AutoScan - +Security; /usr/share/applications/autoscan-network.desktop linscope - +Security; /usr/share/applications/linscope.desktop choqok - +WebDevelopment; /usr/share/applications/kde4/choqok.desktop logjam - +WebDevelopment; /usr/share/applications/logjam.desktop lekhonee - +WebDevelopment; /usr/share/applications/lekhonee.desktop lekhonee-gnome - +WebDevelopment; /usr/share/applications/lekhonee-gnome.desktop gwibber - +WebDevelopment; /usr/share/applications/gwibber.desktop tsclient - +RemoteAccess; /share/applications/tsclient.desktop remmina - +RemoteAccess; /usr/share/applications/remmina.desktop putty - +RemoteAccess; /usr/share/applications/putty.desktop nxclient - +RemoteAccess; /usr/share/applications/nxclient.desktop nxclient - +RemoteAccess; /usr/share/applications/nxclient-wizard.desktop nxclient - +RemoteAccess; /usr/share/applications/nxclient-help.desktop nxclient - +RemoteAccess; /usr/share/applications/nxclient-admin.desktop eagleeye - +RemoteAccess; /usr/share/applications/eagleeye.desktop hotssh - +RemoteAccess; /usr/share/applications/hotssh.desktop tigervnc - +RemoteAccess; /usr/share/applications/vncviewer.desktop synaptic-usermode - -System;+Settings; /usr/share/applications/synaptic.desktop rpminstall - -Utility;+Settings;+PackageManager; /usr/share/applications/rpminstall.desktop qalculate-gtk - +Calculator; /usr/share/applications/qalculate-gtk.desktop xosview - -Utility; /usr/share/applications/xosview.desktop gorilla - +Security;-Utility; /usr/share/applications/gorilla.desktop fvkbd - +Accessibility; /usr/share/applications/fvkbd-gtk.desktop gucharmap - +Accessibility; /usr/share/applications/gucharmap.desktop qvkeyboard - +Accessibility; /usr/share/applications/qvkeyboard.desktop faces-xface - -Mail;+Email; /usr/share/applications/faces.desktop lxde-lxterminal - -Utility;+System; /usr/share/applications/lxterminal.desktop gksu - -Utility;+System; /usr/share/applications/gksu.desktop sakura - -Utility;+System; /usr/share/applications/sakura.desktop termit - -Utility;+System; /usr/share/applications/termit.desktop tilda - -Utility;+System; /usr/share/applications/tilda.desktop guake - -Utility;+System; /usr/share/applications/guake.desktop cutecom - -Utility;+System; /usr/share/applications/cutecom.desktop lcdtest - -Utility;+Settings;+HardwareSettings;+X-ALTLinux-VideoSettings; /usr/share/applications/lcdtest.desktop kflickr - +Database; /usr/share/applications/kflickr.desktop chmsee - -Utility;+Office;+Viewer; /usr/share/applications/chmsee.desktop libreoffice - -Utility;+Settings;+Printing; /usr/share/applications/printeradmin.desktop gnochm - -Utility;+Office;+Viewer; /usr/share/applications/gnochm.desktop exe - -Editor;+TextEditor; /usr/share/applications/exe.desktop kde4utils-kcharselect - +Accessibility; /usr/share/applications/kde4/KCharSelect.desktop kde4utils-ktimer - +Clock; /usr/share/applications/kde4/ktimer.desktop gpicview -Utility;-Photography; - /usr/share/applications/gpicview.desktop gcompris - -Utility;+Game;+KidsGame; /usr/share/applications/gcompris-edit.desktop cdcollect - -Utility;+AudioVideo;+Database; /usr/share/applications/cdcollect.desktop gresistor - -Utility;-gResistor;+Engineering;+Electronics; /usr/share/applications/gresistor.desktop artha - -Utility;-Languages;-Literature;+Office;+TextTools;+Dictionary; /usr/share/applications/artha.desktop lightlang - -Utility;+TextTools; /usr/share/applications/xsl.desktop qstardict - -Utility;+TextTools;+Office; /usr/share/applications/qstardict.desktop avant-window-navigator - +X-Desktop; /usr/share/applications/avant-window-navigator.desktop axkb - +Accessibility;+X-Desktop; /usr/share/applications/axkb.desktop gxneur - +Accessibility; /usr/share/applications/gxneur.desktop kde4pim-kalarm - +Clock; /usr/share/applications/kde4/kalarm.desktop drwright - +Clock; /usr/share/applications/drwright.desktop gtknetcat - -Utility;+FileTransfer; /usr/share/applications/gtknetcat.desktop kdissert - -Utility;+Office;+Presentation; /usr/share/applications/kde/kdissert.desktop cube3d - -Action;+ActionGame; /usr/share/applications/cube3d.desktop edgar - +RolePlaying; /usr/share/applications/edgar.desktop tuxtype - +KidsGame;+X-Typing; /usr/share/applications/tuxtype.desktop netherearth - +StrategyGame; /usr/share/applications/netherearth.desktop mana - +RolePlaying; /usr/share/applications/mana.desktop ksudoku - +LogicGame; /usr/share/applications/kde/ksudoku.desktop gtkevemon - +RolePlaying; /usr/share/applications/gtkevemon.desktop dangerdeep - +StrategyGame; /usr/share/applications/alt-dangerdeep.desktop pybookreader - +Office;+Viewer;+Literature; /usr/share/applications/pybookreader.desktop pybookreader - +Office;+Viewer;+Literature; /usr/share/applications/ornamentbook.desktop frescobaldi - +AudioVideo; /usr/share/applications/kde4/frescobaldi.desktop gwine - -Accessories;+System;+Emulator;+Wine; /usr/share/applications/gwine.desktop jamin - +AudioVideo;+Sequencer; /usr/share/applications/jamin.desktop lyx - -Office:WordProcessor:KDE:Qt;+Office;+WordProcessor;+KDE;+Qt; /usr/share/applications/lyx.desktop kodos - +Development;+Utility; /usr/share/applications/fedora-kodos.desktop kover - +Graphics;+Publishing; /usr/share/applications/kde4/kover.desktop mures - +Game;+ArcadeGame; /usr/share/applications/mures.desktop ncmpc - +AudioVideo;+Player; /usr/share/applications/ncmpc.desktop wxdialer - -Internet;+Network;+Dialup; /usr/share/applications/wxdialer.desktop qsopcast - -Multimedia;+AudioVideo;+Video;+TV; /usr/share/applications/sopcast.desktop qtrainer - -Other;+Education;+Sports; /usr/share/applications/qtrainer.desktop smile - +AudioVideo;+AudioVideoEditing; /usr/share/applications/smile.desktop sqliteman - +Development;+Database; /usr/share/applications/sqliteman.desktop wxstedit - +Utility; /usr/share/applications/wxstedit.desktop treeline - +Office;+Database; /usr/share/applications/treeline.desktop trustme - +System;+Security; /usr/share/applications/trustme.desktop canorus - +AudioVideo; /usr/share/applications/canorus.desktop hugin - +Photography; /usr/share/applications/hugin.desktop hugin - +Photography; /usr/share/applications/PTBatcherGUI.desktop kde4-kipi-plugins-expoblending - +Photography; /usr/share/applications/kde4/expoblending.desktop kde4-kipi-plugins-core - +Photography; /usr/share/applications/kde4/dngconverter.desktop kde4-digikam-data - +Photography; /usr/share/applications/kde4/showfoto.desktop kde4-kipi-plugins-core - +Scanning; /usr/share/applications/kde4/scangui.desktop qgis - +Engineering; /usr/share/applications/qgis.desktop PythonCAD - +Engineering;-Utility; /usr/share/applications/PythonCAD.desktop aeskulap - +MedicalSoftware;+Viewer; /usr/share/applications/aeskulap.desktop wally - +DesktopSettings;+Settings;-Graphics; /usr/share/applications/wally.desktop multover - -Graphics;+AudioVideo;+Video;+AudioVideoEditing; /usr/share/applications/multover.desktop flpsed - +Publishing; /usr/share/applications/flpsed.desktop cfdg-fe - +VectorGraphics; /usr/share/applications/cfdg-fe.desktop koffice-karbon - +VectorGraphics; /usr/share/applications/kde4/karbon.desktop koffice-krita - +2DGraphics;+RasterGraphics; /usr/share/applications/kde4/krita.desktop gnome-alsamixer - +Audio;+Mixer; /usr/share/applications/gnome-alsamixer.desktop gnome-terminal - +System;-Utility; /usr/share/applications/gnome-terminal.desktop rhythmbox - +Audio;+Player; /usr/share/applications/rhythmbox.desktop gnome-media-gmix - +Audio;+Mixer; /usr/share/applications/gnome-volume-control.desktop epiphany - +WebBrowser; /usr/share/applications/bme.desktop seahorse - +Settings;-Utility; /usr/share/applications/seahorse.desktop nautilus - +FileManager; /usr/share/applications/nautilus-browser.desktop gnome-disk-utility - +Filesystem; /usr/share/applications/palimpsest.desktop gnome-screenshot - -Utility;+Graphics; /usr/share/applications/gnome-screenshot.desktop gconf-editor - -System;+Settings;+DesktopSettings; /usr/share/applications/gconf-editor.desktop !; #stk - -AudioVideo,Sequencer;+AudioVideo;+Sequencer;+Audio; /usr/share/applications/stk.desktop push @proposed_raw, 'stk','-','-AudioVideo,Sequencer;+AudioVideo;+Sequencer;+Audio;','/usr/share/applications/stk.desktop'; my %patchdata; while (@proposed_raw>0) { my $name=shift @proposed_raw; my $fixmime=shift @proposed_raw; my $fixcategory=shift @proposed_raw; my $desktop=shift @proposed_raw; # no vendor prefix $desktop=~s!^/(?:altlinux|fedora)-!/!; die unless $desktop and $name and $fixcategory and $fixmime; $patchdata{$desktop}=[$name,$fixmime,$fixcategory]; } #se Data::Dumper; #print Dumper ([&process_spec('-System;+Settings;+DesktopSettings;')]); #exit; my $dbh = DBI->connect('dbi:SQLite:dbname='.$ENV{'REPOCOP_TEST_DBDIR'}.'/freedesktop-desktop.db',"",""); my $sth = $dbh->prepare("SELECT DESKTOPID, PKGID, DESKTOPDIR, DESKTOPFILE FROM freedesktop_desktop WHERE DESKTOPDIR='/usr/share/applications' AND DESKTOPTYPE='Application' AND IS_HIDDEN=0 AND IS_NODISPLAY=0 AND IS_ONLYSHOWIN=0"); $sth->execute(); my $sth_c = $dbh->prepare('SELECT CATEGORY FROM freedesktop_desktop_categories WHERE DESKTOPID = ?'); my $sth_m = $dbh->prepare('SELECT MIMETYPE FROM freedesktop_desktop_mimetypes WHERE DESKTOPID = ?'); my @row; while (@row = $sth->fetchrow_array) { my ($desktopid, $pkgid, $desktopdir, $filename)=@row; # no vendor prefix my $barename=$filename; $barename=~s!^(?:altlinux|fedora)-!!; my $patchdata=$patchdata{$desktopdir.'/'.$barename}; if ($patchdata) { my $pkgname=$patchdata->[0]; if ($pkgid!~/^$pkgname/) { warn "invalid patch data @{$patchdata}"; next; } $sth_c->execute($desktopid); my @categories; while (@row = $sth_c->fetchrow_array) { push @categories, @row; } $sth_m->execute($desktopid); my @mimetypes; while (@row = $sth_m->fetchrow_array) { push @mimetypes, @row; } my ($mimeadd,$mimedel)=&process_spec($patchdata->[1]); my ($catadd,$catdel)=&process_spec($patchdata->[2]); push @$catdel, 'Application' if grep {$_ eq 'Application'} @categories; push @$catadd, 'GTK' if grep {$_ eq 'GNOME'} @categories; push @$catadd, 'Qt' if grep {$_ eq 'KDE'} @categories; #print STDERR "added del Application for $pkgid\n" if grep {$_ eq 'Application'} @categories; next if &is_applied_adddel($catadd,$catdel,\@categories) and &is_applied_adddel($mimeadd,$mimedel,\@mimetypes); &generate_patch($pkgid, $pkgname, $desktopdir, $filename, $catadd,$catdel,$mimeadd,$mimedel); my $STATUS="warn"; my @message; push @message, "Please, apply the repocop patch for $desktopdir/$filename."; system {"repocop-test-$STATUS"} "repocop-test-$STATUS", '-k', $pkgid, @message unless ($localmode); #print join(' ', "repocop-test-$STATUS", '-k', $pkgid, @message), "\n" if $localmode; } } sub is_applied_adddel { my ($add,$del,$list)=@_; my %key=map {$_=>1} @$list; map {return 0 unless $key{$_}} @$add; map {return 0 if $key{$_}} @$del; return 1; } sub process_spec { my $spec=shift; return [],[] if $spec eq '-'; my (@add, @del); foreach (split ';', $spec) { next unless $_; warn "Strange: $_" unless /^[-+]/; push @add, $_ if s/^\+//; push @del, $_ if s/^-//; } return \@add, \@del; } sub generate_patch { my ($pkgid, $pkgname, $desktopdir, $filename, $catadd,$catdel,$mimeadd,$mimedel)=@_; $desktopdir= '%_desktopdir' if $desktopdir eq '/usr/share/applications'; my $movl=' \\'."\n"; my @patch; push @patch, 'desktop-file-install --dir %buildroot'.$desktopdir.$movl; push @patch, map {"\t--remove-category=$_".$movl} @$catdel; push @patch, map {"\t--add-category=$_".$movl} @$catadd; push @patch, map {"\t--remove-mime-type=$_".$movl} @$mimedel; push @patch, map {"\t--add-mime-type=$_".$movl} @$mimeadd; push @patch, "\t\%buildroot$desktopdir/$filename\n"; if ($localmode) { print "$pkgid:\n", @patch; } else { my $filename=$ENV{'REPOCOP_TEST_STATEDIR'}."/${pkgname}.in"; open my $fn, '>>', $filename || die "can't open $filename: $!"; print $fn @patch; close $fn; } } __END__ desktop-file-install --dir %buildroot%_desktopdir \ --remove-category=System \ --add-category=Settings \ --add-category=DesktopSettings \ %buildroot%_desktopdir/gconf-editor.desktop # filesearch Categories=GTK;Utility;Filesystem; catfish - + /usr/share/applications/catfish.desktop # find files Categories=GNOME;GTK;Utility;Core; gnome-search-tool - + /usr/share/applications/gnome-search-tool.desktop # search Categories=GNOME;GTK;Core;Utility;Filesystem;System; beagle-gui - + /usr/share/applications/gnome-beagle-search.desktop Categories=GTK;Utility; tracker-search-tool - + /usr/share/applications/tracker-search-tool.desktop Categories=Qt;Utility;Filesystem;Database; recoll - + /usr/share/applications/recoll-searchgui.desktop # disc usage Categories=Qt;KDE;Utility; kde4utils-filelight - + /usr/share/applications/kde4/filelight.desktop Categories=Qt;KDE;Utility; filelight - + /usr/share/applications/kde/filelight.desktop Categories=Qt;KDE;System; kde4utils-kdf - + /usr/share/applications/kde4/kwikdisk.desktop Categories=Qt;KDE;System; kde4utils-kdf - + /usr/share/applications/kde4/kdf.desktop # ip calculator Categories=GNOME;GTK;Utility; gip - + /usr/share/applications/gip.desktop Categories=Qt;Utility;Translation; qgoogletranslate - + /usr/share/applications/qgoogletranslate.desktop # accelerometer hardware demo Categories=Utility; hdaps-gl - + /usr/share/applications/hdaps-gl.desktop # joystick programming (Accessibility) Categories=Accessibility;Utility;Game;Qt;TrayIcon; qjoypad - + /usr/share/applications/qjoypad.desktop Categories=System;Utility;Core; idesk - + /usr/share/applications/idesk.desktop # wm; TODO: move (see e17.desktop) awesome - -Graphics /usr/share/applications/awesome.desktop Categories=Gtk;Utility;Office; metromap - + /usr/share/applications/metromap.desktop # Filesystem? Categories=Network;System;Utility pyneighborhood - + /usr/share/applications/pyNeighborhood.desktop Categories=Qt;Network;Utility; qtsmbstatus - + /usr/share/applications/qtsmbstatus.desktop Categories=Qt;Network;Utility; qtsmbstatus-light - + /usr/share/applications/qtsmbstatusl.desktop Categories=AudioVideo; furiusisomount - + /usr/share/applications/furiusisomount.desktop # change display color... Categories=Utility; redshift - + /usr/share/applications/gtk-redshift.desktop # notifier (local and remote) Categories=GTK;GNOME;Utility; specto - + /usr/share/applications/specto.desktop # System Cleaner for KDE Categories=Qt;KDE;Utility; kde4utils-sweeper - + /usr/share/applications/kde4/sweeper.desktop # clipboard mgr Categories=GTK;Utility;TrayIcon; xfce4-clipman-plugin - + /usr/share/applications/xfce4-clipman-plugin.desktop Categories=GTK;GNOME;Utility;Security; clamtk - + /usr/share/applications/clamtk.desktop Categories=Qt;System; qtclamavclient - + /usr/share/applications/qtclamavclient.desktop Categories=Qt;System; qtclamavclient-qt4 - + /usr/share/applications/qtclamavclient-qt4.desktop Categories=System;Utility;GNOME;GTK; gnome-nettool - +Network; /usr/share/applications/gnome-nettool.desktop # sync tool (ContactManagement?) Categories=GNOME;GTK;Utility; conduit - +TextTools; /usr/share/applications/conduit.desktop Categories=GTK;GNOME;Utility;X-PIM; multisync-gui - + /usr/share/applications/multisync-gui.desktop Categories=Utility;GTK; mini-screenshoter - + /usr/share/applications/mini-screenshoter.desktop Categories=GTK;Utility; xfce4-screenshooter - + /usr/share/applications/xfce4-screenshooter.desktop Categories=GTK;GNOME;Utility;Core; gnome-screenshot - + /usr/share/applications/gnome-screenshot.desktop Categories=AudioVideo; # kbd daemon gmerlin-kbd - + /usr/share/applications/gmerlin-kbd.desktop # settings gmerlin-utils - + /usr/share/applications/gmerlin-plugincfg.desktop # check accessibility Categories=Development; accerciser - + /usr/share/applications/accerciser.desktop # test automation Categories=Development; dogtail - + /usr/share/applications/sniff.desktop Categories=Development; gmanedit - + /usr/share/applications/gmanedit.desktop Categories=Development; mono-tools - + /usr/share/applications/gnunit2.desktop Categories=GTK;GNOME;Development; regexxer - + /usr/share/applications/regexxer.desktop Categories=Qt;KDE;Development; kde4pim-akonadi - + /usr/share/applications/kde4/akonadiconsole.desktop # restricted application settings Categories=System; anykiosk - + /usr/share/applications/anykiosk.desktop Categories=Qt;System; apt-indicator - + /usr/share/applications/apt-indicator.desktop Categories=System;Utility;Archiving;X-Red-Hat-Base; bacula-bat - + /usr/share/applications/bat.desktop Categories=System;Utility;Archiving;X-Red-Hat-Base; bacula-tray-monitor - + /usr/share/applications/bacula-tray-monitor.desktop # create bootable live USB Categories=System; unetbootin - + /usr/share/applications/unetbootin.desktop # Monitor? or HardwareSettings? or both? Categories=System; hardinfo - + /usr/share/applications/hardinfo.desktop # tor administration Categories=Network;Qt; vidalia - + /usr/share/applications/vidalia.desktop # like google earth Categories=Geography;Network;Qt; merkaartor - + /usr/share/applications/merkaartor.desktop ### done netwag - +Security; /usr/share/applications/netwag.desktop oneko - +Amusement; /usr/share/applications/oneko.desktop padevchooser - +Mixer; /usr/share/applications/padevchooser.desktop paman - +Mixer; /usr/share/applications/paman.desktop pavumeter - +Mixer; /usr/share/applications/pavumeter-record.desktop pavumeter - +Mixer; /usr/share/applications/pavumeter.desktop pipenightdreams - +LogicGame; /usr/share/applications/pipenightdreams.desktop qcad - +Engineering; /usr/share/applications/qcad.desktop qtm - +WebDevelopment; /usr/share/applications/qtm.desktop gmerlin-camelot - +Video;+Recorder; /usr/share/applications/gmerlin-camelot.desktop gmerlin-alsamixer - +Mixer; /usr/share/applications/gmerlin-alsamixer.desktop gmerlin-player - +Player; /usr/share/applications/gmerlin-player.desktop gmerlin-recorder - +Recorder; /usr/share/applications/gmerlin-recorder.desktop gmerlin-transcoder - +AudioVideoEditing; /usr/share/applications/gmerlin-transcoder.desktop gmerlin-visualizer - +Audio; /usr/share/applications/gmerlin-visualizer.desktop dia - -Graphics;+Office;+Chart; /usr/share/applications/dia.desktop cairo-clock - +Clock; /usr/share/applications/cairo-clock.desktop aiksaurus-gtk - -Utility;+Office;+TextTools;+Dictionary; /usr/share/applications/gaiksaurus.desktop avahi-ui - +RemoteAccess; /usr/share/applications/bssh.desktop avahi-ui - +RemoteAccess; /usr/share/applications/bvnc.desktop avahi-ui - +RemoteAccess; /usr/share/applications/avahi-discover.desktop etherape - +Monitor; /usr/share/applications/etherape.desktop gjots2 - +TextTools; /usr/share/applications/gjots2.desktop gquilt - +RevisionControl; /usr/share/applications/gquilt.desktop gringotts - -Utility;+Settings;+X-PersonalSettings; /usr/share/applications/gringotts.desktop monkey-bubble - +ArcadeGame; /usr/share/applications/monkey-bubble.desktop muine - +Audio;+Player; /usr/share/applications/muine.desktop Thunar - -Filesystem;+FileTools; /usr/share/applications/Thunar-bulk-rename.desktop repocop-unittest-freedesktop-0.19/repocop-unittest-freedesktop.spec000064400000000000000000000071221175127453400260220ustar00rootroot00000000000000Name: repocop-unittest-freedesktop Version: 0.19 Release: alt3 BuildArch: noarch Packager: Igor Yu. Vlasenko Summary: desktop packaging test Group: Development/Other License: GPL or Artistic Url: http://repocop.altlinux.org Requires: repocop > 0.55 Requires: repocop-collector-freedesktop-desktop Provides: repocop-unittest-freedesktop-desktop-exec-fill-code = 0.04 Obsoletes: repocop-unittest-freedesktop-desktop-exec-fill-code < 0.04 Provides: repocop-unittest-freedesktop-categories = 0.06 Obsoletes: repocop-unittest-freedesktop-categories < 0.06 Source: %name-%version.tar BuildRequires: perl-devel perl-DBI %description integration test for repocop test platform. Includes the following tests: * desktop-exec-fill-code verifies packaging of .desktop files with MimeType entry and Exec (%%f|%%F|%%U|%%u) specifier. according to http://www.freedesktop.org/Standards/desktop-entry-spec (see also draft of Sergey N. Yatskevich http://lists.altlinux.org/pipermail/devel/2008-March/071791.html) %prep %setup -q %build %install for i in *.posttest; do testname=`echo $i | sed -e s,.posttest\$,,` install -pD -m 755 $testname.posttest %buildroot%_datadir/repocop/pkgtests/$testname/posttest done for i in *.pl; do install -pD -m 644 $i %buildroot%_datadir/repocop/fixscripts/$i done %files %_datadir/repocop/pkgtests/* %_datadir/repocop/fixscripts/* %changelog * Sat May 05 2012 Igor Vlasenko 0.19-alt3 - maintainance release * Fri Nov 11 2011 Igor Vlasenko 0.19-alt2 - fixscript cleanup * Thu Nov 10 2011 Igor Vlasenko 0.19-alt1 - adapted for new fixscript syntax * Tue May 24 2011 Igor Vlasenko 0.18-alt1 - patchgen improvements * Wed May 18 2011 Igor Vlasenko 0.17-alt1 - patchgen improvements * Mon May 16 2011 Igor Vlasenko 0.16-alt1 - cleanup for lyx patch * Mon May 16 2011 Igor Vlasenko 0.15-alt1 - more generated category patches * Sat May 14 2011 Igor Vlasenko 0.14-alt1 - bugfix release * Sat May 14 2011 Igor Vlasenko 0.13-alt1 - added generated category patches * Mon Apr 25 2011 Igor Vlasenko 0.12-alt1 - added some X- subcategories * Sun Mar 27 2011 Igor Vlasenko 0.11-alt1 - added Science; category * Sat Mar 26 2011 Igor Vlasenko 0.10-alt1 - kde3/4 share support * Wed Sep 30 2009 Igor Vlasenko 0.09-alt1 - posttests migration * Sat May 30 2009 Igor Vlasenko 0.08-alt4 - real bugfix * Fri May 29 2009 Igor Vlasenko 0.08-alt3 - bugfix (thanks to drool@) * Fri May 08 2009 Igor Vlasenko 0.08-alt2 - bugfix release * Thu May 07 2009 Igor Vlasenko 0.08-alt1 - added freedesktop-categories * Mon Mar 30 2009 Igor Vlasenko 0.07-alt1 - fixed desktop-exec-fill-code (thanks to REAL@) * Mon Nov 03 2008 Igor Vlasenko 0.06-alt4 - message cleanup in the rest of tests * Sun Nov 02 2008 Igor Vlasenko 0.06-alt3 - message cleanup * Sat Aug 02 2008 Igor Vlasenko 0.06-alt2 - bugfix (incompete SQL in desktop-misplaced-type-servicetype) * Thu Jul 10 2008 Igor Vlasenko 0.06-alt1 - bugfix for case no packages found * Tue Jul 08 2008 Igor Vlasenko 0.05-alt1 - added + desktop-misplaced-type-application.done + desktop-misplaced-type-service.done + desktop-misplaced-type-servicetype.done * Mon Jul 07 2008 Igor Vlasenko 0.04-alt1 - First build for Sisyphus. repocop-unittest-freedesktop-0.19/run_test.sh000075500000000000000000000004071175127453400215120ustar00rootroot00000000000000#!/bin/sh export REPOCOP_TEST_STATEDIR=in export REPOCOP_TEST_DBDIR=. export PATH=$PATH: mkdir -p ./in touch repocop-test-warn chmod 755 repocop-test-warn perl ./freedesktop-desktop-file-proposed-patch.posttest rm -f repocop-test-warn