diff --git a/Formula/msitools.rb b/Formula/msitools.rb index 0cc73101c2b..2cb64dead95 100644 --- a/Formula/msitools.rb +++ b/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?("") + end + + # wixl: build two installers + 1.upto(2) do |i| + (testpath/"test#{i}.txt").write "abc" + (testpath/"installer#{i}.wxs").write <<-EOS.undent + + + + + + + + + + + + + + + + + + + + + + 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