learn-test 2.6.1 → 2.7.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
  SHA256:
3
- metadata.gz: a8d6dc446d93aaba676a4262cd566d17b2ce0ab360252279f8a69898022dcb3d
4
- data.tar.gz: 3fc0f0d6763dd7ea99c6a392ddd01d462105bfd437e4c767d3eac77ca90388c2
3
+ metadata.gz: a98ee1823d7eaa0784005b131da8261b48f009c5479536157d2061ef1e9ec29f
4
+ data.tar.gz: 21dfb4ce2145c6c662f0ef0c0c686ad80a325920cd506c8629e730dcbdbd6430
5
5
  SHA512:
6
- metadata.gz: e3445f079ea9ce53820d8423b705e8b57fa073d243fb3539c9ca17898158ccb28674cd390307e821b98a960accade10051a0c6152b53deaad954c481bc6b8398
7
- data.tar.gz: 1872a4b258d1d352a34847c21a8c6e792b4d9c153d419b2267a043e2e3f37f550298c9feda7ba2454a5f0b9aca852c318e6376976084fa1b7f0260ee8c64b635
6
+ metadata.gz: f11dbf50918100c382e61b8457ca1edda76685766045afbc546bac3d08eada57c08b3e6a5272793ff0c4a5b6ac9f1dc2cf8b03558a0a7197c3271fe17b6c0d71
7
+ data.tar.gz: 4341c6a7b0fd636b3302ec4dd5c49f0b9a50ee3b261542a2304167596dd3d7c2a301f1289e747a3d2e5e912eb08edea7ac99ef34cf6dad80a5a5c6a582074566
@@ -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
@@ -1,6 +1,5 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
- /Gemfile.lock
4
3
  /_yardoc/
5
4
  /coverage/
6
5
  /doc/
data/Gemfile CHANGED
@@ -1,4 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in learn.gemspec
4
3
  gemspec
4
+
5
+ group :test do
6
+ gem 'rspec_junit_formatter', '~> 0.4.1'
7
+ end
@@ -0,0 +1,83 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ learn-test (2.6.1)
5
+ colorize (~> 0.8.1)
6
+ crack (~> 0.4.3)
7
+ faraday (~> 0.9)
8
+ git (~> 1.2)
9
+ jasmine (~> 2.6.0, >= 2.6.0)
10
+ jasmine-core (< 2.99.1)
11
+ netrc (~> 0.11.0)
12
+ oj (~> 2.9)
13
+ rainbow (= 1.99.2)
14
+ rspec (~> 3.0)
15
+ selenium-webdriver (~> 2.52.0, >= 2.52.0)
16
+ webrick (~> 1.3.1, >= 1.3.1)
17
+
18
+ GEM
19
+ remote: https://rubygems.org/
20
+ specs:
21
+ childprocess (0.9.0)
22
+ ffi (~> 1.0, >= 1.0.11)
23
+ colorize (0.8.1)
24
+ crack (0.4.3)
25
+ safe_yaml (~> 1.0.0)
26
+ diff-lcs (1.4.4)
27
+ faraday (0.17.3)
28
+ multipart-post (>= 1.2, < 3)
29
+ ffi (1.13.1)
30
+ git (1.7.0)
31
+ rchardet (~> 1.8)
32
+ jasmine (2.6.0)
33
+ jasmine-core (>= 2.6.0, < 3.0.0)
34
+ phantomjs
35
+ rack (>= 1.2.1)
36
+ rake
37
+ jasmine-core (2.99.0)
38
+ multi_json (1.15.0)
39
+ multipart-post (2.1.1)
40
+ netrc (0.11.0)
41
+ oj (2.18.5)
42
+ phantomjs (2.1.1.0)
43
+ rack (2.2.3)
44
+ rainbow (1.99.2)
45
+ rake (13.0.1)
46
+ rchardet (1.8.0)
47
+ rspec (3.9.0)
48
+ rspec-core (~> 3.9.0)
49
+ rspec-expectations (~> 3.9.0)
50
+ rspec-mocks (~> 3.9.0)
51
+ rspec-core (3.9.2)
52
+ rspec-support (~> 3.9.3)
53
+ rspec-expectations (3.9.2)
54
+ diff-lcs (>= 1.2.0, < 2.0)
55
+ rspec-support (~> 3.9.0)
56
+ rspec-mocks (3.9.1)
57
+ diff-lcs (>= 1.2.0, < 2.0)
58
+ rspec-support (~> 3.9.0)
59
+ rspec-support (3.9.3)
60
+ rspec_junit_formatter (0.4.1)
61
+ rspec-core (>= 2, < 4, != 2.12.0)
62
+ rubyzip (1.3.0)
63
+ safe_yaml (1.0.5)
64
+ selenium-webdriver (2.52.0)
65
+ childprocess (~> 0.5)
66
+ multi_json (~> 1.0)
67
+ rubyzip (~> 1.0)
68
+ websocket (~> 1.0)
69
+ webrick (1.3.1)
70
+ websocket (1.2.8)
71
+
72
+ PLATFORMS
73
+ ruby
74
+
75
+ DEPENDENCIES
76
+ bundler (~> 2.1.4)
77
+ learn-test!
78
+ rake (~> 13.0.1)
79
+ rspec (~> 3.8)
80
+ rspec_junit_formatter (~> 0.4.1)
81
+
82
+ BUNDLED WITH
83
+ 2.1.4
@@ -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
@@ -18,8 +18,9 @@ Gem::Specification.new do |spec|
18
18
  spec.require_paths = ["lib", "bin"]
