Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
62 lines (55 sloc) 1.7 KB
class Byteman < Formula
desc "Java bytecode manipulation tool for testing, monitoring and tracing"
homepage "https://byteman.jboss.org/"
url "https://downloads.jboss.org/byteman/4.0.5/byteman-download-4.0.5-bin.zip"
sha256 "f65a9e169fdebade6dfb265ae284ecdcde82c744ae4c606f99d405325a75a5ba"
bottle :unneeded
depends_on :java => "1.6+"
def install
rm_rf Dir["bin/*.bat"]
doc.install Dir["docs/*"], "README"
libexec.install ["bin", "lib", "contrib"]
pkgshare.install ["sample"]
env = Language::Java.java_home_env("1.6+").merge(:BYTEMAN_HOME => libexec)
Pathname.glob("#{libexec}/bin/*") do |file|
target = bin/File.basename(file, File.extname(file))
# Drop the .sh from the scripts
target.write_env_script(libexec/"bin/#{File.basename(file)}", env)
end
end
test do
(testpath/"src/main/java/BytemanHello.java").write <<~EOS
class BytemanHello {
public static void main(String... args) {
System.out.println("Hello, Brew!");
}
}
EOS
(testpath/"brew.btm").write <<~EOS
RULE trace main entry
CLASS BytemanHello
METHOD main
AT ENTRY
IF true
DO traceln("Entering main")
ENDRULE
RULE trace main exit
CLASS BytemanHello
METHOD main
AT EXIT
IF true
DO traceln("Exiting main")
ENDRULE
EOS
# Compile example
system "javac", "src/main/java/BytemanHello.java"
# Expected successful output when Byteman runs example
expected = <<~EOS
Entering main
Hello, Brew!
Exiting main
EOS
actual = shell_output("#{bin}/bmjava -l brew.btm -cp src/main/java BytemanHello")
assert_equal(expected, actual)
end
end
You can’t perform that action at this time.