et 0.7.2 → 0.7.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +30 -0
- data/Gemfile.lock +1 -1
- data/lib/et.rb +0 -2
- data/lib/et/lesson.rb +2 -6
- data/lib/et/runner.rb +0 -14
- data/lib/et/submission_file_list.rb +3 -2
- data/lib/et/version.rb +1 -1
- data/spec/data/.et +1 -0
- data/spec/lib/lesson_spec.rb +1 -1
- data/spec/lib/submission_file_list_spec.rb +2 -2
- metadata +4 -10
- data/lib/et/challenge.rb +0 -7
- data/lib/et/exercise.rb +0 -15
- data/spec/cli/run_exercise_test_suite_spec.rb +0 -31
- data/spec/data/bloated-challenge/.lesson.yml +0 -3
- data/spec/data/sample-challenge/.lesson.yml +0 -4
- data/spec/data/sample-exercise/.lesson.yml +0 -4
- data/spec/lib/challenge_spec.rb +0 -78
- data/spec/lib/exercise_spec.rb +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 331e5a91f8e482aa1fc11fdc252bb0fdb56e9f30a5e7540ab835eff988fe09fb
|
4
|
+
data.tar.gz: baae2e27d8c5535f80ce4ec00a4e8068ee94ddb35cda65351838871f32ff7335
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ecde7b950b03188702855221929ed4ff23e2e47578504123b9521ece21721e3d2d991942090544aac5b92d139b0a7563b351b9d5f2bd34cd938af9c82fb242a4
|
7
|
+
data.tar.gz: 67136c5f8a5a3ad58fce15cb0b23f3bf25c40b4e02e2df8e4c3a59a4b0dd0f4861242b0fe7dd501a78541f4e2903e955c5c9ee4c0be173868e7b79d9f7231b94
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
2
|
+
# They are provided by a third-party and are governed by
|
3
|
+
# separate terms of service, privacy policy, and support
|
4
|
+
# documentation.
|
5
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
+
|
8
|
+
name: Ruby
|
9
|
+
|
10
|
+
on:
|
11
|
+
push:
|
12
|
+
branches: [ master ]
|
13
|
+
pull_request:
|
14
|
+
|
15
|
+
jobs:
|
16
|
+
test:
|
17
|
+
|
18
|
+
runs-on: macos-latest
|
19
|
+
|
20
|
+
steps:
|
21
|
+
- uses: actions/checkout@v2
|
22
|
+
- name: Set up Ruby
|
23
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
24
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
25
|
+
# uses: ruby/setup-ruby@v1
|
26
|
+
uses: ruby/setup-ruby@ec106b438a1ff6ff109590de34ddc62c540232e0
|
27
|
+
- name: Install dependencies
|
28
|
+
run: bundle install
|
29
|
+
- name: Run tests
|
30
|
+
run: bundle exec rake
|
data/Gemfile.lock
CHANGED
data/lib/et.rb
CHANGED
data/lib/et/lesson.rb
CHANGED
@@ -53,18 +53,14 @@ module ET
|
|
53
53
|
|
54
54
|
protected
|
55
55
|
|
56
|
-
def config
|
57
|
-
@config ||= YAML.load_file(File.join(dir, ".lesson.yml"))
|
58
|
-
end
|
59
|
-
|
60
56
|
def random_archive_path
|
61
57
|
File.join(Dir.mktmpdir, "#{SecureRandom.hex}.tar.gz")
|
62
58
|
end
|
63
59
|
|
64
60
|
def find_lesson_dir(current_dir)
|
65
|
-
|
61
|
+
parent_directory = File.dirname(current_dir)
|
66
62
|
|
67
|
-
if
|
63
|
+
if Config.new(parent_directory).exists?
|
68
64
|
current_dir
|
69
65
|
elsif current_dir == "." || Pathname.new(current_dir).root?
|
70
66
|
nil
|
data/lib/et/runner.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require "gli"
|
2
|
-
require "yaml"
|
3
2
|
|
4
3
|
module ET
|
5
4
|
class Runner
|
@@ -77,19 +76,6 @@ module ET
|
|
77
76
|
end
|
78
77
|
end
|
79
78
|
|
80
|
-
desc "Run an exercise test suite."
|
81
|
-
command :test do |c|
|
82
|
-
c.action do |_global_options, _options, _cmdargs|
|
83
|
-
exercise = Exercise.new(cwd)
|
84
|
-
|
85
|
-
if exercise.exists?
|
86
|
-
exercise.run_tests
|
87
|
-
else
|
88
|
-
raise StandardError.new("Not in an exercise directory.")
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
79
|
run(args)
|
94
80
|
end
|
95
81
|
|
data/lib/et/version.rb
CHANGED
data/spec/data/.et
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
#required for et to do its thing
|
data/spec/lib/lesson_spec.rb
CHANGED
@@ -9,8 +9,8 @@ describe ET::SubmissionFileList do
|
|
9
9
|
expect(file_list).to include('problem.rb')
|
10
10
|
end
|
11
11
|
|
12
|
-
it '
|
13
|
-
expect(file_list).
|
12
|
+
it 'does not include .etignore' do
|
13
|
+
expect(file_list).to_not include('.etignore')
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'ignores a standard file' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: et
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Sheehan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-06-
|
11
|
+
date: 2020-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -131,6 +131,7 @@ executables:
|
|
131
131
|
extensions: []
|
132
132
|
extra_rdoc_files: []
|
133
133
|
files:
|
134
|
+
- ".github/workflows/ruby.yml"
|
134
135
|
- ".gitignore"
|
135
136
|
- ".rspec"
|
136
137
|
- ".rubocop.yml"
|
@@ -147,9 +148,7 @@ files:
|
|
147
148
|
- lib/et.rb
|
148
149
|
- lib/et/api.rb
|
149
150
|
- lib/et/archive_manager.rb
|
150
|
-
- lib/et/challenge.rb
|
151
151
|
- lib/et/config.rb
|
152
|
-
- lib/et/exercise.rb
|
153
152
|
- lib/et/fallback_connection.rb
|
154
153
|
- lib/et/formatter.rb
|
155
154
|
- lib/et/lesson.rb
|
@@ -160,10 +159,9 @@ files:
|
|
160
159
|
- spec/cli/get_lesson_spec.rb
|
161
160
|
- spec/cli/init_spec.rb
|
162
161
|
- spec/cli/list_lessons_spec.rb
|
163
|
-
- spec/cli/run_exercise_test_suite_spec.rb
|
164
162
|
- spec/cli/submit_lesson_spec.rb
|
163
|
+
- spec/data/.et
|
165
164
|
- spec/data/bloated-challenge/.etignore
|
166
|
-
- spec/data/bloated-challenge/.lesson.yml
|
167
165
|
- spec/data/bloated-challenge/bloated-challenge.md
|
168
166
|
- spec/data/bloated-challenge/node_modules/boo/somefile.js
|
169
167
|
- spec/data/bloated-challenge/problem.rb
|
@@ -171,20 +169,16 @@ files:
|
|
171
169
|
- spec/data/challenge.json
|
172
170
|
- spec/data/lessons.json
|
173
171
|
- spec/data/sample-challenge/.etignore
|
174
|
-
- spec/data/sample-challenge/.lesson.yml
|
175
172
|
- spec/data/sample-challenge/problem.rb
|
176
173
|
- spec/data/sample-challenge/sample-challenge.md
|
177
174
|
- spec/data/sample-exercise/.etignore
|
178
|
-
- spec/data/sample-exercise/.lesson.yml
|
179
175
|
- spec/data/sample-exercise/lib/sample_exercise.rb
|
180
176
|
- spec/data/sample-exercise/sample-exercise.md
|
181
177
|
- spec/data/sample-exercise/test/sample_exercise_test.rb
|
182
178
|
- spec/data/some-challenge.tar.gz
|
183
179
|
- spec/lib/api_spec.rb
|
184
180
|
- spec/lib/archive_manager_spec.rb
|
185
|
-
- spec/lib/challenge_spec.rb
|
186
181
|
- spec/lib/config_spec.rb
|
187
|
-
- spec/lib/exercise_spec.rb
|
188
182
|
- spec/lib/fallback_connection_spec.rb
|
189
183
|
- spec/lib/lesson_spec.rb
|
190
184
|
- spec/lib/operating_system_spec.rb
|
data/lib/et/challenge.rb
DELETED
data/lib/et/exercise.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
module ET
|
2
|
-
class Exercise < Lesson
|
3
|
-
def run_tests
|
4
|
-
system("rspec", "--color", "--fail-fast", spec_file)
|
5
|
-
end
|
6
|
-
|
7
|
-
def exists?
|
8
|
-
!dir.nil? && config["type"] == "exercise"
|
9
|
-
end
|
10
|
-
|
11
|
-
def spec_file
|
12
|
-
File.join(dir, "test", "#{slug.gsub("-", "_")}_test.rb")
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
describe "run exercise test suite" do
|
2
|
-
context "when in an exercise directory" do
|
3
|
-
it "runs the test suite" do
|
4
|
-
Dir.mktmpdir("test") do |tmpdir|
|
5
|
-
write_sample_config_to(tmpdir)
|
6
|
-
exercise_dir = add_sample_exercise(tmpdir)
|
7
|
-
|
8
|
-
expect_any_instance_of(ET::Exercise).to receive(:run_tests).and_return(true)
|
9
|
-
|
10
|
-
runner = ET::Runner.new(exercise_dir)
|
11
|
-
_, _ = capture_output do
|
12
|
-
expect(runner.go(["test"])).to eq(0)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
context "when not in an exercise directory" do
|
19
|
-
it "fails to run the test suite" do
|
20
|
-
Dir.mktmpdir("test") do |tmpdir|
|
21
|
-
write_sample_config_to(tmpdir)
|
22
|
-
expect_any_instance_of(ET::Exercise).to_not receive(:run_tests)
|
23
|
-
|
24
|
-
runner = ET::Runner.new(tmpdir)
|
25
|
-
_, _ = capture_output do
|
26
|
-
expect(runner.go(["test"])).to eq(1)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
data/spec/lib/challenge_spec.rb
DELETED
@@ -1,78 +0,0 @@
|
|
1
|
-
require "yaml"
|
2
|
-
|
3
|
-
describe ET::Challenge do
|
4
|
-
describe "#dir" do
|
5
|
-
it "selects the directory containing the challenge file" do
|
6
|
-
Dir.mktmpdir do |tmpdir|
|
7
|
-
challenge_dir = add_sample_challenge(tmpdir)
|
8
|
-
|
9
|
-
challenge = ET::Challenge.new(challenge_dir)
|
10
|
-
expect(challenge.dir).to eq(challenge_dir)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
it "checks parent directories for the challenge file" do
|
15
|
-
Dir.mktmpdir do |tmpdir|
|
16
|
-
challenge_dir = add_sample_challenge(tmpdir)
|
17
|
-
|
18
|
-
child_dir = File.join(challenge_dir, "child")
|
19
|
-
Dir.mkdir(child_dir)
|
20
|
-
|
21
|
-
challenge = ET::Challenge.new(child_dir)
|
22
|
-
expect(challenge.dir).to eq(challenge_dir)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
it "returns nil if no challenge file found" do
|
27
|
-
Dir.mktmpdir do |tmpdir|
|
28
|
-
challenge = ET::Challenge.new(tmpdir)
|
29
|
-
expect(challenge.dir).to eq(nil)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
describe "#archive" do
|
35
|
-
it "packages up files in the given directory" do
|
36
|
-
archive_path = nil
|
37
|
-
|
38
|
-
begin
|
39
|
-
Dir.mktmpdir do |tmpdir|
|
40
|
-
challenge_dir = add_sample_challenge(tmpdir)
|
41
|
-
|
42
|
-
challenge = ET::Challenge.new(challenge_dir)
|
43
|
-
archive_path = challenge.archive!
|
44
|
-
|
45
|
-
contents = read_file_from_gzipped_archive(archive_path, "./problem.rb")
|
46
|
-
expect(contents).to eq("# YOUR CODE GOES HERE\n")
|
47
|
-
end
|
48
|
-
ensure
|
49
|
-
if archive_path && File.exist?(archive_path)
|
50
|
-
FileUtils.rm(archive_path)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
it "excludes files in the ignore array" do
|
56
|
-
archive_path = nil
|
57
|
-
|
58
|
-
begin
|
59
|
-
Dir.mktmpdir do |tmpdir|
|
60
|
-
challenge_dir = add_sample_challenge(tmpdir)
|
61
|
-
|
62
|
-
challenge = ET::Challenge.new(challenge_dir)
|
63
|
-
archive_path = challenge.archive!
|
64
|
-
|
65
|
-
files = list_files_in_gzipped_archive(archive_path)
|
66
|
-
|
67
|
-
expect(files).to include("./problem.rb")
|
68
|
-
expect(files).to_not include("./sample-challenge.md")
|
69
|
-
expect(files).to_not include("./.lesson.yml")
|
70
|
-
end
|
71
|
-
ensure
|
72
|
-
if archive_path && File.exist?(archive_path)
|
73
|
-
FileUtils.rm(archive_path)
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
data/spec/lib/exercise_spec.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
describe ET::Exercise do
|
2
|
-
describe "#exists?" do
|
3
|
-
it "is true if within an exercise directory" do
|
4
|
-
Dir.mktmpdir do |tmpdir|
|
5
|
-
exercise_dir = add_sample_exercise(tmpdir)
|
6
|
-
exercise = ET::Exercise.new(exercise_dir)
|
7
|
-
|
8
|
-
expect(exercise.exists?).to eq(true)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
it "is false when in a challenge directory" do
|
13
|
-
Dir.mktmpdir do |tmpdir|
|
14
|
-
challenge_dir = add_sample_challenge(tmpdir)
|
15
|
-
exercise = ET::Exercise.new(challenge_dir)
|
16
|
-
|
17
|
-
expect(exercise.exists?).to eq(false)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
it "is false when not in a lesson dir" do
|
22
|
-
Dir.mktmpdir do |tmpdir|
|
23
|
-
exercise = ET::Exercise.new(tmpdir)
|
24
|
-
expect(exercise.exists?).to eq(false)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|