learn-test 2.6.1 → 2.7.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
  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