codersdojo 0.9.10 → 0.9.11
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/app/argument_parser.rb +5 -1
- data/app/codersdojo.rb +8 -3
- data/app/console_view.rb +6 -2
- data/app/controller.rb +7 -8
- data/app/scaffolder.rb +59 -0
- data/app/shell_argument_exception.rb +3 -0
- data/app/shell_wrapper.rb +16 -28
- data/app/text_template_machine.rb +26 -0
- data/spec/scaffolder_spec.rb +54 -0
- data/spec/state_reader_spec.rb +4 -4
- data/spec/text_template_machine_spec.rb +40 -0
- data/templates/any/README +5 -5
- data/templates/any/run-endless.sh +1 -2
- data/templates/any/run-once.sh +1 -1
- data/templates/clojure.is-test/README +6 -8
- data/templates/clojure.is-test/lib/place_your_libs_here +0 -0
- data/templates/clojure.is-test/run-endless.sh +2 -1
- data/templates/clojure.is-test/run-once.sh +1 -2
- data/templates/java.junit/README +7 -11
- data/templates/java.junit/run-endless.sh +1 -1
- data/templates/java.junit/run-once.sh +3 -3
- data/templates/python.unittest/README +6 -6
- data/templates/python.unittest/run-endless.sh +1 -0
- data/templates/python.unittest/run-once.sh +1 -0
- data/templates/ruby.test-unit/README +7 -4
- data/templates/ruby.test-unit/run-endless.sh +1 -0
- data/templates/ruby.test-unit/run-once.sh +1 -0
- metadata +15 -5
- data/templates/clojure.is-test/lib/clojure-contrib.jar +0 -0
- data/templates/javascript.jspec/README +0 -8
data/app/argument_parser.rb
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
require 'session_id_generator'
|
2
|
+
require 'runner'
|
3
|
+
require 'shell_argument_exception'
|
4
|
+
|
1
5
|
class ArgumentParser
|
2
6
|
|
3
7
|
def initialize controller
|
@@ -18,7 +22,7 @@ class ArgumentParser
|
|
18
22
|
elsif command.downcase == "spec" then
|
19
23
|
# 'spec" is for testing purpose only: do nothing special
|
20
24
|
else
|
21
|
-
raise
|
25
|
+
raise ShellArgumentException
|
22
26
|
end
|
23
27
|
end
|
24
28
|
|
data/app/codersdojo.rb
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
require 'console_view'
|
4
4
|
require 'controller'
|
5
5
|
require 'argument_parser'
|
6
|
+
require 'scaffolder'
|
6
7
|
|
7
8
|
def called_from_spec args
|
8
9
|
args[0] == "spec"
|
@@ -10,14 +11,18 @@ end
|
|
10
11
|
|
11
12
|
# entry from shell
|
12
13
|
if not called_from_spec(ARGV) then
|
13
|
-
view = ConsoleView.new
|
14
14
|
hostname = "http://www.codersdojo.com"
|
15
15
|
# hostname = "http://localhost:3000"
|
16
|
-
|
16
|
+
|
17
|
+
shell = ShellWrapper.new
|
18
|
+
scaffolder = Scaffolder.new shell
|
19
|
+
view = ConsoleView.new scaffolder
|
20
|
+
controller = Controller.new shell, view, scaffolder, hostname
|
21
|
+
|
17
22
|
begin
|
18
23
|
arg_parser = ArgumentParser.new controller
|
19
24
|
command = arg_parser.parse ARGV
|
20
|
-
rescue
|
25
|
+
rescue ShellArgumentException
|
21
26
|
controller.help
|
22
27
|
end
|
23
28
|
end
|
data/app/console_view.rb
CHANGED
@@ -4,6 +4,10 @@ class ConsoleView
|
|
4
4
|
|
5
5
|
@@VERSION = '0.9'
|
6
6
|
|
7
|
+
def initialize scaffolder
|
8
|
+
@scaffolder = scaffolder
|
9
|
+
end
|
10
|
+
|
7
11
|
def show_help
|
8
12
|
puts <<-helptext
|
9
13
|
Personal CodersDojo, Version #{@@VERSION}, http://www.codersdojo.com, Copyright by it-agile GmbH (http://www.it-agile.de)
|
@@ -39,7 +43,7 @@ helptext
|
|
39
43
|
end
|
40
44
|
|
41
45
|
def show_help_setup
|
42
|
-
templates =
|
46
|
+
templates = @scaffolder.list_templates
|
43
47
|
puts <<-helptext
|
44
48
|
|
45
49
|
setup <framework> <kata_file_no_ext> Setup the environment for the kata for the given framework and kata file.
|
@@ -64,7 +68,7 @@ helptext
|
|
64
68
|
end
|
65
69
|
|
66
70
|
def show_help_upload
|
67
|
-
templates =
|
71
|
+
templates = @scaffolder.list_templates
|
68
72
|
puts <<-helptext
|
69
73
|
|
70
74
|
upload <framework> <session_directory> Upload the kata written with <framework> in <session_directory> to codersdojo.com.
|
data/app/controller.rb
CHANGED
@@ -1,7 +1,11 @@
|
|
1
|
+
require 'scheduler'
|
2
|
+
|
1
3
|
class Controller
|
2
4
|
|
3
|
-
def initialize view, hostname
|
5
|
+
def initialize shell, view, scaffolder, hostname
|
6
|
+
@shell = shell
|
4
7
|
@view = view
|
8
|
+
@scaffolder = scaffolder
|
5
9
|
@hostname = hostname
|
6
10
|
end
|
7
11
|
|
@@ -14,13 +18,8 @@ class Controller
|
|
14
18
|
end
|
15
19
|
|
16
20
|
def generate framework, kata_file
|
17
|
-
|
18
|
-
shell.
|
19
|
-
generator_text = IO.readlines("README").to_s;
|
20
|
-
generator_text = generator_text.gsub('#{kata_file}', kata_file)
|
21
|
-
generator_text = generator_text.gsub('#{$0}', $0)
|
22
|
-
generator_text = shell.make_os_specific generator_text
|
23
|
-
puts "\n" + generator_text
|
21
|
+
@scaffolder.scaffold framework, kata_file
|
22
|
+
puts "\n" + @shell.read_file("README")
|
24
23
|
end
|
25
24
|
|
26
25
|
def start command, file
|
data/app/scaffolder.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'text_template_machine'
|
2
|
+
|
3
|
+
class Scaffolder
|
4
|
+
|
5
|
+
ANY_TEMPLATE = "any"
|
6
|
+
|
7
|
+
def initialize shell
|
8
|
+
@shell = shell
|
9
|
+
@template_machine = create_template_machine
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_template_machine
|
13
|
+
template_machine = TextTemplateMachine.new @shell
|
14
|
+
template_machine.placeholder_values = {
|
15
|
+
'sh' => @shell.shell_extension,
|
16
|
+
':' => @shell.path_separator,
|
17
|
+
'rm' => @shell.remove_command_name
|
18
|
+
}
|
19
|
+
template_machine
|
20
|
+
end
|
21
|
+
|
22
|
+
def list_templates
|
23
|
+
templates = @shell.real_dir_entries template_path
|
24
|
+
templates.delete ANY_TEMPLATE
|
25
|
+
templates.join(', ')
|
26
|
+
end
|
27
|
+
|
28
|
+
def scaffold template, kata_file
|
29
|
+
@template_machine.placeholder_values['kata_file'] = kata_file
|
30
|
+
begin
|
31
|
+
dir_path = "#{template_path}/#{template}"
|
32
|
+
to_copy = @shell.real_dir_entries dir_path
|
33
|
+
rescue
|
34
|
+
dir_path = "#{template_path}/#{ANY_TEMPLATE}"
|
35
|
+
to_copy = @shell.real_dir_entries dir_path
|
36
|
+
end
|
37
|
+
to_copy.each do |item|
|
38
|
+
file_path = "#{dir_path}/#{item}"
|
39
|
+
@shell.cp_r file_path, "."
|
40
|
+
transform_file item
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def transform_file file
|
45
|
+
if file == "README" or file.end_with?(".sh")
|
46
|
+
content = @shell.read_file file
|
47
|
+
content = @template_machine.render content
|
48
|
+
@shell.write_file file, content
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def template_path
|
53
|
+
file_path_elements = @shell.current_file.split '/'
|
54
|
+
file_path_elements[-2..-1] = nil
|
55
|
+
(file_path_elements << 'templates').join '/'
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
data/app/shell_wrapper.rb
CHANGED
@@ -3,12 +3,15 @@ require 'tempfile'
|
|
3
3
|
class ShellWrapper
|
4
4
|
|
5
5
|
MAX_STDOUT_LENGTH = 100000
|
6
|
-
ANY_TEMPLATE = "any"
|
7
6
|
|
8
7
|
def cp source, destination
|
9
8
|
FileUtils.cp source, destination
|
10
9
|
end
|
11
10
|
|
11
|
+
def cp_r source, destination
|
12
|
+
FileUtils.cp_r source, destination
|
13
|
+
end
|
14
|
+
|
12
15
|
def mkdir dir
|
13
16
|
FileUtils.mkdir dir
|
14
17
|
end
|
@@ -17,6 +20,10 @@ class ShellWrapper
|
|
17
20
|
FileUtils.mkdir_p dirs
|
18
21
|
end
|
19
22
|
|
23
|
+
def current_file
|
24
|
+
__FILE__
|
25
|
+
end
|
26
|
+
|
20
27
|
def execute command
|
21
28
|
spec_pipe = IO.popen(command, "r")
|
22
29
|
result = spec_pipe.read MAX_STDOUT_LENGTH
|
@@ -42,38 +49,19 @@ class ShellWrapper
|
|
42
49
|
File.new(filename).ctime
|
43
50
|
end
|
44
51
|
|
45
|
-
def list_templates
|
46
|
-
templates = real_dir_entries template_path
|
47
|
-
templates.delete ANY_TEMPLATE
|
48
|
-
templates.join(', ')
|
49
|
-
end
|
50
|
-
|
51
|
-
def scaffold template
|
52
|
-
begin
|
53
|
-
dir_path = "#{template_path}/#{template}"
|
54
|
-
to_copy = real_dir_entries dir_path
|
55
|
-
rescue
|
56
|
-
dir_path = "#{template_path}/#{ANY_TEMPLATE}"
|
57
|
-
to_copy = real_dir_entries dir_path
|
58
|
-
end
|
59
|
-
to_copy.each do |item|
|
60
|
-
FileUtils.cp_r "#{dir_path}/#{item}", "."
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def template_path
|
65
|
-
file_path_elements = __FILE__.split '/'
|
66
|
-
file_path_elements[-2..-1] = nil
|
67
|
-
(file_path_elements << 'templates').join '/'
|
68
|
-
end
|
69
|
-
|
70
52
|
def real_dir_entries dir
|
71
53
|
current_and_parent = 2
|
72
54
|
Dir.new(dir).entries.drop current_and_parent
|
73
55
|
end
|
74
56
|
|
75
|
-
def
|
76
|
-
|
57
|
+
def read_file filename
|
58
|
+
generator_text = IO.readlines(filename).to_s;
|
59
|
+
end
|
60
|
+
|
61
|
+
def write_file filename, content
|
62
|
+
File.open(filename, 'w') do |f|
|
63
|
+
f.puts content
|
64
|
+
end
|
77
65
|
end
|
78
66
|
|
79
67
|
def remove_command_name
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class TextTemplateMachine
|
2
|
+
|
3
|
+
attr_accessor :placeholder_values
|
4
|
+
|
5
|
+
def initialize shell
|
6
|
+
@shell = shell
|
7
|
+
@placeholder_values = []
|
8
|
+
end
|
9
|
+
|
10
|
+
def render text
|
11
|
+
@placeholder_values.each do |placeholder_value|
|
12
|
+
placeholder = placeholder_value.first
|
13
|
+
value = placeholder_value.last
|
14
|
+
text = replace_placeholder text, placeholder, value
|
15
|
+
end
|
16
|
+
text
|
17
|
+
end
|
18
|
+
|
19
|
+
def replace_placeholder text, placeholder, value
|
20
|
+
text = text.gsub "%#{placeholder}%", value
|
21
|
+
placeholder_cap = placeholder.capitalize
|
22
|
+
value_cap = value.capitalize
|
23
|
+
text.gsub "%#{placeholder_cap}%", value_cap
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require "scaffolder"
|
2
|
+
|
3
|
+
describe Scaffolder do
|
4
|
+
|
5
|
+
before (:each) do
|
6
|
+
@shell_mock = mock
|
7
|
+
@shell_mock.should_receive(:shell_extension).any_number_of_times.and_return "cmd"
|
8
|
+
@shell_mock.should_receive(:remove_command_name).any_number_of_times.and_return "del"
|
9
|
+
@shell_mock.should_receive(:path_separator).any_number_of_times.and_return ";"
|
10
|
+
@shell_mock.should_receive(:current_file).any_number_of_times.and_return("aDir/app/aFile.rb")
|
11
|
+
@scaffolder = Scaffolder.new @shell_mock
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should compute template path from location of ruby source file" do
|
15
|
+
@scaffolder.template_path.should == "aDir/templates"
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should retrieve templates from directories within the template directory" do
|
19
|
+
@shell_mock.should_receive(:real_dir_entries).with("aDir/templates").and_return ['any', 't1', 't2', 't3']
|
20
|
+
@scaffolder.list_templates.should == 't1, t2, t3'
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should scaffold the files and directories for a given template" do
|
24
|
+
@shell_mock.should_receive(:real_dir_entries).with("aDir/templates/a.template").and_return ["a", "b"]
|
25
|
+
@shell_mock.should_receive(:cp_r).with "aDir/templates/a.template/a", "."
|
26
|
+
@shell_mock.should_receive(:cp_r).with "aDir/templates/a.template/b", "."
|
27
|
+
@scaffolder.scaffold "a.template", 'myKata'
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should use 'any' when the given template doesn't exist" do
|
31
|
+
@shell_mock.should_receive(:real_dir_entries).with("aDir/templates/unknown.template").and_throw Exception
|
32
|
+
@shell_mock.should_receive(:real_dir_entries).with("aDir/templates/any").and_return ["a"]
|
33
|
+
@shell_mock.should_receive(:cp_r).with "aDir/templates/any/a", "."
|
34
|
+
@scaffolder.scaffold "unknown.template", 'myKata'
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should replace placeholder in template file README and shell scripts" do
|
38
|
+
@shell_mock.should_receive(:real_dir_entries).with("aDir/templates/a.template").
|
39
|
+
and_return ["a", "README", "run-once.sh", "run-endless.sh"]
|
40
|
+
@shell_mock.should_receive(:cp_r).with "aDir/templates/a.template/a", "."
|
41
|
+
@shell_mock.should_receive(:cp_r).with "aDir/templates/a.template/README", "."
|
42
|
+
@shell_mock.should_receive(:cp_r).with "aDir/templates/a.template/run-once.sh", "."
|
43
|
+
@shell_mock.should_receive(:cp_r).with "aDir/templates/a.template/run-endless.sh", "."
|
44
|
+
@shell_mock.should_receive(:read_file).with("README").and_return '%rm% %kata_file%\nb.%sh%\nc%:%d'
|
45
|
+
@shell_mock.should_receive(:write_file).with "README", 'del myKata\nb.cmd\nc;d'
|
46
|
+
@shell_mock.should_receive(:read_file).with("run-once.sh").and_return "%rm% a\nb.%sh%\nc%:%d"
|
47
|
+
@shell_mock.should_receive(:write_file).with "run-once.sh", "del a\nb.cmd\nc;d"
|
48
|
+
@shell_mock.should_receive(:read_file).with("run-endless.sh").and_return "%rm% a\nb.%sh%\nc%:%d"
|
49
|
+
@shell_mock.should_receive(:write_file).with "run-endless.sh", "del a\nb.cmd\nc;d"
|
50
|
+
@scaffolder.scaffold "a.template", 'myKata'
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
data/spec/state_reader_spec.rb
CHANGED
@@ -12,10 +12,10 @@ describe StateReader do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
it "should read a stored kata state" do
|
15
|
-
@shell_mock.should_receive(:ctime).with("
|
16
|
-
Dir.should_receive(:entries).with("
|
17
|
-
@shell_mock.should_receive(:read_file).with("
|
18
|
-
@shell_mock.should_receive(:read_file).with("
|
15
|
+
@shell_mock.should_receive(:ctime).with(".codersdojo/id0815/#{@state_dir_prefix}0").and_return @a_time
|
16
|
+
Dir.should_receive(:entries).with(".codersdojo/id0815/#{@state_dir_prefix}0").and_return(['.','..','file.rb', 'result.txt'])
|
17
|
+
@shell_mock.should_receive(:read_file).with(".codersdojo/id0815/#{@state_dir_prefix}0/result.txt").and_return "result"
|
18
|
+
@shell_mock.should_receive(:read_file).with(".codersdojo/id0815/#{@state_dir_prefix}0/file.rb").and_return "source code"
|
19
19
|
state = @state_reader.read_next_state
|
20
20
|
state.time.should == @a_time
|
21
21
|
state.code.should == "source code"
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'text_template_machine'
|
2
|
+
|
3
|
+
describe TextTemplateMachine do
|
4
|
+
|
5
|
+
before (:each) do
|
6
|
+
shell_mock = mock
|
7
|
+
@machine = TextTemplateMachine.new shell_mock
|
8
|
+
@placeholder_values = {'a' => 'A', 'wo' => 'world', 'm' => 'my'}
|
9
|
+
@machine.placeholder_values = @placeholder_values
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should not modifiy text without placeholders" do
|
13
|
+
@machine.render('Some text without placeholders.').should == 'Some text without placeholders.'
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should not modifiy unknown placeholders" do
|
17
|
+
@machine.render('Hello %unknown%').should == 'Hello %unknown%'
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should resolve placeholders" do
|
21
|
+
@machine.render('Hello %wo%, %m% %wo%').should == 'Hello world, my world'
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should not modify case of first letter" do
|
25
|
+
@machine.render('Hello %wo%').should == 'Hello world'
|
26
|
+
@machine.render('Hello %Wo%').should == 'Hello World'
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should use added placeholder" do
|
30
|
+
@machine.placeholder_values['xxx'] = 'xxx-value'
|
31
|
+
@machine.render('%xxx%').should == 'xxx-value'
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should use newest placeholder value" do
|
35
|
+
@machine.placeholder_values['a'] = 'b'
|
36
|
+
@machine.render('%a%').should == 'b'
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
data/templates/any/README
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
Two shell scripts were created:
|
2
|
+
run-once.%sh% runs your tests once
|
3
|
+
run-endless.%sh% runs your tests endlessly via run-once.%sh%
|
3
4
|
|
4
|
-
|
5
|
-
#{$0} start run-once.%sh% #{kata_file}.<extension>
|
5
|
+
run-once.%sh% is not implemented by now. You have to implement it appropriately.
|
6
6
|
|
7
7
|
Run run-endless.%sh% and start your kata.
|
8
8
|
|
9
9
|
Assumptions:
|
10
|
-
- The whole kata source code is in the one
|
10
|
+
- The whole kata source code is in the one %kata_file%.
|
@@ -1,2 +1 @@
|
|
1
|
-
|
2
|
-
#codersdojo start run-once.sh #{kata_file}
|
1
|
+
codersdojo start run-once.sh %kata_file%
|
data/templates/any/run-once.sh
CHANGED
@@ -1 +1 @@
|
|
1
|
-
echo "Modify shell script run-once
|
1
|
+
echo "Modify shell script run-once.%sh% so that it runs your tests once."
|
@@ -1,12 +1,10 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
Two shell scripts were created:
|
2
|
+
run-once.%sh% runs your tests once
|
3
|
+
run-endless.%sh% runs your tests endlessly via run-once.%sh%
|
4
4
|
|
5
|
-
|
6
|
-
#{$0} start run-once.%sh% #{kata_file}.clj
|
7
|
-
|
8
|
-
Run run-endless.%sh% and start your kata.
|
5
|
+
Run run-endless.sh and start your kata.
|
9
6
|
|
10
7
|
Assumptions:
|
8
|
+
- The whole kata source code is in the one %kata_file%.clj.
|
11
9
|
- Java is installed on your system and 'java' is in the path.
|
12
|
-
- clojure.jar and clojure-contrib.jar are placed in
|
10
|
+
- clojure.jar and clojure-contrib.jar are placed in the 'lib' directory.
|
File without changes
|
@@ -1 +1,2 @@
|
|
1
|
-
codersdojo start run-once.sh
|
1
|
+
codersdojo start run-once.sh %kata_file%.clj
|
2
|
+
|
@@ -1,2 +1 @@
|
|
1
|
-
|
2
|
-
# java -cp lib/clojure-contrib.jar:/System/Library/Frameworks/Clojure/clojure.jar clojure.main #{kata_file}
|
1
|
+
java -cp lib/clojure-contrib.jar%:%lib/clojure.jar clojure.main %kata_file%.clj
|
data/templates/java.junit/README
CHANGED
@@ -1,19 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
javac -cp lib/junit.jar -d bin #{kata_file}.java
|
5
|
-
java -cp lib/junit.jar%:%bin #{kata_file}
|
1
|
+
Two shell scripts were created:
|
2
|
+
run-once.%sh% runs your tests once
|
3
|
+
run-endless.%sh% runs your tests endlessly via run-once.%sh%
|
6
4
|
|
7
|
-
|
8
|
-
#{$0} start run-once.%sh% src/#{kata_file}.java
|
9
|
-
|
10
|
-
Run run-endless.%sh% and start your kata.
|
5
|
+
Run run-endless.sh and start your kata.
|
11
6
|
|
12
7
|
Assumptions:
|
13
8
|
- A Java JDK is installed on your system and 'java' and 'javac' are in the path.
|
14
|
-
- junit.jar is placed in
|
9
|
+
- junit.jar is placed in the 'lib' directory.
|
10
|
+
- The whole kata source code is in the one %Kata_file%Test.java.
|
15
11
|
- The kata source file is placed in the 'src' directory.
|
16
|
-
- The kata class file is generated into the '
|
12
|
+
- The kata class file is generated into the 'bin' directory.
|
17
13
|
- In the source file the classes are placed in the default package.
|
18
14
|
- The kata source file has a main method that starts the tests.
|
19
15
|
- If your IDE (like Eclipse) compiles the source file, you should remove the first two lines
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
codersdojo start run-once.sh src/%Kata_file%Test.java
|
@@ -1,3 +1,3 @@
|
|
1
|
-
rm bin
|
2
|
-
javac -cp lib/junit.jar -d bin src
|
3
|
-
java -cp lib/junit.jar:bin
|
1
|
+
rm bin/%Kata_file%Test.class
|
2
|
+
javac -cp lib/junit.jar -d bin src/%Kata_file%Test.java
|
3
|
+
java -cp lib/junit.jar:bin org.junit.runner.JUnitCore %Kata_file%Test
|
@@ -1,8 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
Two shell scripts were created:
|
2
|
+
run-once.%sh% runs your tests once
|
3
|
+
run-endless.%sh% runs your tests endlessly via run-once.%sh%
|
4
4
|
|
5
|
-
|
6
|
-
#{$0} start run-once.%sh% #{kata_file}.py
|
5
|
+
Run run-endless.%sh% and start your kata.
|
7
6
|
|
8
|
-
|
7
|
+
Assumptions:
|
8
|
+
- The whole kata source code is in the one %kata_file%.py.
|
@@ -0,0 +1 @@
|
|
1
|
+
codersdojo start run-once.sh %kata_file%.py
|
@@ -0,0 +1 @@
|
|
1
|
+
python %kata_file%.py
|
@@ -1,5 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
Two shell scripts were created:
|
2
|
+
run-once.%sh% runs your tests once
|
3
|
+
run-endless.%sh% runs your tests endlessly via run-once.%sh%
|
4
4
|
|
5
|
-
Run run-endless.%sh% and start your kata.
|
5
|
+
Run run-endless.%sh% and start your kata.
|
6
|
+
|
7
|
+
Assumptions:
|
8
|
+
- The whole kata source code is in the one %kata_file%.rb.
|
@@ -0,0 +1 @@
|
|
1
|
+
codersdojo start run-once.sh %kata_file%.rb
|
@@ -0,0 +1 @@
|
|
1
|
+
ruby %kata_file%.rb
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: codersdojo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 45
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 9
|
9
|
-
-
|
10
|
-
version: 0.9.
|
9
|
+
- 11
|
10
|
+
version: 0.9.11
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- CodersDojo-Team
|
@@ -48,16 +48,19 @@ files:
|
|
48
48
|
- app/filename_formatter.rb
|
49
49
|
- app/progress.rb
|
50
50
|
- app/runner.rb
|
51
|
+
- app/scaffolder.rb
|
51
52
|
- app/scheduler.rb
|
52
53
|
- app/session_id_generator.rb
|
54
|
+
- app/shell_argument_exception.rb
|
53
55
|
- app/shell_wrapper.rb
|
54
56
|
- app/state_reader.rb
|
57
|
+
- app/text_template_machine.rb
|
55
58
|
- app/uploader.rb
|
56
59
|
- app/xml_element_extractor.rb
|
57
60
|
- templates/any/README
|
58
61
|
- templates/any/run-endless.sh
|
59
62
|
- templates/any/run-once.sh
|
60
|
-
- templates/clojure.is-test/lib/
|
63
|
+
- templates/clojure.is-test/lib/place_your_libs_here
|
61
64
|
- templates/clojure.is-test/README
|
62
65
|
- templates/clojure.is-test/run-endless.sh
|
63
66
|
- templates/clojure.is-test/run-once.sh
|
@@ -67,14 +70,19 @@ files:
|
|
67
70
|
- templates/java.junit/run-endless.sh
|
68
71
|
- templates/java.junit/run-once.sh
|
69
72
|
- templates/java.junit/src/place_your_source_files_here
|
70
|
-
- templates/javascript.jspec/README
|
71
73
|
- templates/python.unittest/README
|
74
|
+
- templates/python.unittest/run-endless.sh
|
75
|
+
- templates/python.unittest/run-once.sh
|
72
76
|
- templates/ruby.test-unit/README
|
77
|
+
- templates/ruby.test-unit/run-endless.sh
|
78
|
+
- templates/ruby.test-unit/run-once.sh
|
73
79
|
- spec/argument_parser_spec.rb
|
74
80
|
- spec/progress_spec.rb
|
75
81
|
- spec/runner_spec.rb
|
82
|
+
- spec/scaffolder_spec.rb
|
76
83
|
- spec/session_id_generator_spec.rb
|
77
84
|
- spec/state_reader_spec.rb
|
85
|
+
- spec/text_template_machine_spec.rb
|
78
86
|
- spec/uploader_spec.rb
|
79
87
|
- spec/xml_element_extractor_spec.rb
|
80
88
|
- bin/codersdojo
|
@@ -116,7 +124,9 @@ test_files:
|
|
116
124
|
- spec/argument_parser_spec.rb
|
117
125
|
- spec/progress_spec.rb
|
118
126
|
- spec/runner_spec.rb
|
127
|
+
- spec/scaffolder_spec.rb
|
119
128
|
- spec/session_id_generator_spec.rb
|
120
129
|
- spec/state_reader_spec.rb
|
130
|
+
- spec/text_template_machine_spec.rb
|
121
131
|
- spec/uploader_spec.rb
|
122
132
|
- spec/xml_element_extractor_spec.rb
|
Binary file
|
@@ -1,8 +0,0 @@
|
|
1
|
-
You have to create two shell scripts manually:
|
2
|
-
Create a shell script run-once.%sh% with this content:
|
3
|
-
jspec --rhino run
|
4
|
-
|
5
|
-
Create a second shell script run-endless.sh with this content:
|
6
|
-
#{$0} start run-once.%sh% #{kata_file}.js
|
7
|
-
|
8
|
-
Run run-endless.%sh% and start your kata.
|