learn-test 3.2.3 → 3.3.0.pre.4
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/.rubocop.yml +27 -0
- data/Gemfile +2 -0
- data/learn-test.gemspec +1 -0
- data/lib/learn_test.rb +15 -34
- data/lib/learn_test/git.rb +19 -0
- data/lib/learn_test/git/wip/base.rb +88 -0
- data/lib/learn_test/git/wip/branch.rb +36 -0
- data/lib/learn_test/git/wip/error.rb +23 -0
- data/lib/learn_test/repo_parser.rb +1 -1
- data/lib/learn_test/reporter.rb +23 -12
- data/lib/learn_test/runner.rb +6 -9
- data/lib/learn_test/strategies/none.rb +5 -5
- data/lib/learn_test/strategy.rb +1 -1
- data/lib/learn_test/version.rb +1 -1
- data/spec/features/rspec_unit_spec.rb +20 -6
- data/spec/fixtures/rspec-unit-spec/.results.json +1 -0
- data/spec/fixtures/rspec-unit-spec/spec/spec_helper.rb +0 -82
- data/spec/learn_test/git/wip/base_spec.rb +89 -0
- data/spec/learn_test/git/wip/branch_spec.rb +121 -0
- data/spec/learn_test/git/wip/error_spec.rb +41 -0
- data/spec/learn_test/git_spec.rb +38 -32
- data/spec/learn_test/reporter_spec.rb +44 -16
- data/spec/lib/learn_test/strategies/none_spec.rb +6 -25
- data/spec/spec_helper.rb +10 -0
- data/spec/support/git.rb +17 -0
- metadata +38 -12
- data/bin/learn-test-wip +0 -249
- data/lib/learn_test/git_wip.rb +0 -34
@@ -1,33 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
describe LearnTest::Strategies::None do
|
4
|
-
describe '#detect' do
|
5
|
-
context 'there is a .canvas file' do
|
6
|
-
before { FileUtils.touch('.canvas') }
|
7
|
-
after { FileUtils.rm('.canvas') }
|
8
|
-
|
9
|
-
it 'is true' do
|
10
|
-
runner = LearnTest::Runner.new(double(:repo), {})
|
11
|
-
strategy = LearnTest::Strategies::None.new(runner)
|
12
|
-
|
13
|
-
expect(strategy.detect).to eq(true)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
context 'there is no .canvas file' do
|
18
|
-
it 'is false' do
|
19
|
-
runner = LearnTest::Runner.new(double(:repo), {})
|
20
|
-
strategy = LearnTest::Strategies::None.new(runner)
|
21
|
-
|
22
|
-
expect(strategy.detect).to eq(false)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
4
|
describe '#run' do
|
28
5
|
it 'prints a message' do
|
29
6
|
strategy = LearnTest::Strategies::None.new(double(:runner, options: {}))
|
30
|
-
|
7
|
+
|
8
|
+
msg = <<~MSG
|
9
|
+
This directory doesn't appear to have any specs in it, so there’s no test to run.
|
10
|
+
|
11
|
+
If you are working on Canvas, this assignment has been submitted. You can resubmit by running `learn test` again.
|
12
|
+
MSG
|
31
13
|
|
32
14
|
expect { strategy.run }.to output(msg).to_stdout
|
33
15
|
end
|
@@ -52,7 +34,6 @@ describe LearnTest::Strategies::None do
|
|
52
34
|
expect(LearnTest::LearnOauthTokenParser).to receive(:get_learn_oauth_token)
|
53
35
|
.and_return(oauth_token)
|
54
36
|
|
55
|
-
|
56
37
|
expect(strategy.results).to eq(
|
57
38
|
username: username,
|
58
39
|
github_user_id: user_id,
|
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'aruba/rspec'
|
4
|
+
require 'digest'
|
5
|
+
require 'simplecov'
|
6
|
+
|
7
|
+
SimpleCov.start
|
8
|
+
|
3
9
|
require_relative '../lib/learn_test'
|
10
|
+
|
11
|
+
support_dir = File.join('./', 'spec', 'support', '**', '*.rb')
|
12
|
+
Dir.glob(support_dir).each { |f| require f }
|
13
|
+
|
4
14
|
RSpec.configure do |config|
|
5
15
|
config.expect_with :rspec do |expectations|
|
6
16
|
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
data/spec/support/git.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
def git_set_user
|
2
|
+
run_command_and_stop 'git config user.email "info@flatironschool.com"'
|
3
|
+
run_command_and_stop 'git config user.name "Flatiron School"'
|
4
|
+
end
|
5
|
+
|
6
|
+
def git_init
|
7
|
+
run_command_and_stop 'git init'
|
8
|
+
git_set_user
|
9
|
+
end
|
10
|
+
|
11
|
+
def git_add(files = '.')
|
12
|
+
run_command_and_stop "git add #{files}"
|
13
|
+
end
|
14
|
+
|
15
|
+
def git_commit(msg)
|
16
|
+
run_command_and_stop "git commit -m \"#{msg}\""
|
17
|
+
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: 3.
|
4
|
+
version: 3.3.0.pre.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Flatiron School
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -136,24 +136,37 @@ dependencies:
|
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: 0.8.1
|
139
|
-
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: zeitwerk
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: 2.4.0
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 2.4.0
|
153
|
+
description:
|
140
154
|
email:
|
141
155
|
- learn@flatironschool.com
|
142
156
|
executables:
|
143
157
|
- learn-test
|
144
|
-
- learn-test-wip
|
145
158
|
extensions: []
|
146
159
|
extra_rdoc_files: []
|
147
160
|
files:
|
148
161
|
- ".circleci/config.yml"
|
149
162
|
- ".gitignore"
|
150
163
|
- ".rspec"
|
164
|
+
- ".rubocop.yml"
|
151
165
|
- Gemfile
|
152
166
|
- LICENSE.txt
|
153
167
|
- README.md
|
154
168
|
- Rakefile
|
155
169
|
- bin/learn-test
|
156
|
-
- bin/learn-test-wip
|
157
170
|
- learn-test.gemspec
|
158
171
|
- lib/learn_test.rb
|
159
172
|
- lib/learn_test/client.rb
|
@@ -168,7 +181,10 @@ files:
|
|
168
181
|
- lib/learn_test/dependencies/selenium_server.rb
|
169
182
|
- lib/learn_test/dependency.rb
|
170
183
|
- lib/learn_test/file_finder.rb
|
171
|
-
- lib/learn_test/
|
184
|
+
- lib/learn_test/git.rb
|
185
|
+
- lib/learn_test/git/wip/base.rb
|
186
|
+
- lib/learn_test/git/wip/branch.rb
|
187
|
+
- lib/learn_test/git/wip/error.rb
|
172
188
|
- lib/learn_test/github_interactor.rb
|
173
189
|
- lib/learn_test/js_strategy.rb
|
174
190
|
- lib/learn_test/learn_oauth_token_parser.rb
|
@@ -197,10 +213,14 @@ files:
|
|
197
213
|
- node_modules/karma-json-reporter/package.json
|
198
214
|
- spec/features/rspec_unit_spec.rb
|
199
215
|
- spec/fixtures/.netrc
|
216
|
+
- spec/fixtures/rspec-unit-spec/.results.json
|
200
217
|
- spec/fixtures/rspec-unit-spec/.rspec
|
201
218
|
- spec/fixtures/rspec-unit-spec/lib/dog.rb
|
202
219
|
- spec/fixtures/rspec-unit-spec/spec/dog_spec.rb
|
203
220
|
- spec/fixtures/rspec-unit-spec/spec/spec_helper.rb
|
221
|
+
- spec/learn_test/git/wip/base_spec.rb
|
222
|
+
- spec/learn_test/git/wip/branch_spec.rb
|
223
|
+
- spec/learn_test/git/wip/error_spec.rb
|
204
224
|
- spec/learn_test/git_spec.rb
|
205
225
|
- spec/learn_test/reporter_spec.rb
|
206
226
|
- spec/learn_test/username_parser_spec.rb
|
@@ -208,11 +228,12 @@ files:
|
|
208
228
|
- spec/lib/learn_test/strategies/none_spec.rb
|
209
229
|
- spec/repo_parser_spec.rb
|
210
230
|
- spec/spec_helper.rb
|
231
|
+
- spec/support/git.rb
|
211
232
|
homepage: https://github.com/learn-co/learn-test
|
212
233
|
licenses:
|
213
234
|
- MIT
|
214
235
|
metadata: {}
|
215
|
-
post_install_message:
|
236
|
+
post_install_message:
|
216
237
|
rdoc_options: []
|
217
238
|
require_paths:
|
218
239
|
- lib
|
@@ -224,22 +245,26 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
224
245
|
version: 2.5.0
|
225
246
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
226
247
|
requirements:
|
227
|
-
- - "
|
248
|
+
- - ">"
|
228
249
|
- !ruby/object:Gem::Version
|
229
|
-
version:
|
250
|
+
version: 1.3.1
|
230
251
|
requirements: []
|
231
|
-
rubygems_version: 3.
|
232
|
-
signing_key:
|
252
|
+
rubygems_version: 3.1.2
|
253
|
+
signing_key:
|
233
254
|
specification_version: 4
|
234
255
|
summary: Runs RSpec, Karma, Mocha, and Python Pytest Test builds and pushes JSON output
|
235
256
|
to Learn.
|
236
257
|
test_files:
|
237
258
|
- spec/features/rspec_unit_spec.rb
|
238
259
|
- spec/fixtures/.netrc
|
260
|
+
- spec/fixtures/rspec-unit-spec/.results.json
|
239
261
|
- spec/fixtures/rspec-unit-spec/.rspec
|
240
262
|
- spec/fixtures/rspec-unit-spec/lib/dog.rb
|
241
263
|
- spec/fixtures/rspec-unit-spec/spec/dog_spec.rb
|
242
264
|
- spec/fixtures/rspec-unit-spec/spec/spec_helper.rb
|
265
|
+
- spec/learn_test/git/wip/base_spec.rb
|
266
|
+
- spec/learn_test/git/wip/branch_spec.rb
|
267
|
+
- spec/learn_test/git/wip/error_spec.rb
|
243
268
|
- spec/learn_test/git_spec.rb
|
244
269
|
- spec/learn_test/reporter_spec.rb
|
245
270
|
- spec/learn_test/username_parser_spec.rb
|
@@ -247,3 +272,4 @@ test_files:
|
|
247
272
|
- spec/lib/learn_test/strategies/none_spec.rb
|
248
273
|
- spec/repo_parser_spec.rb
|
249
274
|
- spec/spec_helper.rb
|
275
|
+
- spec/support/git.rb
|
data/bin/learn-test-wip
DELETED
@@ -1,249 +0,0 @@
|
|
1
|
-
#!/bin/bash
|
2
|
-
#
|
3
|
-
# Copyright Bart Trojanowski <bart@jukie.net>
|
4
|
-
#
|
5
|
-
# git-wip is a script that will manage Work In Progress (or WIP) branches.
|
6
|
-
# WIP branches are mostly throw away but identify points of development
|
7
|
-
# between commits. The intent is to tie this script into your editor so
|
8
|
-
# that each time you save your file, the git-wip script captures that
|
9
|
-
# state in git. git-wip also helps you return back to a previous state of
|
10
|
-
# development.
|
11
|
-
#
|
12
|
-
# See also http://github.com/bartman/git-wip
|
13
|
-
#
|
14
|
-
# The code is licensed as GPL v2 or, at your option, any later version.
|
15
|
-
# Please see http://www.gnu.org/licenses/gpl-2.0.txt
|
16
|
-
#
|
17
|
-
|
18
|
-
USAGE='[ save <message> [ --editor | --untracked | --no-gpg-sign ] | delete ] [ [--] <file>... ]'
|
19
|
-
LONG_USAGE="Manage Work In Progress branches
|
20
|
-
|
21
|
-
Commands:
|
22
|
-
git wip - create a new WIP commit
|
23
|
-
git wip save <message> - create a new WIP commit with custom message
|
24
|
-
|
25
|
-
Options for save:
|
26
|
-
-e --editor - be less verbose, assume called from an editor
|
27
|
-
-u --untracked - capture also untracked files
|
28
|
-
-i --ignored - capture also ignored files
|
29
|
-
--no-gpg-sign - do not sign commit; that is, countermand
|
30
|
-
'commit.gpgSign = true'
|
31
|
-
"
|
32
|
-
|
33
|
-
. "$(git --exec-path)/git-sh-setup"
|
34
|
-
|
35
|
-
require_work_tree
|
36
|
-
|
37
|
-
TMP=$(mktemp -d -t .git-wip)
|
38
|
-
|
39
|
-
cleanup () {
|
40
|
-
rm -f "$TMP-*"
|
41
|
-
}
|
42
|
-
|
43
|
-
trap cleanup 0
|
44
|
-
|
45
|
-
WIP_INDEX="$TMP-INDEX"
|
46
|
-
|
47
|
-
WIP_PREFIX=refs/wip/
|
48
|
-
WIP_COMMAND=
|
49
|
-
WIP_MESSAGE=WIP
|
50
|
-
EDITOR_MODE=false
|
51
|
-
|
52
|
-
dbg() {
|
53
|
-
if test -n "$WIP_DEBUG"
|
54
|
-
then
|
55
|
-
printf '# %s\n' "$*"
|
56
|
-
fi
|
57
|
-
}
|
58
|
-
|
59
|
-
# some errors are not worth reporting in --editor mode
|
60
|
-
report_soft_error () {
|
61
|
-
$EDITOR_MODE && exit 0
|
62
|
-
die "$@"
|
63
|
-
}
|
64
|
-
|
65
|
-
get_work_branch () {
|
66
|
-
ref=$(git symbolic-ref -q HEAD) \
|
67
|
-
|| report_soft_error "git-wip requires a branch"
|
68
|
-
|
69
|
-
|
70
|
-
branch=${ref#refs/heads/}
|
71
|
-
if [ $branch = $ref ] ; then
|
72
|
-
die "git-wip requires a local branch"
|
73
|
-
fi
|
74
|
-
|
75
|
-
echo $branch
|
76
|
-
}
|
77
|
-
|
78
|
-
check_files () {
|
79
|
-
local -a files="$@"
|
80
|
-
|
81
|
-
for f in "${files[@]}"
|
82
|
-
do
|
83
|
-
[ -f "$f" -o -d "$f" ] || die "$f: No such file or directory."
|
84
|
-
done
|
85
|
-
}
|
86
|
-
|
87
|
-
build_new_tree () {
|
88
|
-
local untracked=$1 ; shift
|
89
|
-
local ignored=$1 ; shift
|
90
|
-
local files="$@"
|
91
|
-
|
92
|
-
(
|
93
|
-
set -e
|
94
|
-
rm -f "$WIP_INDEX"
|
95
|
-
cp -p "$GIT_DIR/index" "$WIP_INDEX"
|
96
|
-
export GIT_INDEX_FILE="$WIP_INDEX"
|
97
|
-
git read-tree $wip_parent
|
98
|
-
if [ -n "$files" ]
|
99
|
-
then
|
100
|
-
git add -f "${files[@]}"
|
101
|
-
else
|
102
|
-
git add --update .
|
103
|
-
fi
|
104
|
-
[ -n "$untracked" ] && git add .
|
105
|
-
[ -n "$ignored" ] && git add -f -A .
|
106
|
-
git write-tree
|
107
|
-
rm -f "$WIP_INDEX"
|
108
|
-
)
|
109
|
-
}
|
110
|
-
|
111
|
-
do_save () {
|
112
|
-
local msg="$1" ; shift
|
113
|
-
local add_untracked=
|
114
|
-
local add_ignored=
|
115
|
-
local no_sign=
|
116
|
-
|
117
|
-
while test $# != 0
|
118
|
-
do
|
119
|
-
case "$1" in
|
120
|
-
-e|--editor)
|
121
|
-
EDITOR_MODE=true
|
122
|
-
;;
|
123
|
-
-u|--untracked)
|
124
|
-
add_untracked=t
|
125
|
-
;;
|
126
|
-
-i|--ignored)
|
127
|
-
add_ignored=t
|
128
|
-
;;
|
129
|
-
--no-gpg-sign)
|
130
|
-
no_sign=--no-gpg-sign
|
131
|
-
;;
|
132
|
-
--)
|
133
|
-
shift
|
134
|
-
break
|
135
|
-
;;
|
136
|
-
*)
|
137
|
-
[ -f "$1" ] && break
|
138
|
-
die "Unknown option '$1'."
|
139
|
-
;;
|
140
|
-
esac
|
141
|
-
shift
|
142
|
-
done
|
143
|
-
local files="$@"
|
144
|
-
local "add_untracked=$add_untracked"
|
145
|
-
local "add_ignored=$add_ignored"
|
146
|
-
|
147
|
-
if test ${#files} -gt 0
|
148
|
-
then
|
149
|
-
check_files "${files[@]}"
|
150
|
-
fi
|
151
|
-
|
152
|
-
dbg "msg=$msg"
|
153
|
-
dbg "files=$files"
|
154
|
-
|
155
|
-
local work_branch=$(get_work_branch)
|
156
|
-
local wip_branch="$WIP_PREFIX$work_branch"
|
157
|
-
|
158
|
-
dbg "work_branch=$work_branch"
|
159
|
-
dbg "wip_branch=$wip_branch"
|
160
|
-
|
161
|
-
# enable reflog
|
162
|
-
local wip_branch_file="$GIT_DIR/logs/$wip_branch"
|
163
|
-
dbg "wip_branch_file=$wip_branch_file"
|
164
|
-
mkdir -p "$(dirname "$wip_branch_file")"
|
165
|
-
: >>"$wip_branch_file"
|
166
|
-
|
167
|
-
if ! work_last=$(git rev-parse --verify $work_branch)
|
168
|
-
then
|
169
|
-
report_soft_error "'$work_branch' branch has no commits."
|
170
|
-
fi
|
171
|
-
|
172
|
-
dbg "work_last=$work_last"
|
173
|
-
|
174
|
-
if wip_last=$(git rev-parse --quiet --verify $wip_branch)
|
175
|
-
then
|
176
|
-
local base=$(git merge-base $wip_last $work_last) \
|
177
|
-
|| die "'work_branch' and '$wip_branch' are unrelated."
|
178
|
-
|
179
|
-
if [ $base = $work_last ] ; then
|
180
|
-
wip_parent=$wip_last
|
181
|
-
else
|
182
|
-
wip_parent=$work_last
|
183
|
-
fi
|
184
|
-
else
|
185
|
-
wip_parent=$work_last
|
186
|
-
fi
|
187
|
-
|
188
|
-
dbg "wip_parent=$wip_parent"
|
189
|
-
|
190
|
-
new_tree=$( build_new_tree "$add_untracked" "$add_ignored" "${files[@]}" ) \
|
191
|
-
|| die "Cannot save the current worktree state."
|
192
|
-
|
193
|
-
dbg "new_tree=$new_tree"
|
194
|
-
|
195
|
-
if git diff-tree --exit-code --quiet $new_tree $wip_parent ; then
|
196
|
-
report_soft_error "no changes"
|
197
|
-
fi
|
198
|
-
|
199
|
-
dbg "... has changes"
|
200
|
-
|
201
|
-
new_wip=$(printf '%s\n' "$msg" | git commit-tree $no_sign $new_tree -p $wip_parent 2>/dev/null) \
|
202
|
-
|| die "Cannot record working tree state"
|
203
|
-
|
204
|
-
dbg "new_wip=$new_wip"
|
205
|
-
|
206
|
-
msg1=$(printf '%s\n' "$msg" | sed -e 1q)
|
207
|
-
git update-ref -m "git-wip: $msg1" $wip_branch $new_wip $wip_last
|
208
|
-
|
209
|
-
dbg "SUCCESS"
|
210
|
-
}
|
211
|
-
|
212
|
-
if test $# -eq 0
|
213
|
-
then
|
214
|
-
dbg "no arguments"
|
215
|
-
|
216
|
-
do_save "WIP"
|
217
|
-
exit $?
|
218
|
-
fi
|
219
|
-
|
220
|
-
dbg "args: $@"
|
221
|
-
|
222
|
-
case "$1" in
|
223
|
-
save)
|
224
|
-
WIP_COMMAND=$1
|
225
|
-
shift
|
226
|
-
if [ -n "$1" ]
|
227
|
-
then
|
228
|
-
WIP_MESSAGE="$1"
|
229
|
-
shift
|
230
|
-
fi
|
231
|
-
;;
|
232
|
-
--*)
|
233
|
-
;;
|
234
|
-
*)
|
235
|
-
[ -f "$1" ] || die "Unknown command '$1'."
|
236
|
-
;;
|
237
|
-
esac
|
238
|
-
|
239
|
-
case $WIP_COMMAND in
|
240
|
-
save)
|
241
|
-
do_save "$WIP_MESSAGE" $@
|
242
|
-
;;
|
243
|
-
*)
|
244
|
-
usage
|
245
|
-
exit 1
|
246
|
-
;;
|
247
|
-
esac
|
248
|
-
|
249
|
-
# vim: set noet sw=8
|