# Test file for rpmspec.xml

# Comments start with a # in column="0":

# Some comment

# When they don't start in column="0", that they are recognized as comments, but with an alert:
 # This is a bad comment.
# RPM spec says clear that comments must start at the begin of the line. However, in practice
# the RPM software is more permissive, depending on the context. But for our syntax highlighting,
# we give, while recognizing the as comment, at least a little alert. Comments should not contain
# the character % (which is marked as warning), but 2 of them are okay: %%. TODO is higlighted.

# A spec file starts with "Normal" context. Here, you can specify values for some tags:
Name:                kradioripper-unstable # Note that here in no comment possible!
Name:                name only _one_ word allowed
Name:                %macro no further syntax check after macro!
# Some tags support only _one_ word as value
Version:             0.4test5 up-from-the-space-this-is-an-error
# Some tag can have parameters: Any char in paranthesis:
Summary:             Recorder for internet radios (based on Streamripper)  
Summary(de.UTF-8):   Aufnahmeprogramm für Internetradios (basiert auf Streamripper)
# requiere free text:
License:             License 1 2 3
# requiere a well defines value:
Requires( / (  = ):  Some, value()
# new type "switch" accepts: yes, no, 0, 1
AutoReq: yes
AutoReq: yes invalid
AutoReq: %macro no further syntax check after macro!
AutoReq: no
AutoReq: 0
AutoReq: 1
# requiere a number:
Epoch:               123123
Epoch:               123123 invalid
Epoch:               %macro no further syntax check afer macro!
# If tags are used that are not known, they are not highlighted:
Invalidtag:          Some value
Invalid content in this section (only tags are allowed)
# You can use conditions in specs (highlighted with region markers):
%if 0%{?mandriva_version}  
# numbers and strings are distingished: string:
%if lsdksfj
# number:
%if 23472398
# string:
%if lksdjfsl72939
# invalid:
%if 92437lsdkfjdsl
# valid:
%if "lsdfj %ksdf(sdfs) 3489"
Release:             %mkrel 1.2
Release:             0  
# requiere a well defined value:
%ifos fixed_value
# You must use these special macros (%%if etc.) always at the start of the line - if not,
# that's bad but not an arror. You must also always use the specified form. Everything else is an
# error:
something %if
%if(some options)
# However, this are different macros and therefore correct:
%ifx(some options)

# the \ is escaped in the line. At the end of the line it escapes the line break:
echo This is \" a text \\ and here\
it continues.

%define name value
%define invalid_näme value
%define macroname multi\
line content with references like %0 %* %# %{-f} %{-f*} %1 %2 and so on
%global name value
%global invalid_näme value
%undefine name
%undefine name too-many-parameters

# shell command
%define buildoutputdir %{expand:build/jdk%{featurever}.build%{?1}}
%define buildoutputdir() %{expand:build/jdk%{featurever}.build%{?1}}
%define save_alternatives() %{expand:
  # bash comment
  function foo {
    LANG=en_US.UTF-8 alternatives --display "$MASTER"
  rm -f %{_localstatedir}/lib/rpm-state/"$MASTER"_$FAMILY > /dev/null
  if foo > /dev/null | bar -q ; then
    zeta 2  > %{_localstatedir}/lib/rpm-state/"$MASTER"_"$FAMILY"

# lua command
%define save_alternatives() %{lua:
  -- a lua code
  local posix = require "posix"
  if (os.getenv("debug") == "true") then
    debug = true;
    debug = false;

# This special comment is treated and highlighted like a tag:
# norootforbuild  
# It can't have parameters, so every following non-whitespace character is not good:
# norootforbuild  DONT WRITE ANYTHING HERE!
# wrong spacing is also recognized:
#  norootforbuild
# and also an indeet is not fine for norootforbuild:
 # norootforbuild
# This following "Conflicts" tag will be removed by set-version.sh,  
# if it is a "kradioripper" release (and not a "kradioripper-unstable" release)...  
Conflicts:           kradioripper  
# Here, a new section starts. It contains a value for the RPM field "description" and is therefor
# colored like values:
A KDE program for ripping internet radios. Based on StreamRipper.  
# A section start can have parameters:
%description -l de.UTF-8  
Ein KDE-Aufnahmeprogramm für Internetradios. Basiert auf StreamRipper.   
# These sections starts are errors:
 %description not at the first line
%{description} wrong form
%description(no options allowed, only parameters!)
# This starts a section that defines the commands to prepare the build.
# q means quit. n sets the directory:  
%setup -q -n kradioripper  
echo Test
# Macros can have different forms: Valid:
%{something but no single %}EndOfMacro
# Invalid:
# You can use macros inside of macro calls: Fine:
%{something %but no %{sin%(fine)gle} }EndOfMacro
# Bad:
%{No closing paranthesis (No syntax highlightig for this error available)
cmake ./ -DCMAKE_INSTALL_PREFIX=%{_prefix}  
%__make %{?jobs:-j %jobs}  
%{!?_licensedir:%global license %%doc}

%if 0%{?suse_version}  
%suse_update_desktop_file kradioripper  
%if 0%{?fedora_version} || 0%{?rhel_version} || !0%{?centos_version}
make install DESTDIR=%{buildroot}  
desktop-file-install --delete-original --vendor fedora --dir=%{buildroot}/%{_datadir}/applications/kde4 %{buildroot}/%{_datadir}/applications/kde4/kradioripper.desktop  
%if 0%{?mandriva_version}  
rm -rf "%{buildroot}"  

%if 0%{?fedora_version} || 0%{?rhel_version} || 0%{?centos_version}  
%if 0%{?mandriva_version}  
# TODO The %%doc macro is actually broken for mandriva 2009 in build service...
%dir %{_datadir}/apps/kradioripper  
%dir %{_datadir}/kde4/apps/kradioripper  

# lua section
%pretrans headless -p <lua>
-- a lua code
local posix = require "posix"
if (os.getenv("debug") == "true") then
  debug = true;
  debug = false;
* Sun May 04 2008 email@email.com
- some text
- some text
  in two lines
- some text
  in two lines
  + with subtext
  - and more subtext
  in two lines
* Tue Apr 24 2007 Name
- text
  * When the star isn't at column 0, than it doesn't indicate
  a new date
* Wen Sep 08 2003 Wrong weekday
* Mon Mai 08 2003 Wrong month
* Mon Sep 0 2003 bad day
* Mon Sep 8 2003 good day
* Mon Sep 08 2003 good day
* Mon Sep 32 2003 bad day
* Mon Sep 08 03 bad year
* Mon Sep 08 2003 Name
# When using macros, the error check is disabled:
* %myDataMacro Title of the entry
- Text
    - can
        - be
        - indeeded
        - without
    - problems