fforks.sf 871 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/ruby
  2. var f = { (5, 6) }.ffork
  3. var g = { 6 }.ffork
  4. var a1 = [f.wait]
  5. var a2 = [g.wait]
  6. assert_eq(a1, [5, 6])
  7. assert_eq(a2, [6])
  8. #
  9. ## Loading Perl modules inside a file-fork
  10. #
  11. do {
  12. var t = { 'JSON'.require }.ffork.wait
  13. assert_eq(t.new.encode(Hash(a => 1)), %({"a":1}))
  14. }
  15. do {
  16. var t = { 'JSON::PP'.frequire }.ffork.wait
  17. assert_eq(t.encode_json(Hash(a => 1)), %({"a":1}))
  18. }
  19. do {
  20. var t = {
  21. var lwp = try { "LWP::UserAgent".require.new(
  22. timeout => 30,
  23. show_progress => 1,
  24. ) } \\ Sys.kill('KILL', $$)
  25. lwp.default_header("Referer" => "foo")
  26. lwp
  27. }.ffork
  28. var r = t.wait \\ die "LWP::UserAgent cannot be loaded"
  29. assert_eq(r.default_header("Referer"), "foo")
  30. r.default_header("Referer" => "bar")
  31. assert_eq(r.default_header("Referer"), "bar")
  32. }
  33. say "** Test passed!"