learn-test 2.0.0 → 2.1.0

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.
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: