learn-test 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e644121f062a78513d1e4289212b4fdf307a045c
4
- data.tar.gz: df333048dacdbf11f31d6676de12cdc479bcc385
3
+ metadata.gz: abd382c4de1233fe1c72ba3933f59ddc361a07a6
4
+ data.tar.gz: d90c0b51e75a8ed6c84ee36c4588834712d2d191
5
5
  SHA512:
6
- metadata.gz: 98c7650d8c086dc7a8f7d6f619b6f26eafc577ea5ded0c08c98eb08f44f286493c84d455cbc4c1ea2e8a0a303a8b9729499debc1540292bf11b3323d5adcb845
7
- data.tar.gz: abed137a9e29827b263c19cf59033b8b6a78213476dd161a0afe896dd20a9f64aae5a0fdeab09961777b80c85ff67877dda9a601cb563995658638856e52b9a6
6
+ metadata.gz: c825c369af9290b56616a58d327ad8876ad6357d60bcb2986a0120d69957c257acabb7d2202ef3db2c55975f10f0694891ec5a8b07e4881cdfafeff6367815e1
7
+ data.tar.gz: d58792529831e1361c4307be560bd9c31cb6048cc33447c5ca5c7bf90c04590eed5d0fafcf3d8b36afed3d45f03cd44df53ede12ed04945a81ee512d801de01d
@@ -0,0 +1,23 @@
1
+ module LearnTest
2
+ module Dependencies
3
+ class Ant < LearnTest::Dependency
4
+ def missing?
5
+ `which ant`.empty?
6
+ end
7
+
8
+ def install
9
+ puts('Checking for homebrew...'.green)
10
+ die('You must have Homebrew installed') unless brew_installed?
11
+ puts('Updating brew...'.green)
12
+ print_installing('ant')
13
+ run_install('brew install ant')
14
+ end
15
+
16
+ private
17
+
18
+ def brew_installed?
19
+ !`which brew`.empty?
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,13 @@
1
+ module LearnTest
2
+ module Dependencies
3
+ class Java < LearnTest::Dependency
4
+ def missing?
5
+ `which java`.empty?
6
+ end
7
+
8
+ def install
9
+ die('Please install Java')
10
+ end
11
+ end
12
+ end
13
+ end
@@ -45,6 +45,8 @@ module LearnTest
45
45
  LearnTest::Strategies::Jasmine,
46
46
  LearnTest::Strategies::Karma,
47
47
  LearnTest::Strategies::Protractor,
48
+ LearnTest::Strategies::JavaJunit,
49
+ LearnTest::Strategies::Mocha,
48
50
  LearnTest::Strategies::PythonUnittest
49
51
  ]
50
52
  end
@@ -0,0 +1,99 @@
1
+ require 'crack'
2
+ require 'json'
3
+
4
+ module LearnTest
5
+ module Strategies
6
+ class JavaJunit < LearnTest::Strategy
7
+ def service_endpoint
8
+ '/e/flatiron_java_junit'
9
+ end
10
+
11
+ def detect
12
+ runner.files.any? { |f| f.match(/^javacs\-lab\d+$/) }
13
+ end
14
+
15
+ def check_dependencies
16
+ Dependencies::Java.new.execute
17
+ Dependencies::Ant.new.execute
18
+ end
19
+
20
+ def run
21
+ run_ant
22
+ make_json
23
+ end
24
+
25
+ def results
26
+ @results ||= {
27
+ username: username,
28
+ github_user_id: user_id,
29
+ repo_name: runner.repo,
30
+ build: {
31
+ test_suite: [{
32
+ framework: 'junit',
33
+ formatted_output: [],
34
+ duration: 0.0
35
+ }]
36
+ },
37
+ examples: 0,
38
+ passing_count: 0,
39
+ failure_count: 0
40
+ }
41
+ end
42
+
43
+ def cleanup
44
+ FileUtils.rm('.results.json') if File.exist?('.results.json')
45
+ end
46
+
47
+ private
48
+
49
+ def run_ant
50
+ system('ant test -buildfile javacs*/build.xml')
51
+ end
52
+
53
+ def test_path
54
+ @test_path ||= File.expand_path("#{lab_dir}/junit", FileUtils.pwd)
55
+ end
56
+
57
+ def lab_dir
58
+ @lab_dir ||= Dir.entries('.').detect {|f| f.match(/^javacs\-lab\d+$/)}
59
+ end
60
+
61
+ def make_json
62
+ test_xml_files.each do |f|
63
+ parsed = JSON.parse(Crack::XML.parse(File.read(f)).to_json)['testsuite']
64
+ next if !parsed
65
+
66
+ parsed['testcase'].each do |test_case|
67
+ results[:build][:test_suite][0][:formatted_output] << test_case
68
+ end
69
+
70
+ test_count = parsed['tests'].to_i
71
+ skipped_count = parsed['skipped'].to_i
72
+ error_count = parsed['errors'].to_i
73
+ failure_count = parsed['failures'].to_i
74
+ duration = parsed['time'].to_f
75
+
76
+ results[:examples] += test_count
77
+ results[:passing_count] += (test_count - skipped_count - error_count - failure_count)
78
+ results[:failure_count] += (error_count + failure_count)
79
+ results[:build][:test_suite][0][:duration] = duration
80
+ end
81
+
82
+ if runner.keep_results?
83
+ output_file = '.results.json'
84
+ write_json_output(output_file: output_file)
85
+ end
86
+ end
87
+
88
+ def write_json_output(output_file:)
89
+ File.open(output_file, 'w+') do |f|
90
+ f.write(results.to_json)
91
+ end
92
+ end
93
+
94
+ def test_xml_files
95
+ Dir.entries(test_path).select { |f| f.match(/^TEST\-.+\.xml$/) }.map { |f| "#{test_path}/#{f}" }
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,70 @@
1
+ module LearnTest
2
+ module Strategies
3
+ class Mocha < LearnTest::Strategy
4
+ def service_endpoint
5
+ '/e/flatiron_mocha'
6
+ end
7
+
8
+ def detect
9
+ package = File.exists?('package.json') ? Oj.load(File.read('package.json'), symbol_keys: true) : nil
10
+ return false if !package
11
+
12
+ if package[:scripts] && package[:scripts][:test]
13
+ return true if package[:scripts][:test].include?('mocha')
14
+ end
15
+
16
+ if package[:devDependencies] && package[:devDependencies][:mocha]
17
+ return true if (package[:devDependencies][:mocha].length > 0)
18
+ end
19
+
20
+ if package[:dependencies] && package[:dependencies][:mocha]
21
+ return true if (package[:dependencies][:mocha].length > 0)
22
+ end
23
+
24
+ return false
25
+ end
26
+
27
+ def check_dependencies
28
+ Dependencies::NodeJS.new.execute
29
+ end
30
+
31
+ def run
32
+ run_install('npm install')
33
+ run_install('npm install mocha-multi')
34
+ run_mocha
35
+ end
36
+
37
+ def output
38
+ @output ||= File.exists?('.results.json') ? Oj.load(File.read('.results.json'), symbol_keys: true) : nil
39
+ end
40
+
41
+ def results
42
+ @results ||= {
43
+ username: username,
44
+ github_user_id: user_id,
45
+ repo_name: runner.repo,
46
+ build: {
47
+ test_suite: [{
48
+ framework: 'mocha',
49
+ formatted_output: output,
50
+ duration: output[:stats]
51
+ }]
52
+ },
53
+ examples: output[:stats][:tests],
54
+ passing_count: output[:stats][:passes],
55
+ failure_count: output[:stats][:failures]
56
+ }
57
+ end
58
+
59
+ def cleanup
60
+ FileUtils.rm('.results.json') if File.exist?('.results.json')
61
+ end
62
+
63
+ private
64
+
65
+ def run_mocha
66
+ system("multi='json=.results.json spec=-' node_modules/mocha/bin/mocha test -R mocha-multi")
67
+ end
68
+ end
69
+ end
70
+ end
@@ -1,3 +1,3 @@
1
1
  module LearnTest