19
19
  spec.required_ruby_version = '>= 2.3.0'
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.7"
22
- spec.add_development_dependency "rake", "~> 10.0"
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"
23
24
  spec.add_runtime_dependency "rspec", "~> 3.0"
24
25
  spec.add_runtime_dependency "netrc", "~> 0.11.0"
25
26
  spec.add_runtime_dependency "git", "~> 1.2"
@@ -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
-
@@ -25,6 +25,10 @@ module LearnTest
25
25
  argv << '--fail-fast'
26
26
  end
27
27
 
28
+ if example_option_present?
29
+ argv << options[:example].map{|e| "--example #{e}"}.join(" ")
30
+ end
31
+
28
32
  # Don't pass the test/local flag from learn binary to rspec runner.
29
33
  argv.delete("--test")
30
34
  argv.delete("-t")
@@ -83,6 +87,10 @@ module LearnTest
83
87
  options[:fail_fast]
84
88
  end
85
89
 
90
+ def example_option_present?
91
+ options[:example]
92
+ end
93
+
86
94
  def dot_rspec
87
95
  @dot_rspec ||= File.readlines('.rspec').map(&:strip) if File.exist?('.rspec')
88
96
  end
@@ -7,7 +7,7 @@ module LearnTest
7
7
 
8
8
  if !LearnTest::LearnOauthTokenParser.get_learn_oauth_token && (!username || user_id == 'none')
9
9
  print "Enter your github username: "
10
- username = gets.strip
10
+ username = $stdin.gets.strip
11
11
  user_id = LearnTest::GithubInteractor.get_user_id_for(username)
12
12
  parser.write(username, user_id)
13
13
  end
@@ -1,3 +1,3 @@
1
1
  module LearnTest
2
- VERSION = '2.6.1'
2
+ VERSION = '2.7.0'
3
3
  end
@@ -1,10 +1,35 @@
1
1
  describe "Running a RSpec Unit Test" do
2
+ before(:all) do
3
+ # While it doesn't cause these tests to fail, nasty messages occur (and more)
4
+ # when either a ~/.netrc entry or file itself doesn't exist. This aims to correct that,
5
+ # and will only ever be called once.
6
+
7
+ LearnTest::UsernameParser.get_username
8
+ end
9
+
2
10
  context 'a basic rspec unit test' do
3
11
  it 'runs the spec with 0 failures' do
4
12
  output = `cd ./spec/fixtures/rspec-unit-spec && ./../../../bin/learn-test --local --test`
5
13
 
6
- expect(output).to include('1 example, 0 failures')
14
+ expect(output).to include('3 examples, 0 failures')
7
15
  expect(output).to_not include('1 failures')
8
16
  end
9
17
  end
18
+
19
+ context 'with the --example flag' do
20
+ it 'runs only the appropriate tests' do
21
+ output = `cd ./spec/fixtures/rspec-unit-spec && ./../../../bin/learn-test --local --test --example multiple`
22
+
23
+ expect(output).to include('1 example, 0 failures')
24
+ expect(output).to_not include('2 examples')
25
+ end
26
+
27
+ it 'accepts multiple examples' do
28
+ output = `cd ./spec/fixtures/rspec-unit-spec && ./../../../bin/learn-test --local --test --example multiple --example accepts`
29
+
30
+ expect(output).to include('2 examples, 0 failures')
31
+ expect(output).to_not include('3 examples')
32
+ expect(output).to_not include('1 example')
33
+ end
34
+ end
10
35
  end
@@ -0,0 +1,3 @@
1
+ machine flatiron-push
2
+ login tmilewski
3
+ password 26691
@@ -4,4 +4,12 @@ describe Dog do
4
4
  it 'runs the spec spec correctly' do
5
5
  expect(subject).to be_an_instance_of(Dog)
6
6
  end
7
+
8
+ it 'has multiple specs' do
9
+ expect(subject).not_to be_an_instance_of(String)
10
+ end
11
+
12
+ it 'accepts more than one example' do
13
+ expect(subject).not_to be_an_instance_of(String)
14
+ end
7
15
  end
@@ -0,0 +1,61 @@
1
+ describe LearnTest::UsernameParser do
2
+ subject { LearnTest::UsernameParser }
3
+
4
+ let(:dbl) { instance_double(LearnTest::NetrcInteractor) }
5
+
6
+ let!(:username) { 'learn-co' }
7
+ let!(:user_id) { '12345' }
8
+ let!(:token) { 'abc123' }
9
+
10
+ context 'user details are stored in ~/.netrc' do
11
+ context 'username/password' do
12
+ it 'should return a username' do
13
+ expect(LearnTest::LearnOauthTokenParser).to receive(:get_learn_oauth_token).and_return(token)
14
+
15
+ expect(LearnTest::NetrcInteractor).to receive(:new).and_return(dbl)
16
+ expect(dbl).to receive(:username).and_return(username)
17
+ expect(dbl).to receive(:user_id).and_return(user_id)
18
+
19
+ expect(dbl).to_not receive(:write)
20
+
21
+ expect(subject.get_username).to eq(username)
22
+ end
23
+ end
24
+
25
+ context 'oauth token' do
26
+ it 'should return a username' do
27
+ expect(LearnTest::LearnOauthTokenParser).to receive(:get_learn_oauth_token).and_return(token)
28
+
29
+ expect(LearnTest::NetrcInteractor).to receive(:new).and_return(dbl)
30
+ expect(dbl).to receive(:username).and_return(nil)
31
+ expect(dbl).to receive(:user_id).and_return(nil)
32
+
33
+ expect(dbl).to_not receive(:write)
34
+
35
+ expect(subject.get_username).to eq(nil)
36
+ end
37
+ end
38
+ end
39
+
40
+ context 'user details are not stored in ~/.netrc' do
41
+ it 'should ask for and store a username' do
42
+ @original_stdout = $stdout
43
+ $stdout = File.open(File::NULL, 'w')
44
+
45
+ expect(LearnTest::LearnOauthTokenParser).to receive(:get_learn_oauth_token).and_return(nil)
46
+
47
+ expect(LearnTest::NetrcInteractor).to receive(:new).and_return(dbl)
48
+ expect(dbl).to receive(:username).and_return(nil)
49
+ expect(dbl).to receive(:user_id).and_return(nil)
50
+
51
+ expect($stdin).to receive(:gets).and_return(username)
52
+ expect(LearnTest::GithubInteractor).to receive(:get_user_id_for).with(username).and_return(user_id)
53
+ expect(dbl).to receive(:write).with(username, user_id)
54
+
55
+ expect(subject.get_username).to eq(username)
56
+
57
+ $stdout = @original_stdout
58
+ @original_stdout = nil
59
+ end
60
+ end
61
+ 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.6.1
4
+ version: 2.7.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: 2018-11-19 00:00:00.000000000 Z
11
+ date: 2020-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,28 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: 2.1.4
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: 2.1.4
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: 13.0.1
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: 13.0.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.8'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.8'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rspec
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -126,20 +140,20 @@ dependencies:
126
140
  name: jasmine
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
- - - ">="
143
+ - - "~>"
130
144
  - !ruby/object:Gem::Version
131
145
  version: 2.6.0
132
- - - "~>"
146
+ - - ">="
133
147
  - !ruby/object:Gem::Version
134
148
  version: 2.6.0
135
149
  type: :runtime
136
150
  prerelease: false
137
151
  version_requirements: !ruby/object:Gem::Requirement
138
152
  requirements:
139
- - - ">="
153
+ - - "~>"
140
154
  - !ruby/object:Gem::Version
141
155
  version: 2.6.0
142
- - - "~>"
156
+ - - ">="
143
157
  - !ruby/object:Gem::Version
144
158
  version: 2.6.0
145
159
  - !ruby/object:Gem::Dependency
@@ -174,20 +188,20 @@ dependencies:
174
188
  name: webrick
175
189
  requirement: !ruby/object:Gem::Requirement
176
190
  requirements:
177
- - - ">="
191
+ - - "~>"
178
192
  - !ruby/object:Gem::Version
179
193
  version: 1.3.1
