learn-test 2.7.0 → 3.2.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 +4 -4
- data/.circleci/config.yml +1 -12
- data/.gitignore +1 -0
- data/.rspec +1 -0
- data/Gemfile +4 -2
- data/README.md +2 -2
- data/Rakefile +2 -1
- data/bin/learn-test +15 -14
- data/bin/learn-test-wip +359 -0
- data/learn-test.gemspec +15 -19
- data/lib/learn_test.rb +3 -4
- data/lib/learn_test/client.rb +2 -0
- data/lib/learn_test/dependencies/ant.rb +2 -0
- data/lib/learn_test/dependencies/csharp.rb +3 -1
- data/lib/learn_test/dependencies/imagemagick.rb +2 -0
- data/lib/learn_test/dependencies/java.rb +2 -0
- data/lib/learn_test/dependencies/karma.rb +2 -0
- data/lib/learn_test/dependencies/nodejs.rb +2 -0
- data/lib/learn_test/dependencies/phantomjs.rb +6 -4
- data/lib/learn_test/dependencies/protractor.rb +2 -0
- data/lib/learn_test/dependencies/selenium_server.rb +2 -0
- data/lib/learn_test/dependency.rb +4 -4
- data/lib/learn_test/file_finder.rb +2 -1
- data/lib/learn_test/git_wip.rb +23 -0
- data/lib/learn_test/github_interactor.rb +2 -1
- data/lib/learn_test/js_strategy.rb +3 -1
- data/lib/learn_test/learn_oauth_token_parser.rb +2 -0
- data/lib/learn_test/netrc_interactor.rb +2 -1
- data/lib/learn_test/repo_parser.rb +2 -0
- data/lib/learn_test/reporter.rb +14 -7
- data/lib/learn_test/runner.rb +5 -5
- data/lib/learn_test/strategies/csharp_nunit.rb +5 -3
- data/lib/learn_test/strategies/java_junit.rb +9 -8
- data/lib/learn_test/strategies/karma.rb +9 -5
- data/lib/learn_test/strategies/mocha.rb +10 -8
- data/lib/learn_test/strategies/protractor.rb +7 -6
- data/lib/learn_test/strategies/pytest.rb +13 -13
- data/lib/learn_test/strategies/pytest/requirements_checker.rb +14 -12
- data/lib/learn_test/strategies/rspec.rb +11 -10
- data/lib/learn_test/strategy.rb +5 -6
- data/lib/learn_test/user_id_parser.rb +2 -1
- data/lib/learn_test/username_parser.rb +3 -2
- data/lib/learn_test/version.rb +3 -1
- data/spec/features/rspec_unit_spec.rb +4 -2
- data/spec/fixtures/rspec-unit-spec/lib/dog.rb +3 -1
- data/spec/fixtures/rspec-unit-spec/spec/dog_spec.rb +4 -2
- data/spec/fixtures/rspec-unit-spec/spec/spec_helper.rb +2 -0
- data/spec/learn_test/git_spec.rb +40 -0
- data/spec/learn_test/reporter_spec.rb +69 -31
- data/spec/learn_test/username_parser_spec.rb +2 -0
- data/spec/lib/learn_test/strategies/mocha_spec.rb +21 -20
- data/spec/repo_parser_spec.rb +14 -12
- data/spec/spec_helper.rb +2 -0
- metadata +18 -147
- data/Gemfile.lock +0 -83
- data/lib/learn_test/dependencies/firefox.rb +0 -26
- data/lib/learn_test/dependencies/green_onion.rb +0 -14
- data/lib/learn_test/strategies/green_onion.rb +0 -57
- data/lib/learn_test/strategies/jasmine.rb +0 -181
- data/lib/learn_test/strategies/jasmine/boot.js +0 -184
- data/lib/learn_test/strategies/jasmine/console.js +0 -161
- data/lib/learn_test/strategies/jasmine/formatters/jasmine2-junit.js +0 -199
- data/lib/learn_test/strategies/jasmine/helpers/ConsoleHelper.js +0 -12
- data/lib/learn_test/strategies/jasmine/helpers/ConsoleHelperNoColor.js +0 -12
- data/lib/learn_test/strategies/jasmine/initializer.rb +0 -27
- data/lib/learn_test/strategies/jasmine/jasmine-html.js +0 -360
- data/lib/learn_test/strategies/jasmine/jasmine-jquery.js +0 -813
- data/lib/learn_test/strategies/jasmine/jasmine.css +0 -56
- data/lib/learn_test/strategies/jasmine/jasmine.js +0 -2403
- data/lib/learn_test/strategies/jasmine/jasmine_favicon.png +0 -0
- data/lib/learn_test/strategies/jasmine/jquery-1.8.0.min.js +0 -2
- data/lib/learn_test/strategies/jasmine/jquery-ui-1.8.23.custom.min.js +0 -125
- data/lib/learn_test/strategies/jasmine/runners/SpecRunner.html +0 -35
- data/lib/learn_test/strategies/jasmine/runners/run-jasmine.js +0 -229
- data/lib/learn_test/strategies/jasmine/templates/SpecRunnerTemplate.html.erb +0 -35
- data/lib/learn_test/strategies/jasmine/templates/SpecRunnerTemplateNoColor.html.erb +0 -35
- data/lib/learn_test/strategies/jasmine/templates/requires.yml.example +0 -7
- data/lib/learn_test/strategies/jasmine/vendor/require.js +0 -2077
- data/spec/features/jasmine_jquery_fixtures_spec.rb +0 -10
- data/spec/fixtures/jasmine-jquery-fixtures/index.html +0 -10
- data/spec/fixtures/jasmine-jquery-fixtures/requires.yml +0 -4
- data/spec/fixtures/jasmine-jquery-fixtures/spec/jasmine-jquery-fixtures-spec.js +0 -11
data/learn-test.gemspec
CHANGED
@@ -1,36 +1,32 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
lib = File.expand_path('../lib', __FILE__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
require 'learn_test/version'
|
5
6
|
|
6
7
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
8
|
+
spec.name = 'learn-test'
|
8
9
|
spec.version = LearnTest::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.summary =
|
12
|
-
spec.homepage =
|
13
|
-
spec.license =
|
10
|
+
spec.authors = ['Flatiron School']
|
11
|
+
spec.email = ['learn@flatironschool.com']
|
12
|
+
spec.summary = 'Runs RSpec, Karma, Mocha, and Python Pytest Test builds and pushes JSON output to Learn.'
|
13
|
+
spec.homepage = 'https://github.com/learn-co/learn-test'
|
14
|
+
spec.license = 'MIT'
|
14
15
|
|
15
16
|
spec.files = `git ls-files -z`.split("\x0")
|
16
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
-
spec.require_paths = [
|
19
|
-
spec.required_ruby_version = '>= 2.
|
19
|
+
spec.require_paths = ['lib', 'bin']
|
20
|
+
spec.required_ruby_version = '>= 2.5.0'
|
20
21
|
|
21
|
-
spec.add_development_dependency "bundler", "~> 2.1.4"
|
22
22
|
spec.add_development_dependency "rake", "~> 13.0.1"
|
23
|
-
spec.add_development_dependency "rspec", "~> 3.
|
23
|
+
spec.add_development_dependency "rspec", "~> 3.7"
|
24
|
+
|
24
25
|
spec.add_runtime_dependency "rspec", "~> 3.0"
|
25
26
|
spec.add_runtime_dependency "netrc", "~> 0.11.0"
|
26
|
-
spec.add_runtime_dependency "git", "~> 1.
|
27
|
-
spec.add_runtime_dependency "oj", "~>
|
28
|
-
spec.add_runtime_dependency "faraday", "~> 0
|
27
|
+
spec.add_runtime_dependency "git", "~> 1.7"
|
28
|
+
spec.add_runtime_dependency "oj", "~> 3.10"
|
29
|
+
spec.add_runtime_dependency "faraday", "~> 1.0"
|
29
30
|
spec.add_runtime_dependency "crack", "~> 0.4.3"
|
30
|
-
spec.add_runtime_dependency "jasmine", "~> 2.6.0", ">= 2.6.0"
|
31
|
-
spec.add_runtime_dependency "jasmine-core", "< 2.99.1"
|
32
31
|
spec.add_runtime_dependency "colorize", "~> 0.8.1"
|
33
|
-
spec.add_runtime_dependency "webrick", "~> 1.3.1", ">= 1.3.1"
|
34
|
-
spec.add_runtime_dependency "rainbow", "= 1.99.2"
|
35
|
-
spec.add_runtime_dependency "selenium-webdriver", "~> 2.52.0", '>= 2.52.0'
|
36
32
|
end
|
data/lib/learn_test.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'fileutils'
|
2
4
|
require 'oj'
|
3
5
|
require 'colorize'
|
4
6
|
|
5
7
|
require_relative 'learn_test/version'
|
6
8
|
require_relative 'learn_test/netrc_interactor'
|
9
|
+
require_relative 'learn_test/git_wip'
|
7
10
|
require_relative 'learn_test/github_interactor'
|
8
11
|
require_relative 'learn_test/user_id_parser'
|
9
12
|
require_relative 'learn_test/username_parser'
|
@@ -16,14 +19,12 @@ require_relative 'learn_test/dependency'
|
|
16
19
|
|
17
20
|
require_relative 'learn_test/strategy'
|
18
21
|
require_relative 'learn_test/js_strategy'
|
19
|
-
require_relative 'learn_test/strategies/jasmine'
|
20
22
|
require_relative 'learn_test/strategies/rspec'
|
21
23
|
require_relative 'learn_test/strategies/karma'
|
22
24
|
require_relative 'learn_test/strategies/protractor'
|
23
25
|
require_relative 'learn_test/strategies/java_junit'
|
24
26
|
require_relative 'learn_test/strategies/csharp_nunit'
|
25
27
|
require_relative 'learn_test/strategies/mocha'
|
26
|
-
require_relative 'learn_test/strategies/green_onion'
|
27
28
|
require_relative 'learn_test/strategies/pytest'
|
28
29
|
|
29
30
|
module LearnTest
|
@@ -37,8 +38,6 @@ module LearnTest
|
|
37
38
|
autoload :Ant, 'learn_test/dependencies/ant'
|
38
39
|
autoload :Imagemagick, 'learn_test/dependencies/imagemagick'
|
39
40
|
autoload :SeleniumServer, 'learn_test/dependencies/selenium_server'
|
40
|
-
autoload :Firefox, 'learn_test/dependencies/firefox'
|
41
|
-
autoload :GreenOnion, 'learn_test/dependencies/green_onion'
|
42
41
|
autoload :Pytest, 'learn_test/dependencies/pytest'
|
43
42
|
end
|
44
43
|
end
|
data/lib/learn_test/client.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module LearnTest
|
2
4
|
module Dependencies
|
3
5
|
class CSharp < LearnTest::Dependency
|
@@ -10,7 +12,7 @@ module LearnTest
|
|
10
12
|
end
|
11
13
|
|
12
14
|
def install
|
13
|
-
die(
|
15
|
+
die('Please install the .NET core from https://www.microsoft.com/net/core')
|
14
16
|
end
|
15
17
|
|
16
18
|
def die(message)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module LearnTest
|
2
4
|
module Dependencies
|
3
5
|
class PhantomJS < LearnTest::Dependency
|
@@ -7,8 +9,8 @@ module LearnTest
|
|
7
9
|
return !phantom_installed_on_mac?
|
8
10
|
end
|
9
11
|
|
10
|
-
|
11
|
-
die(
|
12
|
+
unless phantom_installed_on_linux?
|
13
|
+
die('You must have PhantomJS installed: http://phantomjs.org/download.html')
|
12
14
|
end
|
13
15
|
|
14
16
|
super
|
@@ -31,12 +33,12 @@ module LearnTest
|
|
31
33
|
def phantom_installed_on_linux?
|
32
34
|
phantom_installed?
|
33
35
|
end
|
36
|
+
|
34
37
|
def self.check_installation
|
35
38
|
new.check_installation
|
36
39
|
end
|
37
40
|
|
38
|
-
def check_installation
|
39
|
-
end
|
41
|
+
def check_installation; end
|
40
42
|
|
41
43
|
def phantom_installed_by_brew?
|
42
44
|
!`brew ls --versions phantomjs`.empty?
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module LearnTest
|
2
4
|
class Dependency
|
3
5
|
attr_reader :options
|
@@ -14,11 +16,9 @@ module LearnTest
|
|
14
16
|
false
|
15
17
|
end
|
16
18
|
|
17
|
-
def install
|
18
|
-
end
|
19
|
+
def install; end
|
19
20
|
|
20
|
-
def die(message)
|
21
|
-
end
|
21
|
+
def die(message); end
|
22
22
|
|
23
23
|
def mac?
|
24
24
|
!!RUBY_PLATFORM.match(/darwin/)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'git'
|
4
|
+
|
5
|
+
module LearnTest
|
6
|
+
module GitWip
|
7
|
+
class << self
|
8
|
+
def run!(log: false)
|
9
|
+
git = Git.open('./', log: log)
|
10
|
+
working_branch = git.current_branch
|
11
|
+
|
12
|
+
`learn-test-wip save "Automatic test submission" -u &> /dev/null`
|
13
|
+
|
14
|
+
return false unless $?.success? # rubocop:disable Style/SpecialGlobalVars
|
15
|
+
|
16
|
+
git.push('origin', "wip/#{working_branch}:refs/heads/wip")
|
17
|
+
git.config['remote.origin.url'].gsub('.git', '/tree/wip')
|
18
|
+
rescue StandardError
|
19
|
+
false
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module LearnTest
|
2
4
|
module JsStrategy
|
3
5
|
def js_package
|
@@ -13,7 +15,7 @@ module LearnTest
|
|
13
15
|
end
|
14
16
|
|
15
17
|
def missing_dependencies?
|
16
|
-
return true
|
18
|
+
return true unless File.exist?('node_modules')
|
17
19
|
[:dependencies, :devDependencies, :peerDependencies].any? do |dep_group|
|
18
20
|
modules = js_package[dep_group] || {}
|
19
21
|
modules_missing?(modules.keys)
|
data/lib/learn_test/reporter.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'fileutils'
|
2
4
|
require 'json'
|
3
5
|
|
4
6
|
require_relative 'client'
|
7
|
+
require_relative 'git_wip'
|
5
8
|
|
6
9
|
module LearnTest
|
7
10
|
class Reporter
|
8
|
-
|
9
11
|
attr_accessor :output_path, :debug
|
10
12
|
|
11
13
|
def self.report(strategy, options = {})
|
@@ -37,21 +39,26 @@ module LearnTest
|
|
37
39
|
if previous_reports.empty?
|
38
40
|
FileUtils.rm_f(output_path)
|
39
41
|
else
|
40
|
-
File.open(output_path,
|
42
|
+
File.open(output_path, 'w') do |file|
|
41
43
|
file.write("#{JSON.dump(previous_reports)}\n")
|
42
44
|
end
|
43
45
|
end
|
44
46
|
end
|
45
47
|
|
46
|
-
def report
|
48
|
+
def report
|
47
49
|
results = strategy.results
|
48
50
|
endpoint = strategy.service_endpoint
|
49
51
|
augment_results!(results)
|
50
52
|
|
51
|
-
|
53
|
+
if client.post_results(endpoint, results)
|
54
|
+
if !LearnTest::GitWip.run! && @debug
|
55
|
+
puts 'There was a problem connecting to Github. Not pushing current branch state.'.red
|
56
|
+
end
|
57
|
+
else
|
52
58
|
if @debug
|
53
|
-
|
59
|
+
puts 'There was a problem connecting to Learn. Not pushing test results.'.red
|
54
60
|
end
|
61
|
+
|
55
62
|
save_failed_attempt(endpoint, results)
|
56
63
|
end
|
57
64
|
end
|
@@ -61,7 +68,7 @@ module LearnTest
|
|
61
68
|
attr_reader :strategy, :client
|
62
69
|
|
63
70
|
def save_failed_attempt(endpoint, results)
|
64
|
-
File.open(output_path, File::RDWR|File::CREAT, 0644) do |f|
|
71
|
+
File.open(output_path, File::RDWR | File::CREAT, 0644) do |f|
|
65
72
|
if f.flock(File::LOCK_EX)
|
66
73
|
begin
|
67
74
|
reports = JSON.load(f)
|
@@ -84,7 +91,7 @@ module LearnTest
|
|
84
91
|
if File.exist?("#{FileUtils.pwd}/.learn")
|
85
92
|
dot_learn = YAML.load(File.read("#{FileUtils.pwd}/.learn"))
|
86
93
|
|
87
|
-
|
94
|
+
unless dot_learn['github'].nil?
|
88
95
|
results[:github] = dot_learn['github']
|
89
96
|
end
|
90
97
|
end
|
data/lib/learn_test/runner.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'yaml'
|
2
4
|
|
3
5
|
module LearnTest
|
@@ -7,7 +9,7 @@ module LearnTest
|
|
7
9
|
def initialize(repo, options = {})
|
8
10
|
@repo = repo
|
9
11
|
@options = options
|
10
|
-
die
|
12
|
+
die unless strategy
|
11
13
|
end
|
12
14
|
|
13
15
|
def run
|
@@ -32,7 +34,7 @@ module LearnTest
|
|
32
34
|
end
|
33
35
|
|
34
36
|
def strategy
|
35
|
-
@strategy ||= strategies.map{ |s| s.new(self) }.detect(&:detect)
|
37
|
+
@strategy ||= strategies.map { |s| s.new(self) }.detect(&:detect)
|
36
38
|
end
|
37
39
|
|
38
40
|
private
|
@@ -50,14 +52,12 @@ module LearnTest
|
|
50
52
|
def strategies
|
51
53
|
[
|
52
54
|
LearnTest::Strategies::CSharpNunit,
|
53
|
-
LearnTest::Strategies::Jasmine,
|
54
|
-
LearnTest::Strategies::GreenOnion,
|
55
55
|
LearnTest::Strategies::Rspec,
|
56
56
|
LearnTest::Strategies::Karma,
|
57
57
|
LearnTest::Strategies::Protractor,
|
58
58
|
LearnTest::Strategies::JavaJunit,
|
59
59
|
LearnTest::Strategies::Mocha,
|
60
|
-
LearnTest::Strategies::Pytest
|
60
|
+
LearnTest::Strategies::Pytest
|
61
61
|
]
|
62
62
|
end
|
63
63
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module LearnTest
|
2
4
|
module Strategies
|
3
5
|
class CSharpNunit < LearnTest::Strategy
|
@@ -6,7 +8,7 @@ module LearnTest
|
|
6
8
|
end
|
7
9
|
|
8
10
|
def detect
|
9
|
-
runner.files.any? {|f| f.match(/project.json/)}
|
11
|
+
runner.files.any? { |f| f.match(/project.json/) }
|
10
12
|
end
|
11
13
|
|
12
14
|
def check_dependencies
|
@@ -17,7 +19,7 @@ module LearnTest
|
|
17
19
|
require 'crack'
|
18
20
|
require 'json'
|
19
21
|
|
20
|
-
system(
|
22
|
+
system('dotnet test')
|
21
23
|
output
|
22
24
|
cleanup
|
23
25
|
end
|
@@ -46,7 +48,7 @@ module LearnTest
|
|
46
48
|
end
|
47
49
|
|
48
50
|
def cleanup
|
49
|
-
FileUtils.rm(
|
51
|
+
FileUtils.rm('TestResult.xml') if File.exist?('TestResult.xml')
|
50
52
|
end
|
51
53
|
end
|
52
54
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module LearnTest
|
2
4
|
module Strategies
|
3
5
|
class JavaJunit < LearnTest::Strategy
|
@@ -49,9 +51,8 @@ module LearnTest
|
|
49
51
|
private
|
50
52
|
|
51
53
|
def clean_old_results
|
52
|
-
|
53
|
-
|
54
|
-
end
|
54
|
+
return unless Dir.entries(lab_dir).any? { |f| f == 'junit' }
|
55
|
+
system("rm -rf #{lab_dir}/junit")
|
55
56
|
end
|
56
57
|
|
57
58
|
def run_ant
|
@@ -72,7 +73,7 @@ module LearnTest
|
|
72
73
|
if File.exists?(test_path)
|
73
74
|
test_xml_files.each do |f|
|
74
75
|
parsed = JSON.parse(Crack::XML.parse(File.read(f)).to_json)['testsuite']
|
75
|
-
next
|
76
|
+
next unless parsed
|
76
77
|
|
77
78
|
if parsed['testcase']
|
78
79
|
parsed['testcase'].each do |test_case|
|
@@ -97,10 +98,10 @@ module LearnTest
|
|
97
98
|
results[:passing_count] = 0
|
98
99
|
end
|
99
100
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
101
|
+
return unless runner.keep_results?
|
102
|
+
|
103
|
+
output_file = '.results.json'
|
104
|
+
write_json_output(output_file: output_file)
|
104
105
|
end
|
105
106
|
|
106
107
|
def write_json_output(output_file:)
|