learn-test 2.5.6 → 3.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 +5 -5
- data/.circleci/config.yml +59 -0
- data/.gitignore +0 -1
- data/Gemfile +4 -1
- data/Gemfile.lock +57 -0
- data/LICENSE.txt +1 -1
- data/README.md +2 -3
- data/bin/learn-test +4 -0
- data/learn-test.gemspec +9 -12
- data/lib/learn_test.rb +2 -5
- data/lib/learn_test/js_strategy.rb +7 -3
- data/lib/learn_test/repo_parser.rb +2 -3
- data/lib/learn_test/runner.rb +1 -3
- data/lib/learn_test/strategies/pytest.rb +85 -0
- data/lib/learn_test/strategies/{python_unittest → pytest}/requirements_checker.rb +21 -19
- data/lib/learn_test/strategies/rspec.rb +8 -0
- data/lib/learn_test/username_parser.rb +1 -1
- data/lib/learn_test/version.rb +1 -1
- data/spec/features/rspec_unit_spec.rb +26 -1
- data/spec/fixtures/.netrc +3 -0
- data/spec/fixtures/rspec-unit-spec/spec/dog_spec.rb +8 -0
- data/spec/learn_test/username_parser_spec.rb +61 -0
- data/spec/lib/learn_test/strategies/mocha_spec.rb +20 -17
- metadata +38 -139
- 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/lib/learn_test/strategies/python_unittest.rb +0 -72
- data/lib/learn_test/strategies/python_unittest/nose_installer.rb +0 -35
- 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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 149b042a01fdbed0de7a09185b1213a849d5da475facf62626d53ae1a06fdfc2
|
4
|
+
data.tar.gz: 1c11380986cf728ad16c13797e8474a7ecba61b7ff46158476b4abd25e07ee22
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e428a2dda9b27abfd7dd1ba9b1013d16fdf2e6fdeff1e042cfa0297f8c52092b52113ae033c809c04ef3120e9117b645bcec7029e4a265f8ba3997a8b1d1a4e1
|
7
|
+
data.tar.gz: fb2f086ea961c5da13cc6eb4709adec06d4ba6cd9da02fce7065707e6ccde2f1953220c724c8a9fda085a58681f8ff33c2313b5ccf40a9c90c80d8936d70315a
|
@@ -0,0 +1,59 @@
|
|
1
|
+
version: 2.1
|
2
|
+
|
3
|
+
jobs:
|
4
|
+
build:
|
5
|
+
docker:
|
6
|
+
- image: circleci/ruby:2.5.8
|
7
|
+
|
8
|
+
working_directory: ~/repo
|
9
|
+
|
10
|
+
steps:
|
11
|
+
- checkout
|
12
|
+
|
13
|
+
- restore_cache:
|
14
|
+
keys:
|
15
|
+
- gems-v3-{{ checksum "Gemfile.lock" }}
|
16
|
+
- gems-v3-
|
17
|
+
|
18
|
+
- run:
|
19
|
+
name: Force Bundler Version
|
20
|
+
command: |
|
21
|
+
sudo gem update --system
|
22
|
+
echo 'export BUNDLER_VERSION=$(cat Gemfile.lock | tail -1 | tr -d " ")' >> $BASH_ENV
|
23
|
+
source $BASH_ENV
|
24
|
+
|
25
|
+
- run:
|
26
|
+
name: Install Dependencies
|
27
|
+
command: |
|
28
|
+
bundle config --local set vendor/bundle
|
29
|
+
bundle install
|
30
|
+
|
31
|
+
- save_cache:
|
32
|
+
key: gems-v3-{{ checksum "Gemfile.lock" }}
|
33
|
+
paths:
|
34
|
+
- vendor/bundle
|
35
|
+
|
36
|
+
- run:
|
37
|
+
name: Create ~/.netrc
|
38
|
+
command: |
|
39
|
+
cp spec/fixtures/.netrc ~/
|
40
|
+
chmod 0600 ~/.netrc
|
41
|
+
|
42
|
+
- run:
|
43
|
+
name: Run tests
|
44
|
+
command: |
|
45
|
+
mkdir /tmp/test-results
|
46
|
+
TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)"
|
47
|
+
|
48
|
+
bundle exec rspec --format progress \
|
49
|
+
--format RspecJunitFormatter \
|
50
|
+
--out /tmp/test-results/rspec.xml \
|
51
|
+
--format progress \
|
52
|
+
$TEST_FILES
|
53
|
+
|
54
|
+
- store_test_results:
|
55
|
+
path: /tmp/test-results
|
56
|
+
|
57
|
+
- store_artifacts:
|
58
|
+
path: /tmp/test-results
|
59
|
+
destination: test-results
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
learn-test (3.0.0)
|
5
|
+
colorize (~> 0.8.1)
|
6
|
+
crack (~> 0.4.3)
|
7
|
+
faraday (~> 1.0)
|
8
|
+
git (~> 1.7)
|
9
|
+
netrc (~> 0.11.0)
|
10
|
+
oj (~> 3.10)
|
11
|
+
rspec (~> 3.0)
|
12
|
+
|
13
|
+
GEM
|
14
|
+
remote: https://rubygems.org/
|
15
|
+
specs:
|
16
|
+
colorize (0.8.1)
|
17
|
+
crack (0.4.3)
|
18
|
+
safe_yaml (~> 1.0.0)
|
19
|
+
diff-lcs (1.4.4)
|
20
|
+
faraday (1.0.1)
|
21
|
+
multipart-post (>= 1.2, < 3)
|
22
|
+
git (1.7.0)
|
23
|
+
rchardet (~> 1.8)
|
24
|
+
multipart-post (2.1.1)
|
25
|
+
netrc (0.11.0)
|
26
|
+
oj (3.10.8)
|
27
|
+
rake (13.0.1)
|
28
|
+
rchardet (1.8.0)
|
29
|
+
rspec (3.9.0)
|
30
|
+
rspec-core (~> 3.9.0)
|
31
|
+
rspec-expectations (~> 3.9.0)
|
32
|
+
rspec-mocks (~> 3.9.0)
|
33
|
+
rspec-core (3.9.2)
|
34
|
+
rspec-support (~> 3.9.3)
|
35
|
+
rspec-expectations (3.9.2)
|
36
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
37
|
+
rspec-support (~> 3.9.0)
|
38
|
+
rspec-mocks (3.9.1)
|
39
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
40
|
+
rspec-support (~> 3.9.0)
|
41
|
+
rspec-support (3.9.3)
|
42
|
+
rspec_junit_formatter (0.4.1)
|
43
|
+
rspec-core (>= 2, < 4, != 2.12.0)
|
44
|
+
safe_yaml (1.0.5)
|
45
|
+
|
46
|
+
PLATFORMS
|
47
|
+
ruby
|
48
|
+
|
49
|
+
DEPENDENCIES
|
50
|
+
bundler (~> 2.1.4)
|
51
|
+
learn-test!
|
52
|
+
rake (~> 13.0.1)
|
53
|
+
rspec (~> 3.8)
|
54
|
+
rspec_junit_formatter (~> 0.4.1)
|
55
|
+
|
56
|
+
BUNDLED WITH
|
57
|
+
2.1.4
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# learn-test
|
2
2
|
|
3
|
-
Runs RSpec,
|
3
|
+
Runs RSpec, Mocha, and Python Pytest test suites and uploads the results to Learn.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -22,7 +22,7 @@ And then execute:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
From within a directory with an RSpec,
|
25
|
+
From within a directory with an RSpec, Karma, Mocha, or Python Pytest test suite, run:
|
26
26
|
|
27
27
|
```
|
28
28
|
$ learn-test
|
@@ -35,4 +35,3 @@ $ learn-test
|
|
35
35
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
36
36
|
4. Push to the branch (`git push origin my-new-feature`)
|
37
37
|
5. Create a new Pull Request
|
38
|
-
|
data/bin/learn-test
CHANGED
@@ -57,6 +57,10 @@ OptionParser.new do |opts|
|
|
57
57
|
options[:fail_fast] = f
|
58
58
|
end
|
59
59
|
|
60
|
+
opts.on("-e", "--example STRING", "Run examples whose full nested names include STRING (may be used more than once)") do |s|
|
61
|
+
(options[:example] ||= []) << s
|
62
|
+
end
|
63
|
+
|
60
64
|
if ARGV.any? { |arg| arg == "init" }
|
61
65
|
options[:init] = true
|
62
66
|
end
|
data/learn-test.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = LearnTest::VERSION
|
9
9
|
spec.authors = ["Flatiron School"]
|
10
10
|
spec.email = ["learn@flatironschool.com"]
|
11
|
-
spec.summary = %q{Runs RSpec,
|
11
|
+
spec.summary = %q{Runs RSpec, Karma, Mocha, and Python Pytest Test builds and pushes JSON output to Learn.}
|
12
12
|
spec.homepage = "https://github.com/learn-co/learn-test"
|
13
13
|
spec.license = "MIT"
|
14
14
|
|
@@ -16,20 +16,17 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
18
|
spec.require_paths = ["lib", "bin"]
|
19
|
-
spec.required_ruby_version = '>= 2.
|
19
|
+
spec.required_ruby_version = '>= 2.5.0'
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 2.1.4"
|
22
|
+
spec.add_development_dependency "rake", "~> 13.0.1"
|
23
|
+
spec.add_development_dependency "rspec", "~> 3.8"
|
20
24
|
|
21
|
-
spec.add_development_dependency "bundler", "~> 1.7"
|
22
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
23
25
|
spec.add_runtime_dependency "rspec", "~> 3.0"
|
24
26
|
spec.add_runtime_dependency "netrc", "~> 0.11.0"
|
25
|
-
spec.add_runtime_dependency "git", "~> 1.
|
26
|
-
spec.add_runtime_dependency "oj", "~>
|
27
|
-
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"
|
28
30
|
spec.add_runtime_dependency "crack", "~> 0.4.3"
|
29
|
-
spec.add_runtime_dependency "jasmine", "~> 2.6.0", ">= 2.6.0"
|
30
|
-
spec.add_runtime_dependency "jasmine-core", "< 2.99.1"
|
31
31
|
spec.add_runtime_dependency "colorize", "~> 0.8.1"
|
32
|
-
spec.add_runtime_dependency "webrick", "~> 1.3.1", ">= 1.3.1"
|
33
|
-
spec.add_runtime_dependency "rainbow", "= 1.99.2"
|
34
|
-
spec.add_runtime_dependency "selenium-webdriver", "~> 2.52.0", '>= 2.52.0'
|
35
32
|
end
|
data/lib/learn_test.rb
CHANGED
@@ -16,15 +16,13 @@ require_relative 'learn_test/dependency'
|
|
16
16
|
|
17
17
|
require_relative 'learn_test/strategy'
|
18
18
|
require_relative 'learn_test/js_strategy'
|
19
|
-
require_relative 'learn_test/strategies/jasmine'
|
20
|
-
require_relative 'learn_test/strategies/python_unittest'
|
21
19
|
require_relative 'learn_test/strategies/rspec'
|
22
20
|
require_relative 'learn_test/strategies/karma'
|
23
21
|
require_relative 'learn_test/strategies/protractor'
|
24
22
|
require_relative 'learn_test/strategies/java_junit'
|
25
23
|
require_relative 'learn_test/strategies/csharp_nunit'
|
26
24
|
require_relative 'learn_test/strategies/mocha'
|
27
|
-
require_relative 'learn_test/strategies/
|
25
|
+
require_relative 'learn_test/strategies/pytest'
|
28
26
|
|
29
27
|
module LearnTest
|
30
28
|
module Dependencies
|
@@ -37,7 +35,6 @@ module LearnTest
|
|
37
35
|
autoload :Ant, 'learn_test/dependencies/ant'
|
38
36
|
autoload :Imagemagick, 'learn_test/dependencies/imagemagick'
|
39
37
|
autoload :SeleniumServer, 'learn_test/dependencies/selenium_server'
|
40
|
-
autoload :
|
41
|
-
autoload :GreenOnion, 'learn_test/dependencies/green_onion'
|
38
|
+
autoload :Pytest, 'learn_test/dependencies/pytest'
|
42
39
|
end
|
43
40
|
end
|
@@ -8,11 +8,15 @@ module LearnTest
|
|
8
8
|
[:dependencies, :devDependencies].any? { |key| js_package[key] && js_package[key][dep] }
|
9
9
|
end
|
10
10
|
|
11
|
+
def modules_missing?(module_names)
|
12
|
+
module_names.any? { |name| !File.exist?("node_modules/#{name}") }
|
13
|
+
end
|
14
|
+
|
11
15
|
def missing_dependencies?
|
12
16
|
return true if !File.exist?("node_modules")
|
13
|
-
|
14
|
-
|
15
|
-
(
|
17
|
+
[:dependencies, :devDependencies, :peerDependencies].any? do |dep_group|
|
18
|
+
modules = js_package[dep_group] || {}
|
19
|
+
modules_missing?(modules.keys)
|
16
20
|
end
|
17
21
|
end
|
18
22
|
|
@@ -6,14 +6,14 @@ module LearnTest
|
|
6
6
|
begin
|
7
7
|
repo = Git.open(FileUtils.pwd)
|
8
8
|
rescue
|
9
|
-
puts "You don't appear to be in a Learn lesson's directory. Please cd to an appropriate directory and try again."
|
9
|
+
puts "You don't appear to be in a Learn lesson's directory. Please enter 'learn open' or cd to an appropriate directory and try again."
|
10
10
|
die
|
11
11
|
end
|
12
12
|
|
13
13
|
if url = repo.remote.url
|
14
14
|
url.match(/(?:https?:\/\/|git@).*\/(.+?)(?:\.git)?$/)[1]
|
15
15
|
else
|
16
|
-
puts "You don't appear to be in a Learn lesson's directory. Please cd to an appropriate directory and try again."
|
16
|
+
puts "You don't appear to be in a Learn lesson's directory. Please enter 'learn open' or cd to an appropriate directory and try again."
|
17
17
|
die
|
18
18
|
end
|
19
19
|
end
|
@@ -23,4 +23,3 @@ module LearnTest
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
26
|
-
|
data/lib/learn_test/runner.rb
CHANGED
@@ -50,14 +50,12 @@ module LearnTest
|
|
50
50
|
def strategies
|
51
51
|
[
|
52
52
|
LearnTest::Strategies::CSharpNunit,
|
53
|
-
LearnTest::Strategies::Jasmine,
|
54
|
-
LearnTest::Strategies::GreenOnion,
|
55
53
|
LearnTest::Strategies::Rspec,
|
56
54
|
LearnTest::Strategies::Karma,
|
57
55
|
LearnTest::Strategies::Protractor,
|
58
56
|
LearnTest::Strategies::JavaJunit,
|
59
57
|
LearnTest::Strategies::Mocha,
|
60
|
-
LearnTest::Strategies::
|
58
|
+
LearnTest::Strategies::Pytest,
|
61
59
|
]
|
62
60
|
end
|
63
61
|
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'crack'
|
2
|
+
require_relative 'pytest/requirements_checker'
|
3
|
+
|
4
|
+
module LearnTest
|
5
|
+
module Strategies
|
6
|
+
class Pytest < LearnTest::Strategy
|
7
|
+
|
8
|
+
def service_endpoint
|
9
|
+
'/e/flatiron_pytest'
|
10
|
+
end
|
11
|
+
|
12
|
+
def detect
|
13
|
+
test_files.count > 0
|
14
|
+
end
|
15
|
+
|
16
|
+
def check_dependencies
|
17
|
+
LearnTest::Pytest::RequirementsChecker.check_installation
|
18
|
+
end
|
19
|
+
|
20
|
+
def run
|
21
|
+
system("python -m pytest #{options[:argv].join(' ')} --junitxml='./.results.xml'")
|
22
|
+
end
|
23
|
+
|
24
|
+
def output
|
25
|
+
@output ||= Crack::XML.parse(File.read('.results.xml'))["testsuite"]
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_files
|
29
|
+
# pytest will run all files of the form test_*.py or *_test.py
|
30
|
+
@test_files ||= Dir.glob("**/test_*.py") + Dir.glob("**/*_test.py")
|
31
|
+
end
|
32
|
+
|
33
|
+
def results
|
34
|
+
failed_count = output["failures"].to_i + output["errors"].to_i
|
35
|
+
skipped_count = output["skips"].to_i
|
36
|
+
passed_count = output["tests"].to_i - failed_count - skipped_count
|
37
|
+
{
|
38
|
+
username: username,
|
39
|
+
github_user_id: user_id,
|
40
|
+
learn_oauth_token: learn_oauth_token,
|
41
|
+
repo_name: runner.repo,
|
42
|
+
build: {
|
43
|
+
test_suite: [{
|
44
|
+
framework: 'pytest',
|
45
|
+
formatted_output: output.to_json,
|
46
|
+
duration: output["time"]
|
47
|
+
}]
|
48
|
+
},
|
49
|
+
examples: output["tests"].to_i,
|
50
|
+
passing_count: passed_count,
|
51
|
+
pending_count: skipped_count,
|
52
|
+
failure_count: failed_count,
|
53
|
+
failure_descriptions: concat_failure_descriptions
|
54
|
+
}
|
55
|
+
end
|
56
|
+
|
57
|
+
def cleanup
|
58
|
+
FileUtils.rm('.results.xml')
|
59
|
+
end
|
60
|
+
|
61
|
+
private
|
62
|
+
|
63
|
+
def calculate_duration
|
64
|
+
output[:results].map do |example|
|
65
|
+
example[:time]
|
66
|
+
end.inject(:+)
|
67
|
+
end
|
68
|
+
|
69
|
+
def concat_failure_descriptions
|
70
|
+
# if there is a single test the `testcase` xml parse turns out a hash
|
71
|
+
# instead of an array with a single hash. this will make sure single
|
72
|
+
# tests have the same output structure (Array) as multiple tests
|
73
|
+
output["testcase"] = [output["testcase"]].flatten
|
74
|
+
|
75
|
+
output["testcase"].reduce([]) do |errors, example|
|
76
|
+
if example.has_key?("failure")
|
77
|
+
errors << example.map{|k, v| "#{k}: #{v}"}
|
78
|
+
end
|
79
|
+
errors
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -1,35 +1,28 @@
|
|
1
1
|
require 'open3'
|
2
2
|
|
3
3
|
module LearnTest
|
4
|
-
module
|
4
|
+
module Pytest
|
5
5
|
class RequirementsChecker
|
6
6
|
def self.check_installation
|
7
|
-
new.check_installation
|
8
|
-
end
|
9
|
-
|
10
|
-
def check_installation
|
11
7
|
PythonChecker.check
|
12
8
|
PipChecker.check
|
9
|
+
PytestChecker.check
|
13
10
|
end
|
14
11
|
end
|
15
12
|
|
16
13
|
class PythonChecker
|
17
14
|
def self.check
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
def check
|
22
|
-
if !python_installed? || !correct_python_version?
|
15
|
+
if !self.python_installed? || !self.correct_python_version?
|
23
16
|
puts "Please install python 2.7.x or 3.x.x"
|
24
17
|
exit
|
25
18
|
end
|
26
19
|
end
|
27
20
|
|
28
|
-
def python_installed?
|
21
|
+
def self.python_installed?
|
29
22
|
!`which python`.empty?
|
30
23
|
end
|
31
24
|
|
32
|
-
def correct_python_version?
|
25
|
+
def self.correct_python_version?
|
33
26
|
output = Open3.popen2e('python', '--version')
|
34
27
|
version = output[1].read.strip
|
35
28
|
!!version.match(/ 2.7.*| 3.*/)
|
@@ -38,20 +31,29 @@ module LearnTest
|
|
38
31
|
|
39
32
|
class PipChecker
|
40
33
|
def self.check
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
def check
|
45
|
-
if !pip_installed?
|
34
|
+
if !self.pip_installed?
|
46
35
|
puts "Please ensure pip is installed"
|
47
36
|
exit
|
48
37
|
end
|
49
38
|
end
|
50
39
|
|
51
|
-
def pip_installed?
|
40
|
+
def self.pip_installed?
|
52
41
|
!`which pip`.empty?
|
53
42
|
end
|
54
43
|
end
|
44
|
+
|
45
|
+
class PytestChecker
|
46
|
+
def self.check
|
47
|
+
if !self.pytest_installed?
|
48
|
+
puts "Please ensure pytest is installed"
|
49
|
+
exit
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.pytest_installed?
|
54
|
+
!`which pytest`.empty?
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
55
58
|
end
|
56
59
|
end
|
57
|
-
|