summaryrefslogtreecommitdiffstats
path: root/tests/testsuite.at
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2012-12-07 09:56:32 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2012-12-07 10:46:05 +0100
commit06295d3318c91da7e92e84aef9f7bdba1ff30b89 (patch)
treed314fe267ec7b114f3319fcb88be0a67abf135e5 /tests/testsuite.at
parent78b2f1aca29f6f670ae1e18631d1a6c391e5792d (diff)
downloadmsitools-06295d3318c91da7e92e84aef9f7bdba1ff30b89.tar.gz
msitools-06295d3318c91da7e92e84aef9f7bdba1ff30b89.tar.xz
msitools-06295d3318c91da7e92e84aef9f7bdba1ff30b89.zip
msibuild: add testcases
Diffstat (limited to 'tests/testsuite.at')
-rw-r--r--tests/testsuite.at162
1 files changed, 162 insertions, 0 deletions
diff --git a/tests/testsuite.at b/tests/testsuite.at
index fd18a55..e222d62 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -21,6 +21,31 @@ m4_include([package.m4])
AT_INIT
+# AT_MSIDATA - copy data file from source tree
+
+m4_define([AT_MSIDATA], [
+dir=`dirname $1`
+AS_MKDIR_P([$dir])
+AT_CHECK([cp $abs_srcdir/tests/data/$1 $1])])
+
+# AT_DATA_UNQUOTED - define data file while allowing shell variables
+
+m4_define([AT_DATA_UNQUOTED],
+[cat >$1 <<_ATEOF
+$2[]_ATEOF
+])
+
+# AT_CR - literal carriage return
+
+m4_define([AT_CR], [`echo X | tr X '\015'`])
+
+# AT_CHECK_MSIBUILD/AT_CHECK_MSIINFO - add exeext automatically
+m4_define([AT_CHECK_MSIBUILD], [
+AT_CHECK([_msibuild ]$@)])
+
+m4_define([AT_CHECK_MSIINFO], [
+AT_CHECK([_msiinfo ]$@)])
+
# Cannot use AT_TESTED because of $EXEEXT (Autotest bug)
AT_BANNER([libmsi tests])
@@ -45,3 +70,140 @@ AT_SKIP_IF([! test -f $abs_builddir/tests/testsuminfo$EXEEXT])
AT_CHECK([tests/testsuminfo$EXEEXT], [ignore], [stdout], [ignore])
AT_CHECK([grep ^FAIL stdout], [1], [], [])
AT_CLEANUP
+
+AT_BANNER([msibuild])
+
+AT_SETUP([Invalid command line])
+AT_CHECK_MSIBUILD([], [1], [ignore], [ignore])
+AT_CHECK_MSIBUILD([out.msi], [1], [ignore], [ignore])
+AT_CHECK([test -f out.msi], [1])
+AT_CLEANUP
+
+AT_SETUP([Empty MSI])
+AT_CHECK_MSIBUILD([out.msi -s 'Project name'])
+AT_CHECK_MSIINFO([suminfo out.msi], [ignore], [stdout])
+AT_CHECK([grep ^Subject stdout], [0],
+[Subject: Project name
+])
+AT_CHECK([grep ^Template stdout], [0],
+[Template: ;1033
+])
+AT_CHECK([grep ^Version stdout], [0],
+[Version: 200 (c8)
+])
+AT_CLEANUP
+
+AT_SETUP([Valid UUID])
+AT_SKIP_IF([test $have_uuid = no])
+AT_CHECK_MSIBUILD([out.msi -s 'Project name'])
+AT_CHECK_MSIINFO([suminfo out.msi], [ignore], [stdout])
+AT_CHECK([[
+ UUID='\{[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}\}'
+ grep -E "^Revision number: $UUID\$" stdout]], [0],
+[ignore])
+AT_CLEANUP
+
+AT_SETUP([UUID does not change])
+AT_SKIP_IF([test $have_uuid = no])
+AT_CHECK_MSIBUILD([out.msi -s 'Project name'])
+AT_CHECK_MSIINFO([suminfo out.msi | grep ^Revision > expout], [0])
+AT_CHECK_MSIBUILD([out.msi -s 'Project name2'])
+AT_CHECK_MSIINFO([suminfo out.msi], [ignore], [stdout])
+AT_CHECK([grep ^Subject stdout], [0],
+[Subject: Project name2
+])
+AT_CHECK_MSIINFO([suminfo out.msi | grep ^Revision], [0], [expout])
+AT_CLEANUP
+
+AT_SETUP([Add stream])
+AT_DATA([test.txt], [This is test.txt
+])
+AT_CHECK_MSIBUILD([out.msi -a Binary.testtxt test.txt])
+AT_CHECK_MSIINFO([streams out.msi | grep -v SummaryInformation], [0],
+[Binary.testtxt
+])
+cp test.txt expout
+AT_CHECK_MSIINFO([extract out.msi Binary.testtxt], [0], [expout])
+AT_CLEANUP
+
+dnl AT_SETUP([Invalid import table])
+dnl AT_XFAIL_IF(:)
+dnl AT_DATA([tables.txt],
+dnl [Name
+dnl s64
+dnl Binary
+dnl ])
+dnl AT_CHECK_MSIBUILD([out.msi -i tables.txt])
+dnl AT_CLEANUP
+
+AT_SETUP([Add tables])
+AT_DATA([tables.txt],
+[Name
+s64
+_Tables
+Binary
+])
+AT_CHECK_MSIBUILD([out.msi -i tables.txt])
+AT_CHECK_MSIINFO([tables out.msi], [0],
+[Binary
+])
+AT_CLEANUP
+
+AT_SETUP([Add tables and definitions])
+AT_MSIDATA([tables.txt])
+AT_MSIDATA([columns.txt])
+AT_CHECK_MSIBUILD([out.msi -i tables.txt columns.txt])
+AT_DATA_UNQUOTED([expout],
+[Name Data[]AT_CR
+s72 v0[]AT_CR
+Icon Name[]AT_CR
+])
+AT_CHECK_MSIINFO([export out.msi Icon], [0], [expout])
+AT_CLEANUP
+
+AT_SETUP([Separate invocations])
+AT_MSIDATA([tables.txt])
+AT_MSIDATA([columns.txt])
+AT_CHECK_MSIBUILD([out.msi -i tables.txt])
+AT_CHECK_MSIINFO([tables out.msi > expout])
+AT_CHECK_MSIBUILD([out.msi -i columns.txt])
+AT_CHECK_MSIINFO([tables out.msi], [0], [expout])
+AT_CLEANUP
+
+AT_SETUP([Add table with data])
+AT_MSIDATA([tables.txt])
+AT_MSIDATA([columns.txt])
+AT_MSIDATA([button.txt])
+AT_CHECK_MSIBUILD([out.msi -i tables.txt columns.txt button.txt])
+cp button.txt expout
+AT_CHECK_MSIINFO([export out.msi RadioButton], [0], [expout])
+AT_CLEANUP
+
+AT_SETUP([Add table with streams])
+AT_MSIDATA([tables.txt])
+AT_MSIDATA([columns.txt])
+AT_MSIDATA([icon.txt])
+AT_MSIDATA([icon/firefox.16.0.2.0.ico.exe])
+AT_CHECK_MSIBUILD([out.msi -i tables.txt columns.txt icon.txt])
+cp icon.txt expout
+AT_CHECK_MSIINFO([streams out.msi | grep -v SummaryInformation], [0],
+[Icon.firefox.16.0.2.0.ico.exe
+])
+cp icon/firefox.16.0.2.0.ico.exe expout
+AT_CHECK_MSIINFO([extract out.msi Icon.firefox.16.0.2.0.ico.exe > stdout], [0])
+AT_CHECK([cmp stdout expout])
+AT_CLEANUP
+
+AT_SETUP([Add tables])
+AT_DATA([tables.txt],
+[Name
+s64
+_Tables
+Binary
+])
+AT_CHECK_MSIBUILD([-i out.msi tables.txt])
+AT_CHECK_MSIINFO([tables out.msi], [0],
+[Binary
+])
+AT_CLEANUP
+