epall-limelight 0.5.0-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. data/bin/icons/icon.ico +0 -0
  2. data/bin/icons/icon_48.gif +0 -0
  3. data/bin/icons/limelight.icns +0 -0
  4. data/bin/limelight +5 -0
  5. data/bin/ll +10 -0
  6. data/bin/ll.bat +5 -0
  7. data/lib/init.rb +16 -0
  8. data/lib/limelight.jar +0 -0
  9. data/lib/limelight/animation.rb +41 -0
  10. data/lib/limelight/builtin/players.rb +16 -0
  11. data/lib/limelight/builtin/players/button.rb +39 -0
  12. data/lib/limelight/builtin/players/check_box.rb +50 -0
  13. data/lib/limelight/builtin/players/combo_box.rb +89 -0
  14. data/lib/limelight/builtin/players/combo_box_popup_list.rb +19 -0
  15. data/lib/limelight/builtin/players/combo_box_popup_list_item.rb +21 -0
  16. data/lib/limelight/builtin/players/curtains.rb +23 -0
  17. data/lib/limelight/builtin/players/image.rb +54 -0
  18. data/lib/limelight/builtin/players/password_box.rb +34 -0
  19. data/lib/limelight/builtin/players/radio_button.rb +65 -0
  20. data/lib/limelight/builtin/players/stage_mover.rb +31 -0
  21. data/lib/limelight/builtin/players/stage_sizer.rb +34 -0
  22. data/lib/limelight/builtin/players/text_area.rb +34 -0
  23. data/lib/limelight/builtin/players/text_box.rb +34 -0
  24. data/lib/limelight/builtin/styles.rb +35 -0
  25. data/lib/limelight/builtin/utilities_production/alert/players/alert.rb +11 -0
  26. data/lib/limelight/builtin/utilities_production/alert/props.rb +8 -0
  27. data/lib/limelight/builtin/utilities_production/alert/styles.rb +14 -0
  28. data/lib/limelight/builtin/utilities_production/incompatible_version/props.rb +20 -0
  29. data/lib/limelight/builtin/utilities_production/incompatible_version/styles.rb +12 -0
  30. data/lib/limelight/builtin/utilities_production/production.rb +62 -0
  31. data/lib/limelight/builtin/utilities_production/stages.rb +12 -0
  32. data/lib/limelight/builtin/utilities_production/styles.rb +53 -0
  33. data/lib/limelight/button_group_cache.rb +11 -0
  34. data/lib/limelight/casting_director.rb +112 -0
  35. data/lib/limelight/client/playbills.rb +86 -0
  36. data/lib/limelight/commands/command.rb +168 -0
  37. data/lib/limelight/commands/create_command.rb +98 -0
  38. data/lib/limelight/commands/freeze_command.rb +131 -0
  39. data/lib/limelight/commands/help_command.rb +61 -0
  40. data/lib/limelight/commands/open_command.rb +60 -0
  41. data/lib/limelight/commands/pack_command.rb +45 -0
  42. data/lib/limelight/commands/unpack_command.rb +44 -0
  43. data/lib/limelight/commands/version_command.rb +31 -0
  44. data/lib/limelight/data.rb +37 -0
  45. data/lib/limelight/dsl/build_exception.rb +55 -0
  46. data/lib/limelight/dsl/menu_bar.rb +71 -0
  47. data/lib/limelight/dsl/prop_builder.rb +155 -0
  48. data/lib/limelight/dsl/stage_builder.rb +105 -0
  49. data/lib/limelight/dsl/styles_builder.rb +157 -0
  50. data/lib/limelight/file_chooser.rb +68 -0
  51. data/lib/limelight/file_filter.rb +33 -0
  52. data/lib/limelight/file_loader.rb +46 -0
  53. data/lib/limelight/gems.rb +51 -0
  54. data/lib/limelight/java_couplings.rb +66 -0
  55. data/lib/limelight/java_util.rb +49 -0
  56. data/lib/limelight/limelight_exception.rb +24 -0
  57. data/lib/limelight/main.rb +108 -0
  58. data/lib/limelight/paint_action.rb +27 -0
  59. data/lib/limelight/pen.rb +83 -0
  60. data/lib/limelight/producer.rb +179 -0
  61. data/lib/limelight/production.rb +169 -0
  62. data/lib/limelight/prop.rb +367 -0
  63. data/lib/limelight/scene.rb +151 -0
  64. data/lib/limelight/specs/spec_helper.rb +87 -0
  65. data/lib/limelight/specs/test_scene_opener.rb +60 -0
  66. data/lib/limelight/stage.rb +292 -0
  67. data/lib/limelight/string.rb +38 -0
  68. data/lib/limelight/studio.rb +185 -0
  69. data/lib/limelight/styles.rb +347 -0
  70. data/lib/limelight/templates/production_templater.rb +49 -0
  71. data/lib/limelight/templates/scene_templater.rb +47 -0
  72. data/lib/limelight/templates/sources/freezing/limelight_init.rb.template +5 -0
  73. data/lib/limelight/templates/sources/production/init.rb.template +15 -0
  74. data/lib/limelight/templates/sources/production/production.rb.template +49 -0
  75. data/lib/limelight/templates/sources/production/spec/spec_helper.rb.template +12 -0
  76. data/lib/limelight/templates/sources/production/stages.rb.template +17 -0
  77. data/lib/limelight/templates/sources/production/styles.rb.template +12 -0
  78. data/lib/limelight/templates/sources/scene/props.rb.template +6 -0
  79. data/lib/limelight/templates/sources/scene/styles.rb.template +18 -0
  80. data/lib/limelight/templates/sources/scene_spec/scene_spec.rb.template +13 -0
  81. data/lib/limelight/templates/templater.rb +131 -0
  82. data/lib/limelight/templates/templater_logger.rb +39 -0
  83. data/lib/limelight/theater.rb +77 -0
  84. data/lib/limelight/util.rb +65 -0
  85. data/lib/limelight/util/downloader.rb +115 -0
  86. data/lib/limelight/version.rb +20 -0
  87. data/productions/examples/8thlight.com/about/about.txt +24 -0
  88. data/productions/examples/8thlight.com/about/props.rb +11 -0
  89. data/productions/examples/8thlight.com/about/styles.rb +2 -0
  90. data/productions/examples/8thlight.com/footer.rb +6 -0
  91. data/productions/examples/8thlight.com/home/props.rb +28 -0
  92. data/productions/examples/8thlight.com/home/styles.rb +2 -0
  93. data/productions/examples/8thlight.com/images/anvil.jpg +0 -0
  94. data/productions/examples/8thlight.com/images/bg.jpg +0 -0
  95. data/productions/examples/8thlight.com/images/botticelli.jpg +0 -0
  96. data/productions/examples/8thlight.com/images/button_bg.jpg +0 -0
  97. data/productions/examples/8thlight.com/images/canvas_bg.jpg +0 -0
  98. data/productions/examples/8thlight.com/images/footer_bg.jpg +0 -0
  99. data/productions/examples/8thlight.com/images/header.jpg +0 -0
  100. data/productions/examples/8thlight.com/images/moses.jpg +0 -0
  101. data/productions/examples/8thlight.com/images/statemachine_thumbnail.png +0 -0
  102. data/productions/examples/8thlight.com/images/thumbnail_book.jpg +0 -0
  103. data/productions/examples/8thlight.com/menu.rb +11 -0
  104. data/productions/examples/8thlight.com/services/props.rb +11 -0
  105. data/productions/examples/8thlight.com/services/services.txt +8 -0
  106. data/productions/examples/8thlight.com/services/styles.rb +2 -0
  107. data/productions/examples/8thlight.com/stages.rb +8 -0
  108. data/productions/examples/8thlight.com/styles.rb +210 -0
  109. data/productions/examples/calculator/players/button.rb +24 -0
  110. data/productions/examples/calculator/players/calculator.rb +15 -0
  111. data/productions/examples/calculator/players/calculator_model.rb +13 -0
  112. data/productions/examples/calculator/props.rb +23 -0
  113. data/productions/examples/calculator/styles.rb +36 -0
  114. data/productions/examples/langstons_ant/html_javascript/ant.css +39 -0
  115. data/productions/examples/langstons_ant/html_javascript/ant.html +22 -0
  116. data/productions/examples/langstons_ant/html_javascript/ant.js +23 -0
  117. data/productions/examples/langstons_ant/init.rb +4 -0
  118. data/productions/examples/langstons_ant/players/ant.rb +103 -0
  119. data/productions/examples/langstons_ant/players/log.rb +29 -0
  120. data/productions/examples/langstons_ant/players/start_stop_button.rb +37 -0
  121. data/productions/examples/langstons_ant/players/world.rb +35 -0
  122. data/productions/examples/langstons_ant/props.rb +22 -0
  123. data/productions/examples/langstons_ant/styles.rb +104 -0
  124. data/productions/examples/sandbox/alerts/incompatible_production/default_scene/props.rb +10 -0
  125. data/productions/examples/sandbox/alerts/incompatible_production/default_scene/styles.rb +32 -0
  126. data/productions/examples/sandbox/alerts/incompatible_production/production.rb +52 -0
  127. data/productions/examples/sandbox/alerts/incompatible_production/spec/default_scene/default_scene_spec.rb +16 -0
  128. data/productions/examples/sandbox/alerts/incompatible_production/spec/spec_helper.rb +8 -0
  129. data/productions/examples/sandbox/alerts/incompatible_production/stages.rb +20 -0
  130. data/productions/examples/sandbox/alerts/incompatible_production/styles.rb +15 -0
  131. data/productions/examples/sandbox/alerts/players/alerts.rb +17 -0
  132. data/productions/examples/sandbox/alerts/props.rb +10 -0
  133. data/productions/examples/sandbox/alerts/styles.rb +46 -0
  134. data/productions/examples/sandbox/background_images/props.rb +22 -0
  135. data/productions/examples/sandbox/background_images/styles.rb +40 -0
  136. data/productions/examples/sandbox/click_me/players/chromaton.rb +52 -0
  137. data/productions/examples/sandbox/click_me/props.rb +8 -0
  138. data/productions/examples/sandbox/click_me/styles.rb +11 -0
  139. data/productions/examples/sandbox/floaters/players/floater.rb +108 -0
  140. data/productions/examples/sandbox/floaters/players/surface.rb +21 -0
  141. data/productions/examples/sandbox/floaters/props.rb +10 -0
  142. data/productions/examples/sandbox/floaters/styles.rb +24 -0
  143. data/productions/examples/sandbox/frameing/players/sandbox.rb +17 -0
  144. data/productions/examples/sandbox/frameing/props.rb +35 -0
  145. data/productions/examples/sandbox/frameing/styles.rb +45 -0
  146. data/productions/examples/sandbox/gradients/players/spinner.rb +20 -0
  147. data/productions/examples/sandbox/gradients/players/teaser.rb +19 -0
  148. data/productions/examples/sandbox/gradients/players/wave.rb +19 -0
  149. data/productions/examples/sandbox/gradients/players/waves.rb +19 -0
  150. data/productions/examples/sandbox/gradients/props.rb +13 -0
  151. data/productions/examples/sandbox/gradients/styles.rb +47 -0
  152. data/productions/examples/sandbox/header.rb +22 -0
  153. data/productions/examples/sandbox/homer/players/homer.rb +24 -0
  154. data/productions/examples/sandbox/homer/props.rb +10 -0
  155. data/productions/examples/sandbox/homer/styles.rb +16 -0
  156. data/productions/examples/sandbox/images/arch.jpg +0 -0
  157. data/productions/examples/sandbox/images/beach.jpg +0 -0
  158. data/productions/examples/sandbox/images/homer.jpg +0 -0
  159. data/productions/examples/sandbox/images/limelight_spotlight.jpg +0 -0
  160. data/productions/examples/sandbox/images/logo.png +0 -0
  161. data/productions/examples/sandbox/images/marilyn.jpg +0 -0
  162. data/productions/examples/sandbox/images/space.png +0 -0
  163. data/productions/examples/sandbox/images_scene/props.rb +36 -0
  164. data/productions/examples/sandbox/images_scene/styles.rb +34 -0
  165. data/productions/examples/sandbox/inputs/players/button_input.rb +48 -0
  166. data/productions/examples/sandbox/inputs/players/check_box_input.rb +40 -0
  167. data/productions/examples/sandbox/inputs/players/combo_box_input.rb +41 -0
  168. data/productions/examples/sandbox/inputs/players/radio_button_input.rb +43 -0
  169. data/productions/examples/sandbox/inputs/players/text_area_input.rb +36 -0
  170. data/productions/examples/sandbox/inputs/players/text_box_input.rb +36 -0
  171. data/productions/examples/sandbox/inputs/props.rb +40 -0
  172. data/productions/examples/sandbox/inputs/styles.rb +39 -0
  173. data/productions/examples/sandbox/kiosk/players/kiosk.rb +39 -0
  174. data/productions/examples/sandbox/kiosk/props.rb +9 -0
  175. data/productions/examples/sandbox/kiosk/styles.rb +37 -0
  176. data/productions/examples/sandbox/players/sandbox.rb +11 -0
  177. data/productions/examples/sandbox/rounded_corners/players/box.rb +11 -0
  178. data/productions/examples/sandbox/rounded_corners/props.rb +22 -0
  179. data/productions/examples/sandbox/rounded_corners/styles.rb +17 -0
  180. data/productions/examples/sandbox/scrolling/players/add_button.rb +19 -0
  181. data/productions/examples/sandbox/scrolling/players/cell.rb +15 -0
  182. data/productions/examples/sandbox/scrolling/props.rb +45 -0
  183. data/productions/examples/sandbox/scrolling/styles.rb +33 -0
  184. data/productions/examples/sandbox/sketching/players/sketchpad.rb +46 -0
  185. data/productions/examples/sandbox/sketching/props.rb +25 -0
  186. data/productions/examples/sandbox/sketching/styles.rb +35 -0
  187. data/productions/examples/sandbox/sounds/bird.au +0 -0
  188. data/productions/examples/sandbox/sounds/cat.au +0 -0
  189. data/productions/examples/sandbox/sounds/cow.au +0 -0
  190. data/productions/examples/sandbox/sounds/dog.au +0 -0
  191. data/productions/examples/sandbox/sounds/donkey.au +0 -0
  192. data/productions/examples/sandbox/sounds/duck.au +0 -0
  193. data/productions/examples/sandbox/sounds/players/clip.rb +10 -0
  194. data/productions/examples/sandbox/sounds/props.rb +10 -0
  195. data/productions/examples/sandbox/sounds/styles.rb +17 -0
  196. data/productions/examples/sandbox/spec/alerts/alerts_spec.rb +16 -0
  197. data/productions/examples/sandbox/stage_handles/players/sizer.rb +35 -0
  198. data/productions/examples/sandbox/stage_handles/props.rb +17 -0
  199. data/productions/examples/sandbox/stage_handles/styles.rb +58 -0
  200. data/productions/examples/sandbox/stages.rb +8 -0
  201. data/productions/examples/sandbox/styles.rb +35 -0
  202. data/productions/examples/sandbox/teaser/players/fader.rb +58 -0
  203. data/productions/examples/sandbox/teaser/props.rb +14 -0
  204. data/productions/examples/sandbox/teaser/styles.rb +21 -0
  205. data/productions/examples/tutorials/tutorial_1/players/sample.rb +11 -0
  206. data/productions/examples/tutorials/tutorial_1/props.rb +9 -0
  207. data/productions/examples/tutorials/tutorial_1/styles.rb +25 -0
  208. data/productions/playbills.lll +1 -0
  209. data/productions/stage_composer/init.rb +10 -0
  210. data/productions/stage_composer/inspector/players/inspector.rb +80 -0
  211. data/productions/stage_composer/inspector/players/prop_row.rb +12 -0
  212. data/productions/stage_composer/inspector/players/prop_tree.rb +33 -0
  213. data/productions/stage_composer/inspector/players/style_table.rb +12 -0
  214. data/productions/stage_composer/inspector/players/style_value.rb +16 -0
  215. data/productions/stage_composer/inspector/props.rb +19 -0
  216. data/productions/stage_composer/inspector/styles.rb +71 -0
  217. data/productions/stage_composer/lib/init.rb +5 -0
  218. data/productions/stage_composer/lib/limelight/composer/controller.rb +51 -0
  219. data/productions/stage_composer/lib/limelight/composer/lethargy.rb +24 -0
  220. data/productions/stage_composer/production.rb +6 -0
  221. data/productions/stage_composer/stages.rb +15 -0
  222. data/productions/startup/images/logo.png +0 -0
  223. data/productions/startup/images/splash.png +0 -0
  224. data/productions/startup/production.rb +52 -0
  225. data/productions/startup/spec/default_scene/default_scene_spec.rb +16 -0
  226. data/productions/startup/spec/spec_helper.rb +8 -0
  227. data/productions/startup/stages.rb +9 -0
  228. data/productions/startup/styles.rb +15 -0
  229. data/productions/startup/welcome/players/browse_button.rb +10 -0
  230. data/productions/startup/welcome/players/download_button.rb +17 -0
  231. data/productions/startup/welcome/players/sandbox_button.rb +11 -0
  232. data/productions/startup/welcome/props.rb +23 -0
  233. data/productions/startup/welcome/styles.rb +103 -0
  234. data/spec/limelight/builtin/players/button_spec.rb +20 -0
  235. data/spec/limelight/builtin/players/check_box_spec.rb +29 -0
  236. data/spec/limelight/builtin/players/combo_box_spec.rb +29 -0
  237. data/spec/limelight/builtin/players/image_spec.rb +43 -0
  238. data/spec/limelight/builtin/players/password_box_spec.rb +27 -0
  239. data/spec/limelight/builtin/players/radio_button_spec.rb +64 -0
  240. data/spec/limelight/builtin/players/stage_mover_spec.rb +36 -0
  241. data/spec/limelight/builtin/players/stage_sizer_spec.rb +40 -0
  242. data/spec/limelight/builtin/players/text_area_spec.rb +27 -0
  243. data/spec/limelight/builtin/players/text_box_spec.rb +27 -0
  244. data/spec/limelight/builtin/utilities_production/spec_helper.rb +7 -0
  245. data/spec/limelight/builtin/utilities_production/utilities_production_spec.rb +146 -0
  246. data/spec/limelight/casting_director_spec.rb +164 -0
  247. data/spec/limelight/client/playbills_spec.rb +79 -0
  248. data/spec/limelight/commands/command_spec.rb +26 -0
  249. data/spec/limelight/commands/create_command_spec.rb +108 -0
  250. data/spec/limelight/commands/freeze_command_spec.rb +143 -0
  251. data/spec/limelight/commands/help_command_spec.rb +42 -0
  252. data/spec/limelight/commands/open_command_spec.rb +52 -0
  253. data/spec/limelight/commands/pack_command_spec.rb +26 -0
  254. data/spec/limelight/commands/unpack_command_spec.rb +47 -0
  255. data/spec/limelight/data_spec.rb +36 -0
  256. data/spec/limelight/dsl/prop_builder_spec.rb +245 -0
  257. data/spec/limelight/dsl/stage_builder_spec.rb +90 -0
  258. data/spec/limelight/dsl/styles_builder_spec.rb +194 -0
  259. data/spec/limelight/file_chooser_spec.rb +64 -0
  260. data/spec/limelight/file_filter_spec.rb +29 -0
  261. data/spec/limelight/file_loader_spec.rb +28 -0
  262. data/spec/limelight/gems_spec.rb +92 -0
  263. data/spec/limelight/java_util_spec.rb +37 -0
  264. data/spec/limelight/main_spec.rb +40 -0
  265. data/spec/limelight/paint_action_spec.rb +30 -0
  266. data/spec/limelight/pen_spec.rb +62 -0
  267. data/spec/limelight/producer_spec.rb +210 -0
  268. data/spec/limelight/production_spec.rb +100 -0
  269. data/spec/limelight/prop_spec.rb +431 -0
  270. data/spec/limelight/scene_spec.rb +173 -0
  271. data/spec/limelight/stage_spec.rb +202 -0
  272. data/spec/limelight/string_spec.rb +38 -0
  273. data/spec/limelight/studio_spec.rb +157 -0
  274. data/spec/limelight/styles_spec.rb +53 -0
  275. data/spec/limelight/templates/production_templater_spec.rb +66 -0
  276. data/spec/limelight/templates/scene_templater_spec.rb +51 -0
  277. data/spec/limelight/templates/templater_logger_spec.rb +41 -0
  278. data/spec/limelight/templates/templater_spec.rb +107 -0
  279. data/spec/limelight/theater_spec.rb +72 -0
  280. data/spec/limelight/util/downloader_spec.rb +92 -0
  281. data/spec/spec_helper.rb +70 -0
  282. metadata +335 -0
