limelight 0.2.1-java → 0.3.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.
- data/bin/ll.bat +1 -1
- data/lib/i4jruntime.jar +0 -0
- data/lib/junit-4.4.jar +0 -0
- data/lib/limelight.jar +0 -0
- data/lib/limelight/animation.rb +3 -3
- data/lib/limelight/builtin/players.rb +2 -1
- data/lib/limelight/builtin/players/combo_box.rb +8 -2
- data/lib/limelight/builtin/players/image.rb +47 -0
- data/lib/limelight/builtin/styles.rb +1 -1
- data/lib/limelight/casting_director.rb +70 -39
- data/lib/limelight/commands/command.rb +150 -0
- data/lib/limelight/commands/create_command.rb +79 -0
- data/lib/limelight/commands/freeze_command.rb +113 -0
- data/lib/limelight/commands/open_command.rb +49 -0
- data/lib/limelight/commands/pack_command.rb +45 -0
- data/lib/limelight/dsl/build_exception.rb +51 -0
- data/lib/limelight/dsl/menu_bar.rb +71 -0
- data/lib/limelight/dsl/production_builder.rb +71 -0
- data/lib/limelight/dsl/prop_builder.rb +155 -0
- data/lib/limelight/dsl/stage_builder.rb +105 -0
- data/lib/limelight/dsl/styles_builder.rb +134 -0
- data/lib/limelight/file_loader.rb +46 -0
- data/lib/limelight/gems.rb +45 -0
- data/lib/limelight/java_couplings.rb +7 -2
- data/lib/limelight/java_util.rb +2 -15
- data/lib/limelight/main.rb +7 -5
- data/lib/limelight/producer.rb +87 -66
- data/lib/limelight/production.rb +42 -4
- data/lib/limelight/prop.rb +84 -70
- data/lib/limelight/scene.rb +75 -20
- data/lib/limelight/specs/spec_helper.rb +58 -0
- data/lib/limelight/stage.rb +11 -6
- data/lib/limelight/string.rb +35 -0
- data/lib/limelight/studio.rb +29 -0
- data/lib/limelight/templates/production_templater.rb +42 -0
- data/lib/limelight/templates/scene_templater.rb +41 -0
- data/lib/limelight/templates/sources/freezing/limelight_init.rb.template +5 -0
- data/lib/limelight/templates/sources/production/init.rb.template +15 -0
- data/lib/limelight/templates/sources/production/production.rb.template +9 -0
- data/lib/limelight/templates/sources/production/stages.rb.template +17 -0
- data/lib/limelight/templates/sources/production/styles.rb.template +12 -0
- data/lib/limelight/templates/sources/scene/props.rb.template +6 -0
- data/lib/limelight/templates/sources/scene/styles.rb.template +18 -0
- data/lib/limelight/templates/templater.rb +128 -0
- data/lib/limelight/templates/templater_logger.rb +36 -0
- data/lib/limelight/theater.rb +21 -7
- data/lib/limelight/util.rb +22 -6
- data/lib/limelight/version.rb +2 -2
- data/productions/examples/8thlight.com/styles.rb +1 -1
- data/productions/examples/langstons_ant/html_javascript/ant.html +1 -1
- data/productions/examples/langstons_ant/init.rb +1 -0
- data/productions/examples/langstons_ant/players/log.rb +2 -2
- data/productions/examples/langstons_ant/players/world.rb +0 -26
- data/productions/examples/sandbox.llp +0 -0
- data/productions/examples/sandbox/click_me/players/chromaton.rb +10 -4
- data/productions/examples/sandbox/floaters/players/floater.rb +4 -2
- data/productions/examples/sandbox/gradients/players/spinner.rb +5 -1
- data/productions/examples/sandbox/gradients/players/teaser.rb +2 -2
- data/productions/examples/sandbox/gradients/players/wave.rb +2 -2
- data/productions/examples/sandbox/gradients/players/waves.rb +2 -2
- data/productions/examples/sandbox/header.rb +1 -0
- data/productions/examples/sandbox/images/logo.png +0 -0
- data/productions/examples/sandbox/images_scene/props.rb +25 -0
- data/productions/examples/sandbox/images_scene/styles.rb +30 -0
- data/productions/examples/sandbox/inputs/styles.rb +1 -1
- data/productions/examples/sandbox/scrolling/props.rb +12 -12
- data/productions/examples/sandbox/teaser/players/fader.rb +2 -8
- data/productions/stage_composer/inspector/styles.rb +2 -2
- data/productions/startup/styles.rb +2 -2
- data/spec/builtin/players/button_spec.rb +0 -1
- data/spec/builtin/players/image_spec.rb +41 -0
- data/spec/casting_director_spec.rb +114 -44
- data/spec/commands/command_spec.rb +18 -0
- data/spec/commands/create_command_spec.rb +74 -0
- data/spec/commands/freeze_command_spec.rb +59 -0
- data/spec/commands/open_command_spec.rb +30 -0
- data/spec/commands/pack_command_spec.rb +23 -0
- data/spec/dsl/production_builder_spec.rb +46 -0
- data/spec/{prop_builder_spec.rb → dsl/prop_builder_spec.rb} +80 -24
- data/spec/{stage_builder_spec.rb → dsl/stage_builder_spec.rb} +4 -4
- data/spec/{styles_builder_spec.rb → dsl/styles_builder_spec.rb} +6 -6
- data/spec/{loaders/file_loader_spec.rb → file_loader_spec.rb} +4 -4
- data/spec/gems_spec.rb +83 -0
- data/spec/java_util_spec.rb +1 -17
- data/spec/main_spec.rb +17 -0
- data/spec/producer_spec.rb +89 -79
- data/spec/production_spec.rb +28 -3
- data/spec/prop_spec.rb +82 -16
- data/spec/scene_spec.rb +73 -3
- data/spec/spec_helper.rb +37 -1
- data/spec/stage_spec.rb +10 -1
- data/spec/string_spec.rb +35 -0
- data/spec/studio_spec.rb +14 -0
- data/spec/styles_spec.rb +14 -0
- data/spec/templates/production_templater_spec.rb +44 -0
- data/spec/templates/scene_templater_spec.rb +25 -0
- data/spec/templates/templater_logger_spec.rb +38 -0
- data/spec/templates/templater_spec.rb +104 -0
- data/spec/theater_spec.rb +12 -21
- metadata +75 -23
- data/bin/icons/splash.png +0 -0
- data/lib/limelight/build_exception.rb +0 -48
- data/lib/limelight/commands.rb +0 -52
- data/lib/limelight/loaders/file_scene_loader.rb +0 -49
- data/lib/limelight/menu_bar.rb +0 -68
- data/lib/limelight/production_builder.rb +0 -66
- data/lib/limelight/prop_builder.rb +0 -119
- data/lib/limelight/stage_builder.rb +0 -103
- data/lib/limelight/styles_builder.rb +0 -131
- data/spec/commands_spec.rb +0 -34
- data/spec/production_builder_spec.rb +0 -48
data/spec/scene_spec.rb
CHANGED
|
@@ -10,8 +10,9 @@ describe Limelight::Scene do
|
|
|
10
10
|
@casting_director = make_mock("casting_director", :fill_cast => nil)
|
|
11
11
|
@scene = Limelight::Scene.new(:casting_director => @casting_director)
|
|
12
12
|
end
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
it "should have a styles hash" do
|
|
15
|
+
@scene.illuminate
|
|
15
16
|
@scene.styles.should_not == nil
|
|
16
17
|
@scene.styles.size.should == 0
|
|
17
18
|
end
|
|
@@ -20,10 +21,11 @@ describe Limelight::Scene do
|
|
|
20
21
|
@scene.button_groups.should_not == nil
|
|
21
22
|
@scene.button_groups.class.should == Limelight::UI::ButtonGroupCache
|
|
22
23
|
end
|
|
23
|
-
|
|
24
|
+
|
|
24
25
|
it "should pullout sytles and casting_director from options" do
|
|
25
26
|
scene = Limelight::Scene.new(:styles => "styles", :casting_director => @casting_director)
|
|
26
|
-
|
|
27
|
+
scene.illuminate
|
|
28
|
+
|
|
27
29
|
scene.styles.should == "styles"
|
|
28
30
|
scene.casting_director.should == @casting_director
|
|
29
31
|
end
|
|
@@ -31,4 +33,72 @@ describe Limelight::Scene do
|
|
|
31
33
|
it "should have opened event" do
|
|
32
34
|
@scene.should respond_to(:scene_opened)
|
|
33
35
|
end
|
|
36
|
+
|
|
37
|
+
it "should have a cast" do
|
|
38
|
+
@scene.cast.should_not == nil
|
|
39
|
+
@scene.cast.is_a?(Module).should == true
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "should have a cast" do
|
|
43
|
+
@scene.cast.should_not == nil
|
|
44
|
+
@scene.cast.is_a?(Module).should == true
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "should have an acceptible path when none is provided" do
|
|
48
|
+
Limelight::Scene.new().path.should == File.expand_path("")
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
describe Limelight::Scene, "paths" do
|
|
52
|
+
|
|
53
|
+
before(:each) do
|
|
54
|
+
@scene = Limelight::Scene.new(:path => "/tmp")
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "should know it's props file" do
|
|
58
|
+
@scene.props_file.should == "/tmp/props.rb"
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "should know it's styles file" do
|
|
62
|
+
@scene.styles_file.should == "/tmp/styles.rb"
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
describe Limelight::Scene, "Prop Indexing" do
|
|
68
|
+
|
|
69
|
+
before(:each) do
|
|
70
|
+
@scene.illuminate
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "should index props" do
|
|
74
|
+
prop = Limelight::Prop.new(:id => "some_id")
|
|
75
|
+
@scene << prop
|
|
76
|
+
|
|
77
|
+
@scene.find("some_id").should == prop
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
it "should raise error if indexing prop with duplicate id" do
|
|
81
|
+
prop1 = Limelight::Prop.new(:id => "some_id")
|
|
82
|
+
prop2 = Limelight::Prop.new(:id => "some_id")
|
|
83
|
+
@scene << prop1
|
|
84
|
+
|
|
85
|
+
lambda { @scene << prop2 }.should raise_error(Limelight::LimelightException, "Duplicate id: some_id")
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it "should unindex prop" do
|
|
89
|
+
prop = Limelight::Prop.new(:id => "some_id")
|
|
90
|
+
@scene << prop
|
|
91
|
+
@scene.unindex_prop(prop)
|
|
92
|
+
|
|
93
|
+
@scene.find("some_id").should == nil
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "should convert ids to string when finding" do
|
|
97
|
+
prop = Limelight::Prop.new(:id => 123)
|
|
98
|
+
@scene << prop
|
|
99
|
+
|
|
100
|
+
@scene.find(123).should == prop
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
34
104
|
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -6,7 +6,7 @@ require File.expand_path(File.dirname(__FILE__) + "/../lib/init")
|
|
|
6
6
|
require 'spec'
|
|
7
7
|
|
|
8
8
|
context = Limelight::Context.instance
|
|
9
|
-
context.frameManager = Java::limelight.ui.model.
|
|
9
|
+
context.frameManager = Java::limelight.ui.model.AlertFrameManager.new
|
|
10
10
|
|
|
11
11
|
def make_mock(name, stubs = {})
|
|
12
12
|
the_mock = mock(name)
|
|
@@ -19,3 +19,39 @@ class Object
|
|
|
19
19
|
stubs.each_pair { |key, value| self.stub!(key).and_return(value) }
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
require 'fileutils'
|
|
25
|
+
class TestDir
|
|
26
|
+
|
|
27
|
+
class << self
|
|
28
|
+
|
|
29
|
+
def root
|
|
30
|
+
@root = File.expand_path(File.dirname(__FILE__) + "/../etc/tmp") if @filename.nil?
|
|
31
|
+
return @root
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def path(path)
|
|
35
|
+
return File.join(root, path)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def clean
|
|
39
|
+
Dir.entries(root).each do |file|
|
|
40
|
+
FileUtils.rm_r(File.join(root, file), :force => true) unless (file == '.' || file == '..')
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def create_file(path, content)
|
|
45
|
+
filename = self.path(path)
|
|
46
|
+
establish_dir(File.dirname(filename))
|
|
47
|
+
File.open(filename, 'w') { |file| file.write content }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def establish_dir(path)
|
|
51
|
+
if !File.exists?(path)
|
|
52
|
+
establish_dir(File.dirname(path))
|
|
53
|
+
Dir.mkdir(path)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
data/spec/stage_spec.rb
CHANGED
|
@@ -46,7 +46,7 @@ describe Limelight::Stage do
|
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
it "should call scene.scene_opened at the end of opening a scene" do
|
|
49
|
-
scene = make_mock("scene", :visible= => nil)
|
|
49
|
+
scene = make_mock("scene", :visible= => nil, :illuminate => nil)
|
|
50
50
|
scene.should_receive(:scene_opened)
|
|
51
51
|
|
|
52
52
|
@__stage__.frame.stub!(:open)
|
|
@@ -54,4 +54,13 @@ describe Limelight::Stage do
|
|
|
54
54
|
@__stage__.open(scene)
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
+
it "should illuminate the scene when opening it" do
|
|
58
|
+
scene = make_mock("scene", :visible= => nil, :scene_opened => nil)
|
|
59
|
+
scene.should_receive(:illuminate)
|
|
60
|
+
|
|
61
|
+
@__stage__.frame.stub!(:open)
|
|
62
|
+
@__stage__.stub!(:load_scene)
|
|
63
|
+
@__stage__.open(scene)
|
|
64
|
+
end
|
|
65
|
+
|
|
57
66
|
end
|
data/spec/string_spec.rb
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/spec_helper")
|
|
2
|
+
require 'limelight/string'
|
|
3
|
+
|
|
4
|
+
describe String do
|
|
5
|
+
|
|
6
|
+
it "should convert into camel case" do
|
|
7
|
+
"class_name".camalized.should == "ClassName"
|
|
8
|
+
"once_upon_a_time".camalized.should == "OnceUponATime"
|
|
9
|
+
"AbC_eFg_hiJ".camalized.should == "AbcEfgHij"
|
|
10
|
+
"with spaces".camalized.should == "WithSpaces"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should convert into camel case" do
|
|
14
|
+
"class_name".camalized(:lower).should == "className"
|
|
15
|
+
"once_upon_a_time".camalized(:lower).should == "onceUponATime"
|
|
16
|
+
"AbC_eFg_hiJ".camalized(:lower).should == "abcEfgHij"
|
|
17
|
+
"with spaces".camalized(:lower).should == "withSpaces"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should underscore a name" do
|
|
21
|
+
"ClassName".underscored.should == "class_name"
|
|
22
|
+
"OneTwoThree".underscored.should == "one_two_three"
|
|
23
|
+
"One".underscored.should == "one"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should convert a string to title" do
|
|
27
|
+
"class_name".titleized.should == "Class Name"
|
|
28
|
+
"once_upon_a_time".titleized.should == "Once Upon A Time"
|
|
29
|
+
"AbC_eFg_hiJ".titleized.should == "Ab C E Fg Hi J"
|
|
30
|
+
"with spaces".titleized.should == "With Spaces"
|
|
31
|
+
"Some Title".titleized.should == "Some Title"
|
|
32
|
+
"SomeTitle".titleized.should == "Some Title"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
data/spec/studio_spec.rb
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/spec_helper")
|
|
2
|
+
require 'limelight/studio'
|
|
3
|
+
|
|
4
|
+
describe Limelight::Studio do
|
|
5
|
+
|
|
6
|
+
it "should install itsself" do
|
|
7
|
+
Limelight::Studio.install
|
|
8
|
+
|
|
9
|
+
studio = Limelight::Studio.instance
|
|
10
|
+
Limelight::Context.instance.studio.should == studio
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
end
|
data/spec/styles_spec.rb
CHANGED
|
@@ -32,5 +32,19 @@ describe Limelight::Styles do
|
|
|
32
32
|
# end
|
|
33
33
|
# end
|
|
34
34
|
|
|
35
|
+
# it "should generate code" do
|
|
36
|
+
# Limelight::Styles::Style::STYLE_LIST.each do |descriptor|
|
|
37
|
+
# const_name = const_format(descriptor.name)
|
|
38
|
+
# method_name = method_format(descriptor.name)
|
|
39
|
+
# spaces = 40 - const_name.length
|
|
40
|
+
# puts "<tr>"
|
|
41
|
+
# puts "\t<td>'''#{method_name}'''</td>"
|
|
42
|
+
# puts "\t<td></td>"
|
|
43
|
+
# puts "\t<td>#{descriptor.defaultValue}</td>"
|
|
44
|
+
# puts "\t<td></td>"
|
|
45
|
+
# puts "</tr>"
|
|
46
|
+
# end
|
|
47
|
+
# end
|
|
48
|
+
|
|
35
49
|
|
|
36
50
|
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
|
2
|
+
require 'limelight/templates/production_templater'
|
|
3
|
+
|
|
4
|
+
describe Limelight::Templates::ProductionTemplater do
|
|
5
|
+
|
|
6
|
+
it "should initialize settings" do
|
|
7
|
+
templater = Limelight::Templates::ProductionTemplater.new("some_production", "default_scene")
|
|
8
|
+
|
|
9
|
+
templater.target_root.should == "."
|
|
10
|
+
templater.source_root.should == Limelight::Templates::Templater.source_dir
|
|
11
|
+
templater.tokens[:PRODUCTION_NAME].should == "Some Production"
|
|
12
|
+
templater.tokens[:DEFAULT_SCENE_NAME].should == "default_scene"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should initialize settings for deep dir name" do
|
|
16
|
+
templater = Limelight::Templates::ProductionTemplater.new("dir1/dir2/some_production", "default_scene")
|
|
17
|
+
|
|
18
|
+
templater.target_root.should == "./dir1/dir2"
|
|
19
|
+
templater.source_root.should == Limelight::Templates::Templater.source_dir
|
|
20
|
+
templater.tokens[:PRODUCTION_NAME].should == "Some Production"
|
|
21
|
+
templater.tokens[:DEFAULT_SCENE_NAME].should == "default_scene"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should initialize settings for root path" do
|
|
25
|
+
templater = Limelight::Templates::ProductionTemplater.new("/some_production", "default_scene")
|
|
26
|
+
|
|
27
|
+
templater.target_root.should == "/"
|
|
28
|
+
templater.source_root.should == Limelight::Templates::Templater.source_dir
|
|
29
|
+
templater.tokens[:PRODUCTION_NAME].should == "Some Production"
|
|
30
|
+
templater.tokens[:DEFAULT_SCENE_NAME].should == "default_scene"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should generate files" do
|
|
34
|
+
templater = Limelight::Templates::ProductionTemplater.new("some_production", "default_scene")
|
|
35
|
+
|
|
36
|
+
templater.should_receive(:file).with("some_production/production.rb", "production/production.rb.template", templater.tokens)
|
|
37
|
+
templater.should_receive(:file).with("some_production/init.rb", "production/init.rb.template", templater.tokens)
|
|
38
|
+
templater.should_receive(:file).with("some_production/stages.rb", "production/stages.rb.template", templater.tokens)
|
|
39
|
+
templater.should_receive(:file).with("some_production/styles.rb", "production/styles.rb.template", templater.tokens)
|
|
40
|
+
|
|
41
|
+
templater.generate
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
|
2
|
+
require 'limelight/templates/scene_templater'
|
|
3
|
+
|
|
4
|
+
describe Limelight::Templates::SceneTemplater do
|
|
5
|
+
|
|
6
|
+
it "should initialize" do
|
|
7
|
+
templater = Limelight::Templates::SceneTemplater.new("prod/some_scene")
|
|
8
|
+
|
|
9
|
+
templater.target_root.should == "./prod"
|
|
10
|
+
templater.source_root.should == Limelight::Templates::Templater.source_dir
|
|
11
|
+
templater.tokens[:SCENE_NAME].should == "some_scene"
|
|
12
|
+
templater.tokens[:SCENE_TITLE].should == "Some Scene"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should generate files" do
|
|
16
|
+
templater = Limelight::Templates::SceneTemplater.new("prod/some_scene")
|
|
17
|
+
|
|
18
|
+
templater.should_receive(:file).with("some_scene/props.rb", "scene/props.rb.template", templater.tokens)
|
|
19
|
+
templater.should_receive(:file).with("some_scene/styles.rb", "scene/styles.rb.template", templater.tokens)
|
|
20
|
+
templater.should_receive(:directory).with("some_scene/players")
|
|
21
|
+
|
|
22
|
+
templater.generate
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
|
2
|
+
require 'limelight/templates/templater_logger'
|
|
3
|
+
|
|
4
|
+
describe Limelight::Templates::TemplaterLogger do
|
|
5
|
+
|
|
6
|
+
before(:each) do
|
|
7
|
+
@logger = Limelight::Templates::TemplaterLogger.new
|
|
8
|
+
@in, @out = IO.pipe
|
|
9
|
+
@logger.output = @out
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should have standard out as output" do
|
|
13
|
+
@logger = Limelight::Templates::TemplaterLogger.new
|
|
14
|
+
@logger.output.should == STDOUT
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should handle creating directories" do
|
|
18
|
+
@logger.creating_directory("dir1")
|
|
19
|
+
|
|
20
|
+
result = @in.readline
|
|
21
|
+
result.strip.should == "creating directory: dir1"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should handle creating files" do
|
|
25
|
+
@logger.creating_file("file1")
|
|
26
|
+
|
|
27
|
+
result = @in.readline
|
|
28
|
+
result.strip.should == "creating file: file1"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should handle file already exists" do
|
|
32
|
+
@logger.file_already_exists("file1")
|
|
33
|
+
|
|
34
|
+
result = @in.readline
|
|
35
|
+
result.strip.should == "file already exists: file1"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
|
2
|
+
require 'limelight/templates/templater'
|
|
3
|
+
|
|
4
|
+
describe Limelight::Templates::Templater do
|
|
5
|
+
|
|
6
|
+
before(:each) do
|
|
7
|
+
TestDir.clean
|
|
8
|
+
@src_dir = File.join(TestDir.root, "src")
|
|
9
|
+
@logger = make_mock("logger")
|
|
10
|
+
@templater = Limelight::Templates::Templater.new(TestDir.root, @src_dir)
|
|
11
|
+
@templater.logger = @logger
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should have a templater logger" do
|
|
15
|
+
@templater = Limelight::Templates::Templater.new(TestDir.root, @src_dir)
|
|
16
|
+
@templater.logger.should_not == nil
|
|
17
|
+
@templater.logger.class.should == Limelight::Templates::TemplaterLogger
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should have a target root and source root directory" do
|
|
21
|
+
@templater.target_root.should == TestDir.root
|
|
22
|
+
@templater.source_root.should == @src_dir
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should prefix target root with dot if not absolute" do
|
|
26
|
+
Limelight::Templates::Templater.clarify("blah").should == "./blah"
|
|
27
|
+
Limelight::Templates::Templater.clarify("one/two").should == "./one/two"
|
|
28
|
+
Limelight::Templates::Templater.clarify("/root").should == "/root"
|
|
29
|
+
Limelight::Templates::Templater.clarify("./blah").should == "./blah"
|
|
30
|
+
Limelight::Templates::Templater.clarify("../blah").should == "../blah"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should create a directory" do
|
|
34
|
+
@logger.should_receive(:creating_directory).with("#{TestDir.root}/blah")
|
|
35
|
+
|
|
36
|
+
@templater.directory "blah"
|
|
37
|
+
|
|
38
|
+
File.exists?(File.join(TestDir.root, "blah")).should == true
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "should create nested directories" do
|
|
42
|
+
@logger.should_receive(:creating_directory).with("#{TestDir.root}/dir1")
|
|
43
|
+
@logger.should_receive(:creating_directory).with("#{TestDir.root}/dir1/dir2")
|
|
44
|
+
|
|
45
|
+
@templater.directory "dir1/dir2"
|
|
46
|
+
|
|
47
|
+
File.exists?(File.join(TestDir.root, "dir1/dir2")).should == true
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "should create files from source" do
|
|
51
|
+
TestDir.create_file("src/file1.txt", "blah")
|
|
52
|
+
@logger.should_receive(:creating_file).with("#{TestDir.root}/f1.txt")
|
|
53
|
+
|
|
54
|
+
@templater.file "f1.txt", "file1.txt"
|
|
55
|
+
|
|
56
|
+
File.exists?(File.join(TestDir.root, "f1.txt")).should == true
|
|
57
|
+
IO.read(File.join(TestDir.root, "f1.txt")).should == "blah"
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "should create files nested in directories" do
|
|
61
|
+
TestDir.create_file("src/file1.txt", "blah")
|
|
62
|
+
|
|
63
|
+
@logger.should_receive(:creating_directory).with("#{TestDir.root}/dir1")
|
|
64
|
+
@logger.should_receive(:creating_file).with("#{TestDir.root}/dir1/f1.txt")
|
|
65
|
+
|
|
66
|
+
@templater.file "dir1/f1.txt", "file1.txt"
|
|
67
|
+
|
|
68
|
+
path = File.join(TestDir.root, "dir1", "f1.txt")
|
|
69
|
+
File.exists?(path).should == true
|
|
70
|
+
IO.read(path).should == "blah"
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "should skip files that already exist" do
|
|
74
|
+
TestDir.create_file("src/file1.txt", "blah")
|
|
75
|
+
TestDir.create_file("f1.txt", "existing content")
|
|
76
|
+
|
|
77
|
+
@logger.should_receive(:file_already_exists).with("#{TestDir.root}/f1.txt")
|
|
78
|
+
|
|
79
|
+
@templater.file "f1.txt", "file1.txt"
|
|
80
|
+
|
|
81
|
+
IO.read(File.join(TestDir.root, "f1.txt")).should == "existing content"
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "should replace one token in files" do
|
|
85
|
+
TestDir.create_file("src/file1.txt", "abc !-TOKEN1-! 123")
|
|
86
|
+
@logger.should_receive(:creating_file).with("#{TestDir.root}/f1.txt")
|
|
87
|
+
|
|
88
|
+
@templater.file "f1.txt", "file1.txt", :TOKEN1 => "you know me"
|
|
89
|
+
|
|
90
|
+
File.exists?(File.join(TestDir.root, "f1.txt")).should == true
|
|
91
|
+
IO.read(File.join(TestDir.root, "f1.txt")).should == "abc you know me 123"
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
it "should replace multiple tokens in files" do
|
|
95
|
+
TestDir.create_file("src/file1.txt", "!-TOKEN0-! !-TOKEN1-! !-TOKEN2-!")
|
|
96
|
+
@logger.should_receive(:creating_file).with("#{TestDir.root}/f1.txt")
|
|
97
|
+
|
|
98
|
+
@templater.file "f1.txt", "file1.txt", :TOKEN0 => "1", :TOKEN1 => "2", :TOKEN2 => "3"
|
|
99
|
+
|
|
100
|
+
File.exists?(File.join(TestDir.root, "f1.txt")).should == true
|
|
101
|
+
IO.read(File.join(TestDir.root, "f1.txt")).should == "1 2 3"
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
end
|