csomh / source-git / rpm

Forked from source-git/rpm 4 years ago
Clone
2ff057
#    rpmmacro.at: test rpm macros
2ff057
#
2ff057
AT_BANNER([RPM macros])
2ff057
2ff057
# ------------------------------
2ff057
AT_SETUP([simple rpm --eval])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
runroot rpm --define "this that" --eval '%{this}'
2ff057
],
2ff057
[0],
2ff057
[that
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
# ------------------------------
2ff057
AT_SETUP([invalid rpm --eval])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
runroot rpm --eval '%define _ that'
2ff057
],
2ff057
[1],
2ff057
[],
2ff057
[error: Macro %_ has illegal name (%define)
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
# ------------------------------
2ff057
AT_SETUP([invalid rpm --define])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
runroot rpm --define "_ that"
2ff057
],
2ff057
[1],
2ff057
[],
2ff057
[error: Macro %_ has illegal name (%define)
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([rpm --undefine])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
runroot rpm --define "this that" --eval '1. %{this}' --undefine 'this' --eval '2. %{this'}
2ff057
runroot rpm --eval '1. %{this}' --define "this that" --eval '2. %{this}' --undefine 'this' --eval '3. %{this'}
2ff057
],
2ff057
[0],
2ff057
[1. that
2ff057
2. %{this}
2ff057
1. %{this}
2ff057
2. that
2ff057
3. %{this}
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([simple true conditional rpm --eval])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
runroot rpm --define "this that" --eval '%{?this}'
2ff057
],
2ff057
[0],
2ff057
[that
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([simple false conditional rpm --eval])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
runroot rpm --define "this that" --eval '%{?that}'
2ff057
],
2ff057
[0],
2ff057
[
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([nested macro in name])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
runroot rpm --define "this that" --define "that_that foo" --eval '%{expand:%{%{this}_that}}'
2ff057
],
2ff057
[0],
2ff057
[foo
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([parametrized macro 1])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
cat << EOF > ${abs_builddir}/testing/mtest
2ff057
%bar() bar
2ff057
%foo()\\
2ff057
%bar\\
2ff057
foo 1\\
2ff057
%{bar}\\
2ff057
foo 2\\
2ff057
%bar x\\
2ff057
foo 3\\
2ff057
%{bar x}\\
2ff057
foo 4\\
2ff057
%bar \\
2ff057
foo 5
2ff057
EOF
2ff057
2ff057
runroot rpm --eval '%{load:mtest}%{foo}'
2ff057
],
2ff057
[0],
2ff057
[
2ff057
bar
2ff057
foo 1
2ff057
bar
2ff057
foo 2
2ff057
bar
2ff057
foo 3
2ff057
bar
2ff057
foo 4
2ff057
bar
2ff057
foo 5
2ff057
],
2ff057
[])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([parametrized macro 2])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
runroot rpm \
2ff057
    --define '%bar() "Bar %#: %{?1} %{?2}"' \
2ff057
    --define '%foo() "Foo %#: %{?1} %{?2}" %bar a' \
2ff057
    --eval '%foo 1 2'
