codersdojo 1.0.14 → 1.0.15

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,7 +10,7 @@ class FilenameFormatter
10
10
 
11
11
  def source_code_file state_dir
12
12
  Dir.entries(state_dir).each { |file|
13
- return state_file state_dir, file unless file =='..' || file == '.' ||file == RESULT_FILE }
13
+ return state_file state_dir, file unless file =='..' || file == '.' || file == RESULT_FILE }
14
14
  end
15
15
 
16
16
  def result_file state_dir
@@ -30,5 +30,10 @@ class FilenameFormatter
30
30
  "#{CODERSDOJO_WORKSPACE}/#{session_id}"
31
31
  end
32
32
 
33
+ def extract_last_path_item dir_path
34
+ last = dir_path.split(File::Separator).last
35
+ last.nil? ? "" : last
36
+ end
37
+
33
38
  end
34
39
 
data/app/state_reader.rb CHANGED
@@ -2,7 +2,7 @@ require 'filename_formatter'
2
2
 
3
3
  class StateReader
4
4
 
5
- attr_accessor :session_id, :next_step
5
+ attr_accessor :session_id, :session_dir, :next_step
6
6
 
7
7
  def initialize shell
8
8
  @filename_formatter = FilenameFormatter.new
@@ -10,6 +10,11 @@ class StateReader
10
10
  @next_step = 0
11
11
  end
12
12
 
13
+ def session_dir= session_dir
14
+ @session_dir = session_dir
15
+ @session_id = @filename_formatter.extract_last_path_item @session_dir
16
+ end
17
+
13
18
  def state_count
14
19
  dummy_dirs_current_and_parent = 2
15
20
  Dir.new(@filename_formatter.session_dir @session_id).count - dummy_dirs_current_and_parent
@@ -34,7 +39,7 @@ class StateReader
34
39
  def read_next_state
35
40
  state = State.new
36
41
  state_dir = get_state_dir
37
- state.time = @shell.ctime state_dir
42
+ state.time = @shell.creation_time state_dir
38
43
  state.code = @shell.read_file @filename_formatter.source_code_file(state_dir)
39
44
  state.result = @shell.read_file @filename_formatter.result_file(state_dir)
40
45
  @next_step += 1
data/app/uploader.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'state_reader'
2
2
  require 'progress'
3
+ require 'filename_formatter'
3
4
  require 'xml_element_extractor'
4
5
  require 'rest_client'
5
6
 
@@ -9,7 +10,7 @@ class Uploader
9
10
  @hostname = hostname
10
11
  @framework = framework
11
12
  @state_reader = state_reader
12
- @state_reader.session_id = session_dir.gsub('.codersdojo/', '')
13
+ @state_reader.session_dir = session_dir
13
14
  end
14
15
 
15
16
  def upload_kata
@@ -0,0 +1,17 @@
1
+ require 'filename_formatter'
2
+
3
+ describe FilenameFormatter do
4
+
5
+ before (:each) do
6
+ @formatter = FilenameFormatter.new
7
+ end
8
+
9
+ it 'extract the last element of a dir path' do
10
+ @formatter.extract_last_path_item("").should == ""
11
+ @formatter.extract_last_path_item("/").should == ""
12
+ @formatter.extract_last_path_item("a").should == "a"
13
+ @formatter.extract_last_path_item("a/b/").should == "b"
14
+ @formatter.extract_last_path_item("/a/b/c").should == "c"
15
+ end
16
+
17
+ end
@@ -12,7 +12,7 @@ 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(".codersdojo/id0815/#{@state_dir_prefix}0").and_return @a_time
15
+ @shell_mock.should_receive(:creation_time).with(".codersdojo/id0815/#{@state_dir_prefix}0").and_return @a_time
16
16
  Dir.should_receive(:entries).with(".codersdojo/id0815/#{@state_dir_prefix}0").and_return(['.','..','file.rb', 'result.txt'])
17
17
  @shell_mock.should_receive(:read_file).with(".codersdojo/id0815/#{@state_dir_prefix}0/result.txt").and_return "result"
18
18
  @shell_mock.should_receive(:read_file).with(".codersdojo/id0815/#{@state_dir_prefix}0/file.rb").and_return "source code"
@@ -7,7 +7,7 @@ describe Uploader do
7
7
  end
8
8
 
9
9
  it "should convert session-dir to session-id" do
10
- @state_reader_mock.should_receive(:session_id=).with("session_id")
10
+ @state_reader_mock.should_receive(:session_dir=).with(".codersdojo/session_id")
11
11
  Uploader.new "http://dummy_host", "dummy.framework", ".codersdojo/session_id", @state_reader_mock
12
12
  end
13
13
 
@@ -15,7 +15,7 @@ describe Uploader do
15
15
 
16
16
  before (:each) do
17
17
  @state_reader_mock = mock StateReader
18
- @state_reader_mock.should_receive(:session_id=).with("path_to_kata")
18
+ @state_reader_mock.should_receive(:session_dir=).with("path_to_kata")
19
19
  @uploader = Uploader.new "http://dummy_host", "dummy.framework", "path_to_kata", @state_reader_mock
20
20
  end
21
21
 
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: 11
4
+ hash: 9
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 14
10
- version: 1.0.14
9
+ - 15
10
+ version: 1.0.15
11
11
  platform: ruby
12
12
  authors:
13
13
  - CodersDojo-Team
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-01 00:00:00 +01:00
18
+ date: 2011-01-17 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -86,6 +86,7 @@ files:
86
86
  - templates/ruby.test-unit/run-once.%sh%
87
87
  - lib/place_libs_here
88
88
  - spec/argument_parser_spec.rb
89
+ - spec/filename_formatter_spec.rb
89
90
  - spec/progress_spec.rb
90
91
  - spec/runner_spec.rb
91
92
  - spec/scaffolder_spec.rb
@@ -132,6 +133,7 @@ specification_version: 3
132
133
  summary: Client for CodersDojo.org
133
134
  test_files:
134
135
  - spec/argument_parser_spec.rb
136
+ - spec/filename_formatter_spec.rb
135
137
  - spec/progress_spec.rb
136
138
  - spec/runner_spec.rb
137
139
  - spec/scaffolder_spec.rb