2
- VERSION = '2.0.0'
2
+ VERSION = '2.1.0'
3
3
  end
data/lib/learn_test.rb CHANGED
@@ -17,6 +17,8 @@ require_relative 'learn_test/dependencies/nodejs'
17
17
  require_relative 'learn_test/dependencies/phantomjs'
18
18
  require_relative 'learn_test/dependencies/karma'
19
19
  require_relative 'learn_test/dependencies/protractor'
20
+ require_relative 'learn_test/dependencies/java'
21
+ require_relative 'learn_test/dependencies/ant'
20
22
 
21
23
  require_relative 'learn_test/strategy'
22
24
  require_relative 'learn_test/strategies/jasmine'
@@ -24,6 +26,8 @@ require_relative 'learn_test/strategies/python_unittest'
24
26
  require_relative 'learn_test/strategies/rspec'
25
27
  require_relative 'learn_test/strategies/karma'
26
28
  require_relative 'learn_test/strategies/protractor'
29
+ require_relative 'learn_test/strategies/java_junit'
30
+ require_relative 'learn_test/strategies/mocha'
27
31
 
28
32
  module LearnTest
29
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: learn-test
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Flatiron School
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-24 00:00:00.000000000 Z
11
+ date: 2016-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -167,6 +167,8 @@ files:
167
167
  - bin/learn-test
168
168
  - learn-test.gemspec
169
169
  - lib/learn_test.rb
170
+ - lib/learn_test/dependencies/ant.rb
171
+ - lib/learn_test/dependencies/java.rb
170
172
  - lib/learn_test/dependencies/karma.rb
171
173
  - lib/learn_test/dependencies/nodejs.rb
172
174
  - lib/learn_test/dependencies/phantomjs.rb
@@ -197,8 +199,10 @@ files:
197
199
  - lib/learn_test/strategies/jasmine/templates/SpecRunnerTemplateNoColor.html.erb
198
200
  - lib/learn_test/strategies/jasmine/templates/requires.yml.example
199
201
  - lib/learn_test/strategies/jasmine/vendor/require.js
202
+ - lib/learn_test/strategies/java_junit.rb
200
203
  - lib/learn_test/strategies/karma.rb
201
204
  - lib/learn_test/strategies/karma/karma.conf.js
205
+ - lib/learn_test/strategies/mocha.rb
202
206
  - lib/learn_test/strategies/protractor.rb
203
207
  - lib/learn_test/strategies/python_unittest.rb
204
208
  - lib/learn_test/strategies/python_unittest/nose_installer.rb
@@ -262,3 +266,4 @@ test_files:
262
266
  - spec/fixtures/rspec-unit-spec/spec/spec_helper.rb
263
267
  - spec/repo_parser_spec.rb
264
268
  - spec/spec_helper.rb
269
+ has_rdoc: