moomootest 1.0.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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/moomootest.rb +98 -0
  3. metadata +45 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 87352cdf418abce2fb81cd1d8c707ab009635656
4
+ data.tar.gz: 6950b1d1baab19f0985be35239a8d75459e625af
5
+ SHA512:
6
+ metadata.gz: 51b6d7064b2d995a33ffc5d17d9c25add6dc74daeac03d2a7dd22c29ff5fb40b2e504d524de2cb3f5a283699de2792f6b3af0a7be4d5582a05e62637f83380ce
7
+ data.tar.gz: d8691d264c3d7ee875e3c5e9ac235ea5bb86dc8bf8514c0c487c7599a1f1c0ad46573ff568b196486d4186663fa9592d8e9fb46c486f4381b37f607d4898060b
@@ -0,0 +1,98 @@
1
+ # TODO: Randomize tests across classes/methods
2
+ # Create more assertions based on testing needs
3
+ # Use 'test "some test description here" do/assert/end' format
4
+
5
+ module Assertions
6
+ def test name="untitled"
7
+ yield
8
+ end
9
+
10
+ def assert test, msg = "Failed test"
11
+ unless test then
12
+ bt = caller.drop_while { |s| s =~ /#{__FILE__}/ }
13
+ raise RuntimeError, msg, bt
14
+ end
15
+ end
16
+
17
+ def assert_equal a, b
18
+ assert a == b, "Failed assert_equal #{a} vs #{b}"
19
+ end
20
+
21
+ def assert_in_delta a, b
22
+ assert (a-b).abs <= 0.001, "Failed assert_in_delta #{a} vs #{b}"
23
+ end
24
+ end
25
+
26
+ class Reporter
27
+ attr_accessor :failures
28
+
29
+ def initialize
30
+ self.failures = []
31
+ end
32
+
33
+ def << result
34
+ unless result.failure? then
35
+ print '.'
36
+ else
37
+ print 'F'
38
+ failures << result
39
+ end
40
+ end
41
+
42
+ def summary
43
+ puts
44
+
45
+ failures.each do |result|
46
+ failure = result.failure
47
+ puts
48
+ puts "Failure: #{result.class}##{result.name}: #{failure.message}"
49
+ puts " #{failure.backtrace.first}"
50
+ end
51
+ end
52
+ end
53
+
54
+ class MooMooTest
55
+ include Assertions
56
+
57
+ attr_accessor :failure, :name
58
+ alias failure? failure
59
+
60
+ TESTS = []
61
+
62
+ def initialize name
63
+ self.name = name
64
+ self.failure = false
65
+ end
66
+
67
+ def self.inherited x
68
+ TESTS << x
69
+ end
70
+
71
+ def self.run_all_tests
72
+ reporter = Reporter.new
73
+
74
+ TESTS.each do |klass|
75
+ klass.run reporter
76
+ end
77
+
78
+ reporter.summary
79
+ end
80
+
81
+ def self.test_names
82
+ public_instance_methods.grep(/^test_/)
83
+ end
84
+
85
+ def self.run reporter
86
+ test_names.shuffle.each do |name|
87
+ reporter << self.new(name).run
88
+ end
89
+ end
90
+
91
+ def run
92
+ send name
93
+ rescue => e
94
+ self.failure = e
95
+ ensure
96
+ return self
97
+ end
98
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: moomootest
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Matt Congel
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-05-16 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email: mattcongel@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/moomootest.rb
20
+ homepage: http://rubygems.org/gems/moomootest
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.6.10
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: MooMooTest is a micro-sized test framework inspired by Ryan Davis and his
44
+ framework, Minitest
45
+ test_files: []