diff options
| author | Mike Naberezny | 2014-04-02 12:46:44 -0700 |
|---|---|---|
| committer | Mike McQuaid | 2014-04-03 11:21:58 +0100 |
| commit | dfd0b0d97f55b065f0398206281b842700ba7105 (patch) | |
| tree | d8fdc443bcfc1cc7665e5c5d901c29f446bbebe3 /Library/Formula | |
| parent | 22805a6a7dd731aefaa5586a0bca18a49398695d (diff) | |
| download | homebrew-dfd0b0d97f55b065f0398206281b842700ba7105.tar.bz2 | |
msitools: add tests for all executables
Closes #28088.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
Diffstat (limited to 'Library/Formula')
| -rw-r--r-- | Library/Formula/msitools.rb | 62 |
1 files changed, 61 insertions, 1 deletions
diff --git a/Library/Formula/msitools.rb b/Library/Formula/msitools.rb index 0cc73101c..2cb64dead 100644 --- a/Library/Formula/msitools.rb +++ b/Library/Formula/msitools.rb @@ -26,6 +26,66 @@ class Msitools < Formula end test do - system "msiinfo", "--help" + # wixl-heat: make an xml fragment + IO.popen("#{bin}/wixl-heat --prefix test", "w+") do |pipe| + pipe.close_write + assert pipe.read.include?("<Fragment>") + end + + # wixl: build two installers + 1.upto(2) do |i| + (testpath/"test#{i}.txt").write "abc" + (testpath/"installer#{i}.wxs").write <<-EOS.undent + <?xml version="1.0"?> + <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> + <Product Id="*" UpgradeCode="DADAA9FC-54F7-4977-9EA1-8BDF6DC73C7#{i}" + Name="Test" Version="1.0.0" Manufacturer="BigCo" Language="1033"> + <Package InstallerVersion="200" Compressed="yes" Comments="Windows Installer Package"/> + <Media Id="1" Cabinet="product.cab" EmbedCab="yes"/> + + <Directory Id="TARGETDIR" Name="SourceDir"> + <Directory Id="ProgramFilesFolder"> + <Directory Id="INSTALLDIR" Name="test"> + <Component Id="ApplicationFiles" Guid="52028951-5A2A-4FB6-B8B2-73EF49B320F#{i}"> + <File Id="ApplicationFile1" Source="test#{i}.txt"/> + </Component> + </Directory> + </Directory> + </Directory> + + <Feature Id="DefaultFeature" Level="1"> + <ComponentRef Id="ApplicationFiles"/> + </Feature> + </Product> + </Wix> + EOS + system "#{bin}/wixl -o installer#{i}.msi installer#{i}.wxs" + assert File.exist?("installer#{i}.msi") + end + + # msidiff: diff two installers + lines = `#{bin}/msidiff --list installer1.msi installer2.msi 2>/dev/null`.split("\n") + assert_equal 0, $?.exitstatus + assert_equal "-Program Files/test/test1.txt", lines[-2] + assert_equal "+Program Files/test/test2.txt", lines[-1] + + # msiinfo: show info for an installer + out = `#{bin}/msiinfo suminfo installer1.msi` + assert_equal 0, $?.exitstatus + assert out.include?("Author: BigCo") + + # msiextract: extract files from an installer + mkdir "files" + system "#{bin}/msiextract --directory files installer1.msi" + assert_equal (testpath/"test1.txt").read, + (testpath/"files/Program Files/test/test1.txt").read + + # msidump: dump tables from an installer + mkdir "idt" + system "#{bin}/msidump --directory idt installer1.msi" + assert File.exist?("idt/File.idt") + + # msibuild: replace a table in an installer + system "#{bin}/msibuild installer1.msi -i idt/File.idt" end end |
