File: tools.bats

package info (click to toggle)
msitools 0.106%2Brepack-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,336 kB
  • sloc: ansic: 18,006; yacc: 862; sh: 416; perl: 217; makefile: 22
file content (149 lines) | stat: -rw-r--r-- 4,269 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#!/usr/bin/env bats

load common

@test "testdatabase shouldn't print fail" {
  run "$testdatabase"
  [ "$status" -eq 0 ]
  ! echo "$output" | grep ^FAIL
}

@test "testrecord shouldn't print fail" {
  run "$testrecord"
  [ "$status" -eq 0 ]
  ! echo "$output" | grep ^FAIL
}

@test "testsuminfo shouldn't print fail" {
  if [ ! -x "$testsuminfo" ]; then
     # meson 0.55 (at least), fails to parse skipped lines properly meson#7538
     # skip "testsuminfo isn't built"
     return 0
  fi
  run "$testsuminfo"
  [ "$status" -eq 0 ]
  ! echo "$output" | grep ^FAIL
}

@test "msibuild - invalid command line" {
  run "$msibuild"
  [ "$status" -eq 1 ]
  run "$msibuild" out.msi
  [ "$status" -eq 1 ]
  [ ! -f out.msi ]
}

@test "msibuild - empty MSI" {
  run "$msibuild" out.msi -s 'Project name'
  [ "$status" -eq 0 ]
  run "$msiinfo" suminfo out.msi
  [ "$status" -eq 0 ]
  echo "$output" | grep "Subject: Project name"
  echo "$output" | grep "Template: ;1033"
  echo "$output" | grep "Version: 200"
}

@test "msibuild - UUID" {
  run "$msibuild" out.msi -s 'Project name'
  [ "$status" -eq 0 ]
  run "$msiinfo" suminfo out.msi
  [ "$status" -eq 0 ]
  UUID='\{[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}\}'
  echo "$output" | grep -E "^Revision number \\(UUID\\): $UUID\$"
}

@test "msibuild - UUID does not change" {
  run "$msibuild" out.msi -s 'Project name'
  run "$msiinfo" suminfo out.msi
  exp=$(echo "$output" | grep "^Revision")
  run "$msibuild" out.msi -s 'Project name2'
  run "$msiinfo" suminfo out.msi
  echo "$output" | grep "Subject: Project name2"
  [ "$(echo "$output" | grep "^Revision")" = "$exp" ]
}

@test "msibuild - Set summary" {
  run "$msibuild" out.msi -s 'Project name'
  run "$msibuild" out.msi -s 'Project name3' 'Somebody' ';1042' '24265297-EC57-4E72-B5E9-000000000000'
  run "$msiinfo" suminfo out.msi
  echo "$output" | grep "Subject: Project name3"
  echo "$output" | grep "Author: Somebody"
  echo "$output" | grep "Template: ;1042"
  echo "$output" | grep "Revision number (UUID): 24265297-EC57-4E72-B5E9-000000000000"
}

@test "msibuild - add stream" {
  echo "This is test.txt" > test.txt
  run "$msibuild" out.msi -a Binary.testtxt test.txt
  run "$msiinfo" streams out.msi
  output=$(echo "$output" | grep -v SummaryInformation)
  [ "$output" = "Binary.testtxt" ]
  run "$msiinfo" extract out.msi Binary.testtxt
  [ "$output" = "This is test.txt" ]
}

@test "msibuild - add tables" {
  cat >tables.txt <<EOF
Name
s64
_Tables
Binary
EOF
  run "$msibuild" out.msi -i tables.txt
  run "$msiinfo" tables out.msi
  [ "$output" = "_SummaryInformation
_ForceCodepage
Binary" ]
}

@test "msibuild - add tables and definitions" {
  run "$msibuild" out.msi -i tables.txt columns.txt
  run "$msiinfo" export out.msi Icon
  exp=$(printf "Name	Data\r\ns72	v0\r\nIcon	Name\r\n")
  [ "$output" = "$exp" ]
}

@test "msibuild - seperate invocations" {
  run "$msibuild" out.msi -i tables.txt
  run "$msiinfo" tables out.msi
  exp="$output"
  run "$msibuild" out.msi -i columns.txt
  run "$msiinfo" tables out.msi
  [ "$output" = "$exp" ]
}

@test "msibuild - add table with data" {
  run "$msibuild" out.msi -i tables.txt columns.txt button.txt
  run "$msiinfo" export out.msi RadioButton
  exp=$(cat button.txt)
  [ "$output" = "$exp" ]
}

@test "msibuild - add table with stream" {
  run "$msibuild" out.msi -i tables.txt columns.txt icon.txt
  run "$msiinfo" streams out.msi
  out=$(echo "$output" | grep -v SummaryInformation)
  [ "$out" = "Icon.firefox.16.0.2.0.ico.exe" ]
  output=$("$msiinfo" extract out.msi Icon.firefox.16.0.2.0.ico.exe | sha1sum)
  exp=$(cat Icon/firefox.16.0.2.0.ico.exe | sha1sum)
  [ "$output" = "$exp" ]
}

@test "msibuild - update _SummaryInformation table" {
  run "$msibuild" -i out.msi _SummaryInformation.idt
  run "$msiinfo" suminfo out.msi
  [ "$output" = "Title: Installation Database
Subject: Acme's Foobar 1.0 Installer
Author: Acme Ltd.
Keywords: Installer
Comments: Foobar is a registered trademark of Acme Ltd.
Template: Intel;1033
Revision number (UUID): {D045A303-F114-4A3B-A01D-24FC2D2A67D7}
Created: Tue Dec 18 15:12:50 2012
Last saved: Tue Dec 18 15:12:50 2012
Version: 100 (64)
Source: 2 (2)
Restrict: 0 (0)
Application: Windows Installer XML (3.7.1119.0)
Security: 2 (2)" ]
}