@@ -0,0 +1,79 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
5
+ require 'limelight/client/playbills'
6
+
7
+ describe Limelight::Client::Playbills do
8
+
9
+ before(:each) do
10
+ @xml = <<END
11
+ <?xml version="1.0" encoding="UTF-8"?>
12
+ <playbills type="array">
13
+ <playbill>
14
+ <author>Jim Weirich and Micah Martin</author>
15
+ <created-at type="datetime">2009-01-02T17:07:26Z</created-at>
16
+ <description>The classic game of memory.</description>
17
+ <id type="integer">1</id>
18
+ <name>simon</name>
19
+ <size>270418</size>
20
+ <title>Limelight Simon</title>
21
+ <updated-at type="datetime">2009-01-02T17:07:26Z</updated-at>
22
+ <version>1.0</version>
23
+ <llp-path>/playbills/1.llp</llp-path>
24
+ <thumbnail-path>/playbills/1.thumbnail</thumbnail-path>
25
+ </playbill>
26
+ </playbills>
27
+ END
28
+
29
+ @response = mock("response")
30
+ end
31
+
32
+ it "should translate xml with 1 playbill" do
33
+ playbills = Limelight::Client::Playbills.from_xml(@xml)
34
+ playbills.length.should == 1
35
+
36
+ simon = playbills[0]
37
+ simon.name.should == "simon"
38
+ simon.title.should == "Limelight Simon"
39
+ simon.size.should == "270418"
40
+ simon.updated_at.year.should == 2009
41
+ simon.created_at.year.should == 2009
42
+ simon.thumbnail_path.should == "/playbills/1.thumbnail"
43
+ simon.llp_path.should == "/playbills/1.llp"
44
+ simon.author.should == "Jim Weirich and Micah Martin"
45
+ simon.description.should == "The classic game of memory."
46
+ end
47
+
48
+ it "should get all the playbills from a URL" do
49
+ Net::HTTP.should_receive(:get_response).with(URI.parse("http://localhost:3000/playbills.xml")).and_return(@response)
50
+ @response.should_receive(:body).and_return(@xml)
51
+
52
+ playbills = Limelight::Client::Playbills.from_url("http://localhost:3000/playbills.xml")
53
+
54
+ playbills.length.should == 1
55
+ playbills[0].uri.host.should == "localhost"
56
+ playbills[0].uri.port.should == 3000
57
+ end
58
+
59
+ it "should get the thumbnail for a playbill" do
60
+ playbill = Limelight::Client::Playbill.new(URI.parse("http://localhost:3000/playbills.xml"))
61
+ playbill.thumbnail_path = "/playbills/1.thumbnail"
62
+
63
+ Net::HTTP.should_receive(:get_response).with(URI.parse("http://localhost:3000/playbills/1.thumbnail")).and_return(@response)
64
+ @response.should_receive(:body).and_return("blah")
65
+
66
+ playbill.thumbnail.should == "blah"
67
+ end
68
+
69
+ it "should get the thumbnail for a playbill" do
70
+ playbill = Limelight::Client::Playbill.new(URI.parse("http://localhost:3000/playbills.xml"))
71
+ playbill.llp_path = "/playbills/1.llp"
72
+
73
+ Net::HTTP.should_receive(:get_response).with(URI.parse("http://localhost:3000/playbills/1.llp")).and_return(@response)
74
+ @response.should_receive(:body).and_return("blah")
75
+
76
+ playbill.llp.should == "blah"
77
+ end
78
+
79
+ end
@@ -0,0 +1,26 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
5
+ require 'limelight/commands/command'
6
+
7
+ describe Limelight::Commands::Command do
8
+
9
+ before(:each) do
10
+ end
11
+
12
+ it "should allow subclassed to be installed" do
13
+ myclass = class MyClass < Limelight::Commands::Command; install_as "mine"; end;
14
+
15
+ Limelight::Commands::LISTING["mine"].should == myclass
16
+ end
17
+
18
+ it "should load the open command" do
19
+ Limelight::Commands["open"].name.should == "Limelight::Commands::OpenCommand"
20
+ end
21
+
22
+ it "shouldn't crash on unknown commands" do
23
+ lambda { Limelight::Commands["blah"] }.should_not raise_error
24
+ end
25
+
26
+ end
@@ -0,0 +1,108 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
5
+ require 'limelight/commands/create_command'
6
+ require 'limelight/templates/production_templater'
7
+ require 'limelight/templates/scene_templater'
8
+
9
+
10
+ describe Limelight::Commands::CreateCommand do
11
+
12
+ before(:all) do
13
+ @command_class = Limelight::Commands::CreateCommand
14
+ end
15
+
16
+ before(:each) do
17
+ @command = @command_class.new
18
+ @command.instance_eval("def parse_error(e=nil); raise 'Usage called! ' + e + e.backtrace.inspect; end;")
19
+ end
20
+
21
+ it "should be listed" do
22
+ Limelight::Commands::LISTING["create"].should == @command_class
23
+ end
24
+
25
+ it "should create a production" do
26
+ production_templater = make_mock("production_templater")
27
+ Limelight::Templates::ProductionTemplater.should_receive(:new).and_return(production_templater)
28
+ scene_templater = make_mock("scene_templater")
29
+ Limelight::Templates::SceneTemplater.should_receive(:new).and_return(scene_templater)
30
+ production_templater.should_receive(:generate)
31
+ scene_templater.should_receive(:generate)
32
+
33
+ @command.run(["production", "blah"])
34
+ end
35
+
36
+ it "should create a scene" do
37
+ Limelight::Templates::ProductionTemplater.should_not_receive(:new)
38
+ scene_templater = make_mock("scene_templater")
39
+ Limelight::Templates::SceneTemplater.should_receive(:new).and_return(scene_templater)
40
+ scene_templater.should_receive(:generate)
41
+
42
+ @command.run(["scene", "prod/some_scene"])
43
+ end
44
+
45
+ it "should print useage on invalid template type" do
46
+ @command.should_receive(:parse_error).at_least(:once)
47
+
48
+ @command.run(["blah"])
49
+ end
50
+
51
+ it "should print useage on missing paths" do
52
+ @command.should_receive(:parse_error).at_least(:once)
53
+
54
+ @command.run(["production"])
55
+ end
56
+
57
+ it "should have a default options name" do
58
+ @command.parse ["production", "blah"]
59
+
60
+ @command.scene_name.should == "default_scene"
61
+ @command.template_type.should == "production"
62
+ @command.production_path.should == "blah"
63
+ @command.spec_path.should == "blah/spec"
64
+ end
65
+
66
+ it "should have a default production path" do
67
+ @command.parse ["scene", "blah"]
68
+
69
+ @command.production_path.should == "."
70
+ end
71
+
72
+ it "should parse a scene option" do
73
+ @command.parse ["-s", "scene_name", "production", "blah"]
74
+ @command.scene_name.should == "scene_name"
75
+ @command.template_type.should == "production"
76
+ @command.production_path.should == "blah"
77
+
78
+ @command.parse ["--scene=another_scene", "production", "blah"]
79
+ @command.scene_name.should == "another_scene"
80
+ @command.template_type.should == "production"
81
+ @command.production_path.should == "blah"
82
+ end
83
+
84
+ it "should parse a production path option" do
85
+ @command.parse ["-p", "prod_path", "scene", "blah"]
86
+ @command.production_path.should == "prod_path"
87
+ @command.template_type.should == "scene"
88
+ @command.scene_name.should == "blah"
89
+
90
+ @command.parse ["--production_path=prody_path", "scene", "blah"]
91
+ @command.production_path.should == "prody_path"
92
+ @command.template_type.should == "scene"
93
+ @command.scene_name.should == "blah"
94
+ end
95
+
96
+ it "should parse spec root option" do
97
+ @command.parse ["-S", "spec_path", "production", "blah"]
98
+ @command.template_type.should == "production"
99
+ @command.production_path.should == "blah"
100
+ @command.spec_path.should == "spec_path"
101
+
102
+ @command.parse ["--spec_path=another_spec_path", "production", "blah"]
103
+ @command.template_type.should == "production"
104
+ @command.production_path.should == "blah"
105
+ @command.spec_path.should == "another_spec_path"
106
+ end
107
+
108
+ end
@@ -0,0 +1,143 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
5
+ require 'limelight/commands/freeze_command'
6
+
7
+ describe Limelight::Commands::FreezeCommand do
8
+
9
+ before(:all) do
10
+ @command_class = Limelight::Commands::FreezeCommand
11
+ @command = @command_class.new
12
+ end
13
+
14
+ before(:each) do
15
+ @command = @command_class.new
16
+ @command.instance_eval("def usage(e=nil); raise 'Usage called! ' + e; end;")
17
+ end
18
+
19
+ it "should be listed" do
20
+ Limelight::Commands::LISTING["freeze"].should == @command_class
21
+ end
22
+
23
+ it "should parse no options" do
24
+ @command.parse ["some_gem"]
25
+
26
+ @command.gem_name.should == "some_gem"
27
+ @command.production_path.should == "."
28
+ @command.gem_version.should == nil
29
+ end
30
+
31
+ it "should parse production path option" do
32
+ @command.parse ["-p", "prod/path", "some_gem"]
33
+ @command.gem_name.should == "some_gem"
34
+ @command.production_path.should == "prod/path"
35
+
36
+ @command.parse ["--production=prod/path2", "some_gem"]
37
+ @command.gem_name.should == "some_gem"
38
+ @command.production_path.should == "prod/path2"
39
+ end
40
+
41
+ it "should parse version option" do
42
+ @command.parse ["-v", "1.2.3", "some_gem"]
43
+ @command.gem_name.should == "some_gem"
44
+ @command.gem_version.should == "1.2.3"
45
+
46
+ @command.parse ["--version=3.2.1", "some_gem"]
47
+ @command.gem_name.should == "some_gem"
48
+ @command.gem_version.should == "3.2.1"
49
+ end
50
+
51
+ it "should check if it's a gem file" do
52
+ @command.is_gem_file?("some.gem").should == true
53
+ @command.is_gem_file?("some-java_0.2.1.gem").should == true
54
+ @command.is_gem_file?("/some.gem").should == true
55
+ @command.is_gem_file?("/dir/dir2/some.gem").should == true
56
+ @command.is_gem_file?("../dir/dir2/some.gem").should == true
57
+
58
+ @command.is_gem_file?("some_gem").should == false
59
+ @command.is_gem_file?("some_gem-java.0.3.1").should == false
60
+ end
61
+
62
+ describe "Actual Freezing" do
63
+
64
+ before(:each) do
65
+ @gem_name = 'MicahGem'
66
+ @gem_name_and_version = "#{@gem_name}-1.0"
67
+ @project_dir = 'prod/path'
68
+ stub_limelight_production
69
+ stub_gem_cache
70
+ stub_unpacking_gem
71
+ stub_establishing_gem_dir
72
+ stub_templater
73
+ stub_gem_installer
74
+ FileUtils.stub!(:copy)
75
+ Gem.stub!(:dir).and_return("PATH")
76
+ end
77
+
78
+ it "should create the specifications directory" do
79
+ File.stub!(:exists?).with(path_to_gemspec).and_return(false)
80
+
81
+ @templater.should_receive(:directory).with(File.join("__resources", "gems", "specifications"))
82
+
83
+ @command.run ["-p", @project_dir, @gem_name]
84
+ end
85
+
86
+ it "should copy the spec file from the Gem path" do
87
+ File.stub!(:exists?).with(path_to_gemspec).and_return(true)
88
+
89
+ FileUtils.should_receive(:copy).with(path_to_gemspec,
90
+ File.join(@project_dir, "__resources", "gems", "specifications"))
91
+
92
+ @command.run ["-p", @project_dir, @gem_name]
93
+ end
94
+
95
+ it "should not copy the spec file if there isn't one" do
96
+ File.stub!(:exists?).with(path_to_gemspec).and_return(false)
97
+
98
+ FileUtils.should_not_receive(:copy)
99
+
100
+ @command.run ["-p", @project_dir, @gem_name]
101
+ end
102
+
103
+ def path_to_gemspec
104
+ return File.join(Gem.dir, "specifications", "#{@gem_name_and_version}.gemspec")
105
+ end
106
+
107
+ def stub_limelight_production
108
+ require 'limelight/util'
109
+
110
+ Limelight::Util.stub!(:is_limelight_production?).and_return(true)
111
+ Limelight::Util.stub!(:is_limelight_scene?).and_return(true)
112
+ end
113
+
114
+ def stub_unpacking_gem
115
+ require 'rubygems/commands/unpack_command'
116
+
117
+ unpack_command = mock(Gem::Commands::UnpackCommand, :get_path => "#{@gem_name_and_version}.gem")
118
+ Gem::Commands::UnpackCommand.stub!(:new).and_return(unpack_command)
119
+ File.stub!(:exists?).with("#{@gem_name_and_version}.gem").and_return(true)
120
+ end
121
+
122
+ def stub_gem_cache
123
+ mock_gem = mock(Gem, :version => mock("Version", :version => "1.0", :to_s => "1.0"), :name => @gem_name, :require_paths => nil)
124
+ Gem.stub!(:cache).and_return(mock("Cache", :find_name => [mock_gem]))
125
+ end
126
+
127
+ def stub_establishing_gem_dir
128
+ File.stub!(:exists?).with(File.join(@project_dir, "__resources", "gems", "gems", @gem_name_and_version)).and_return(false)
129
+ end
130
+
131
+ def stub_templater
132
+ require 'limelight/templates/templater'
133
+
134
+ logger = mock("Logger", :log => nil)
135
+ @templater = mock("Templater", :file => nil, :directory => nil, :logger => logger)
136
+ Limelight::Templates::Templater.stub!(:new).and_return(@templater)
137
+ end
138
+
139
+ def stub_gem_installer
140
+ Gem::Installer.stub!(:new).and_return(mock(Gem::Installer, :unpack => nil))
141
+ end
142
+ end
143
+ end
@@ -0,0 +1,42 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
5
+ require 'limelight/commands/help_command'
6
+
7
+ describe Limelight::Commands::HelpCommand do
8
+
9
+ before(:all) do
10
+ @command_class = Limelight::Commands::HelpCommand
11
+ @command = @command_class.new
12
+ Limelight::Commands["help"] #load listing
13
+ end
14
+
15
+ before(:each) do
16
+ @mock_output = StringIO.new
17
+ Limelight::Commands.output = @mock_output
18
+ end
19
+
20
+ it "should be listed" do
21
+ Limelight::Commands["help"].should == @command_class
22
+ end
23
+
24
+ it "should print all commands not starting in --" do
25
+ @command.run([])
26
+
27
+ Limelight::Commands::LISTING.keys.each do |key|
28
+ if key[0...1] == "-"
29
+ @mock_output.string.include?("\t#{key}").should == false
30
+ else
31
+ @mock_output.string.include?("\t#{key}").should == true
32
+ end
33
+ end
34
+ end
35
+
36
+ it "should include options in the header" do
37
+ @command.run([])
38
+
39
+ @mock_output.string.include?("[--version]").should == true
40
+ end
41
+
42
+ end
@@ -0,0 +1,52 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
5
+ require 'limelight/commands/open_command'
6
+ require 'limelight/producer'
7
+
8
+ describe Limelight::Commands::OpenCommand do
9
+
10
+ before(:all) do
11
+ @command_class = Limelight::Commands::OpenCommand
12
+ @command = @command_class.new
13
+ end
14
+
15
+ it "should be listed" do
16
+ Limelight::Commands::LISTING["open"].should == @command_class
17
+ end
18
+
19
+ it "should open a production" do
20
+ Limelight::Main.should_receive(:initialize_context)
21
+ Limelight::Studio.should_receive(:open).with("production_name")
22
+
23
+ @command.run(["production_name"])
24
+ end
25
+
26
+ it "should open the default production" do
27
+ Limelight::Main.should_receive(:initialize_context)
28
+ Limelight::Studio.should_receive(:open).with(@command_class::DEFAULT_PRODUCTION)
29
+
30
+ @command.run([])
31
+ end
32
+
33
+ it "should parse drp_port option" do
34
+ @command.parse ["production_path"]
35
+ @command.drb_port.should == nil
36
+
37
+ @command.parse ["-d", "1234", "some_prod"]
38
+ @command.drb_port.should == "1234"
39
+
40
+ @command.parse ["--drb_port=4321", "some_prod"]
41
+ @command.drb_port.should == "4321"
42
+ end
43
+
44
+ it "should start the studio on drb" do
45
+ Limelight::Main.should_receive(:initialize_context)
46
+ Limelight::Studio.should_receive(:publish_on_drb).with(1234)
47
+ Limelight::Studio.should_receive(:open).with("some_prod")
48
+
49
+ @command.run ["-d", "1234", "some_prod"]
50
+ end
51
+
52
+ end