codersdojo 0.9.10 → 0.9.11
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|