2ff057
],
2ff057
[0],
2ff057
["Foo 2: 1 2" "Bar 1: a "
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([parametrized macro 3])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
runroot rpm \
2ff057
    --define '%foo() 1:%1 2:%2' \
2ff057
    --eval '%foo %nil bar'
2ff057
],
2ff057
[0],
2ff057
[1:bar 2:%2
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([parametrized macro 4])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
runroot rpm \
2ff057
    --define '%bar yyy' \
2ff057
    --define '%foo() %1' \
2ff057
    --eval '%foo %bar' \
2ff057
    --eval '%foo %%bar'
2ff057
],
2ff057
[0],
2ff057
[yyy
2ff057
%bar
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([parametrized macro 5])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
runroot rpm \
2ff057
    --define '%foo() %#:%{?1:"%1"}%{?2: "%2"}' \
2ff057
    --define 'bar zzz' \
2ff057
    --eval '%foo 1' \
2ff057
    --eval '%foo   2  ' \
2ff057
    --eval '%foo 1 2' \
2ff057
    --eval '%foo %{nil}' \
2ff057
    --eval '%foo %{nil} xx' \
2ff057
    --eval '%foo %{bar} xx' \
2ff057
    --eval '%foo %{quote:   2 3  5} %{quote:%{nil}}' \
2ff057
    --eval '%foo x%{quote:y}z 123' \
2ff057
    --eval '%foo x%{quote:%{nil}}z' \
2ff057
],
2ff057
[0],
2ff057
[1:"1"
2ff057
1:"2"
2ff057
2:"1" "2"
2ff057
0:
2ff057
1:"xx"
2ff057
2:"zzz" "xx"
2ff057
2:"   2 3  5" ""
2ff057
2:"xyz" "123"
2ff057
1:"xz"
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([uncompress macro])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
runroot rpm \
2ff057
    --define "__gzip /my/bin/gzip" \
2ff057
    --eval "%{uncompress:/data/SOURCES/hello-2.0.tar.gz}"
2ff057
],
2ff057
[0],
2ff057
[/my/bin/gzip -dc /data/SOURCES/hello-2.0.tar.gz
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([basename macro])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
runroot rpm \
2ff057
    --eval "%{basename:/data/SOURCES/hello-2.0.tar.gz}"
2ff057
],
2ff057
[0],
2ff057
[hello-2.0.tar.gz
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([shrink macro])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
runroot rpm \
2ff057
    --eval "%{shrink:  h e  l   lo  }"
2ff057
],
2ff057
[0],
2ff057
[h e l lo
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([suffix macro])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
runroot rpm \
2ff057
    --eval "%{suffix:/data/SOURCES/hello-2.0.tar.gz}"
2ff057
],
2ff057
[0],
2ff057
[gz
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([url2path macro])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
runroot rpm \
2ff057
    --eval "%{url2path:http://hello.org/releases/hello-2.0.tar.gz}"
2ff057
],
2ff057
[0],
2ff057
[/releases/hello-2.0.tar.gz
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([shell expansion])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
runroot rpm \
2ff057
    --eval "%(echo foo)"
2ff057
],
2ff057
[0],
2ff057
[foo
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([simple lua --eval])
2ff057
AT_KEYWORDS([macros lua])
2ff057
AT_CHECK([
2ff057
runroot rpm --eval '%{lua:print(5*5)}'
2ff057
],
2ff057
[0],
2ff057
[25
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([lua rpm extensions])
2ff057
AT_KEYWORDS([macros lua])
2ff057
AT_CHECK([
2ff057
runroot rpm --eval '%{lua: rpm.define("foo bar") print(rpm.expand("%{foo}"))}'
2ff057
],
2ff057
[0],
2ff057
[bar
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([lua posix extensions])
2ff057
AT_KEYWORDS([macros lua])
2ff057
AT_CHECK([
2ff057
runroot rpm \
2ff057
  --eval '%{lua: posix.putenv("LUATEST=ok") print(posix.getenv("LUATEST"))}'
2ff057
],
2ff057
[0],
2ff057
[ok
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([lua script exit behavior])
2ff057
AT_KEYWORDS([macros lua])
2ff057
AT_CHECK([
2ff057
runroot rpm \
2ff057
  --eval '%{lua: os.exit()}))}'
2ff057
],
2ff057
[1],
2ff057
[],
2ff057
[error: lua script failed: [[string "<lua>"]]:1: exit not permitted in this context]
2ff057
)
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([%define + %undefine in nested levels 1])
2ff057
AT_KEYWORDS([macros define undefine])
2ff057
AT_CHECK([
2ff057
# basic %define in nested scoping level
2ff057
runroot rpm \
2ff057
    --define '%foo() %{expand:%define xxx 1} %{echo:%xxx} %{expand:%undefine xxx} %{echo:%xxx}' \
2ff057
    --eval .'%foo'.
2ff057
],
2ff057
[0],
2ff057
[1
2ff057
%xxx
2ff057
.   .
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([%define + %undefine in nested levels 2])
2ff057
AT_KEYWORDS([macros define])
2ff057
AT_CHECK([
2ff057
# %define macro once in a nested scope
2ff057
runroot rpm \
2ff057
    --define '%foo() %{expand:%define xxx 1} %{echo:%xxx}' \
2ff057
    --eval .'%foo'. \
2ff057
    --eval '%xxx'
2ff057
],
2ff057
[0],
2ff057
[1
2ff057
. .
2ff057
%xxx
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([%define + %undefine in nested levels 3])
2ff057
AT_KEYWORDS([macros define])
2ff057
AT_CHECK([
2ff057
AT_XFAIL_IF([test $RPM_XFAIL -ne 0])
2ff057
# %define macro twice in a nested scope
2ff057
runroot rpm \
2ff057
    --define '%foo() %{expand:%define xxx 1} %{echo:%xxx} %{expand: %define xxx 2} %{echo:%xxx}' \
2ff057
    --eval .'%foo'. \
2ff057
    --eval '%xxx'
2ff057
],
2ff057
[0],
2ff057
[1
2ff057
2
2ff057
.    .
2ff057
%xxx
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([%define + %undefine in nested levels 4])
2ff057
AT_KEYWORDS([macros define global])
2ff057
AT_CHECK([
2ff057
AT_XFAIL_IF([test $RPM_XFAIL -ne 0])
2ff057
# %define in a nested level covered by %global
2ff057
runroot rpm \
2ff057
    --define '%foo() %{expand:%define xxx 1} %{echo:%xxx} %{expand: %global xxx 2} %{echo:%xxx}' \
2ff057
    --eval .'%foo'. \
2ff057
    --eval '%xxx' \
2ff057
    --eval .'%undefine xxx'. \
2ff057
    --eval '%xxx'
2ff057
],
2ff057
[0],
2ff057
[1
2ff057
2
2ff057
.    .
2ff057
2
2ff057
..
2ff057
%xxx
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([%define in conditional macro])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
runroot rpm \
2ff057
    --define 'dofoo() true'\
2ff057
    --eval '.%{!?foo: %define foo bar}.'\
2ff057
    --eval '%foo' \
2ff057
    --eval '%dofoo'\
2ff057
    --eval '%foo'
2ff057
],
2ff057
[0],
2ff057
[. .
2ff057
bar
2ff057
true
2ff057
bar
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([%verbose negative test])
2ff057
AT_KEYWORDS([macros verbose])
2ff057
AT_CHECK([
2ff057
runroot rpm \
2ff057
  --eval '%{verbose:%{echo:is verbose}}' \
2ff057
  --eval '%{verbose:is verbose text}'\
2ff057
  --eval '%{!verbose:%{echo:is not verbose}}'\
2ff057
  --eval '%{!verbose:is not verbose text}'
2ff057
],
2ff057
[0],
2ff057
[
2ff057
2ff057
is not verbose
2ff057
2ff057
is not verbose text
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([%verbose positive test])
2ff057
AT_KEYWORDS([macros verbose])
2ff057
AT_CHECK([
2ff057
runroot rpm -v \
2ff057
  --eval '%{!verbose:%{echo:is not verbose}}' \
2ff057
  --eval '%{!verbose:is not verbose text}'\
2ff057
  --eval '%{verbose:%{echo:is verbose}}'\
2ff057
  --eval '%{verbose:is verbose text}'
2ff057
],
2ff057
[0],
2ff057
[
2ff057
2ff057
is verbose
2ff057
2ff057
is verbose text
2ff057
])
2ff057
AT_CLEANUP
2ff057
2ff057
AT_SETUP([macro with a line starting by "{"])
2ff057
AT_KEYWORDS([macros])
2ff057
AT_CHECK([
2ff057
runroot rpm --macros "/data/macros.testfile" \
2ff057
	--eval "%first" --eval "%second"],
2ff057
[0],
2ff057
[macro_1
2ff057
2ff057
macro_2
2ff057
])
2ff057
AT_CLEANUP