180
- - - "~>"
194
+ - - ">="
181
195
  - !ruby/object:Gem::Version
182
196
  version: 1.3.1
183
197
  type: :runtime
184
198
  prerelease: false
185
199
  version_requirements: !ruby/object:Gem::Requirement
186
200
  requirements:
187
- - - ">="
201
+ - - "~>"
188
202
  - !ruby/object:Gem::Version
189
203
  version: 1.3.1
190
- - - "~>"
204
+ - - ">="
191
205
  - !ruby/object:Gem::Version
192
206
  version: 1.3.1
193
207
  - !ruby/object:Gem::Dependency
@@ -208,20 +222,20 @@ dependencies:
208
222
  name: selenium-webdriver
209
223
  requirement: !ruby/object:Gem::Requirement
210
224
  requirements:
211
- - - ">="
225
+ - - "~>"
212
226
  - !ruby/object:Gem::Version
213
227
  version: 2.52.0
214
- - - "~>"
228
+ - - ">="
215
229
  - !ruby/object:Gem::Version
216
230
  version: 2.52.0
217
231
  type: :runtime
218
232
  prerelease: false
219
233
  version_requirements: !ruby/object:Gem::Requirement
220
234
  requirements:
221
- - - ">="
235
+ - - "~>"
222
236
  - !ruby/object:Gem::Version
223
237
  version: 2.52.0
224
- - - "~>"
238
+ - - ">="
225
239
  - !ruby/object:Gem::Version
226
240
  version: 2.52.0
227
241
  description:
@@ -232,9 +246,11 @@ executables:
232
246
  extensions: []
233
247
  extra_rdoc_files: []
234
248
  files:
249
+ - ".circleci/config.yml"
235
250
  - ".gitignore"
236
251
  - ".rspec"
237
252
  - Gemfile
253
+ - Gemfile.lock
238
254
  - LICENSE.txt
239
255
  - README.md
240
256
  - Rakefile
@@ -303,6 +319,7 @@ files:
303
319
  - node_modules/karma-json-reporter/package.json
304
320
  - spec/features/jasmine_jquery_fixtures_spec.rb
305
321
  - spec/features/rspec_unit_spec.rb
322
+ - spec/fixtures/.netrc
306
323
  - spec/fixtures/jasmine-jquery-fixtures/index.html
307
324
  - spec/fixtures/jasmine-jquery-fixtures/requires.yml
308
325
  - spec/fixtures/jasmine-jquery-fixtures/spec/jasmine-jquery-fixtures-spec.js
@@ -311,6 +328,7 @@ files:
311
328
  - spec/fixtures/rspec-unit-spec/spec/dog_spec.rb
312
329
  - spec/fixtures/rspec-unit-spec/spec/spec_helper.rb
313
330
  - spec/learn_test/reporter_spec.rb
331
+ - spec/learn_test/username_parser_spec.rb
314
332
  - spec/lib/learn_test/strategies/mocha_spec.rb
315
333
  - spec/repo_parser_spec.rb
316
334
  - spec/spec_helper.rb
@@ -334,8 +352,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
334
352
  - !ruby/object:Gem::Version
335
353
  version: '0'
336
354
  requirements: []
337
- rubyforge_project:
338
- rubygems_version: 2.7.8
355
+ rubygems_version: 3.1.2
339
356
  signing_key:
340
357
  specification_version: 4
341
358
  summary: Runs RSpec, Jasmine, Karma, Mocha, and Python Pytest Test builds and pushes
@@ -343,6 +360,7 @@ summary: Runs RSpec, Jasmine, Karma, Mocha, and Python Pytest Test builds and pu
343
360
  test_files:
344
361
  - spec/features/jasmine_jquery_fixtures_spec.rb
345
362
  - spec/features/rspec_unit_spec.rb
363
+ - spec/fixtures/.netrc
346
364
  - spec/fixtures/jasmine-jquery-fixtures/index.html
347
365
  - spec/fixtures/jasmine-jquery-fixtures/requires.yml
348
366
  - spec/fixtures/jasmine-jquery-fixtures/spec/jasmine-jquery-fixtures-spec.js
@@ -351,6 +369,7 @@ test_files:
351
369
  - spec/fixtures/rspec-unit-spec/spec/dog_spec.rb
352
370
  - spec/fixtures/rspec-unit-spec/spec/spec_helper.rb
353
371
  - spec/learn_test/reporter_spec.rb
372
+ - spec/learn_test/username_parser_spec.rb
354
373
  - spec/lib/learn_test/strategies/mocha_spec.rb
355
374
  - spec/repo_parser_spec.rb
356
375
  - spec/spec_helper.rb