trojan 0.0.1
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 +7 -0
- data/.gitignore +13 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +52 -0
- data/README.md +0 -0
- data/Rakefile +11 -0
- data/lib/trojan/spy.rb +50 -0
- data/lib/trojan.rb +6 -0
- data/release +9 -0
- data/trojan.gemspec +22 -0
- metadata +124 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 452ab64756c67766e73a0edb6c6b58835e8183c9
|
4
|
+
data.tar.gz: 31b709c95b433c68327087c084a6685cddcd2c0c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: de618890742e9dc7e851a10a1cecdcba0dc27c483328014650842115a98113b6fd4890b004fa2ca6ea21741ac65614d53647f6f6457dab4c57dc5b675027b8e3
|
7
|
+
data.tar.gz: 7a0da0e6b7099a02c32cfb1c5a8e234f8491dbe429ee5c595bf0c8b3a099af92e0aad1cf480a91df6d6f186371357a173bffe4bd628240f728912b03b73334e8
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
trojan (0.0.0)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
ast (2.3.0)
|
10
|
+
byebug (9.1.0)
|
11
|
+
diff-lcs (1.3)
|
12
|
+
parser (2.4.0.0)
|
13
|
+
ast (~> 2.2)
|
14
|
+
powerpack (0.1.1)
|
15
|
+
rainbow (2.2.2)
|
16
|
+
rake
|
17
|
+
rake (11.3.0)
|
18
|
+
rspec (3.7.0)
|
19
|
+
rspec-core (~> 3.7.0)
|
20
|
+
rspec-expectations (~> 3.7.0)
|
21
|
+
rspec-mocks (~> 3.7.0)
|
22
|
+
rspec-core (3.7.0)
|
23
|
+
rspec-support (~> 3.7.0)
|
24
|
+
rspec-expectations (3.7.0)
|
25
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
26
|
+
rspec-support (~> 3.7.0)
|
27
|
+
rspec-mocks (3.7.0)
|
28
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
29
|
+
rspec-support (~> 3.7.0)
|
30
|
+
rspec-support (3.7.0)
|
31
|
+
rubocop (0.45.0)
|
32
|
+
parser (>= 2.3.1.1, < 3.0)
|
33
|
+
powerpack (~> 0.1)
|
34
|
+
rainbow (>= 1.99.1, < 3.0)
|
35
|
+
ruby-progressbar (~> 1.7)
|
36
|
+
unicode-display_width (~> 1.0, >= 1.0.1)
|
37
|
+
ruby-progressbar (1.9.0)
|
38
|
+
unicode-display_width (1.3.0)
|
39
|
+
|
40
|
+
PLATFORMS
|
41
|
+
ruby
|
42
|
+
|
43
|
+
DEPENDENCIES
|
44
|
+
bundler (~> 1.12)
|
45
|
+
byebug
|
46
|
+
rake (~> 11.3)
|
47
|
+
rspec (~> 3.6)
|
48
|
+
rubocop (~> 0.45.0)
|
49
|
+
trojan!
|
50
|
+
|
51
|
+
BUNDLED WITH
|
52
|
+
1.15.3
|
data/README.md
ADDED
File without changes
|
data/Rakefile
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'bundler/gem_tasks'
|
3
|
+
require 'rspec/core/rake_task'
|
4
|
+
|
5
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
6
|
+
t.pattern = Dir.glob('spec/**/*_spec.rb')
|
7
|
+
t.rspec_opts = '--format documentation'
|
8
|
+
# t.rspec_opts << ' more options'
|
9
|
+
end
|
10
|
+
|
11
|
+
task default: :spec
|
data/lib/trojan/spy.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
module Trojan
|
2
|
+
class Spy
|
3
|
+
DEFAULT_CALL_STRATEGY_VALUE = [nil]
|
4
|
+
|
5
|
+
attr_reader :calls
|
6
|
+
|
7
|
+
def initialize(obj, method_name)
|
8
|
+
@hooked = false
|
9
|
+
@object = obj
|
10
|
+
@method_name = method_name
|
11
|
+
@original_method = @object.method(method_name)
|
12
|
+
@calls = []
|
13
|
+
|
14
|
+
@call_strategy = :static_return
|
15
|
+
@call_strategy_value = DEFAULT_CALL_STRATEGY_VALUE
|
16
|
+
@call_strategy_index = 0
|
17
|
+
end
|
18
|
+
|
19
|
+
def hooked?
|
20
|
+
@hooked
|
21
|
+
end
|
22
|
+
|
23
|
+
def hook!
|
24
|
+
raise "spy has already been hooked" if hooked?
|
25
|
+
@object.define_singleton_method(@method_name, stub_method)
|
26
|
+
@hooked = true
|
27
|
+
end
|
28
|
+
|
29
|
+
def unhook!
|
30
|
+
raise "spy has not been hooked yet" unless hooked?
|
31
|
+
@object.define_singleton_method(@method_name, @original_method)
|
32
|
+
@hooked = false
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def stub_method
|
38
|
+
this = self
|
39
|
+
proc { |*args| this.send(:process_call, *args) }
|
40
|
+
end
|
41
|
+
|
42
|
+
def process_call(*args)
|
43
|
+
record_call(args)
|
44
|
+
end
|
45
|
+
|
46
|
+
def record_call(args)
|
47
|
+
@calls << args
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/trojan.rb
ADDED
data/release
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
cp trojan.gemspec trojan.gemspec.backup
|
3
|
+
sed -i.bak s/0.0.0/$1/g trojan.gemspec
|
4
|
+
sed -i.bak s/2001-01-01/`date +%Y-%m-%d`/g trojan.gemspec
|
5
|
+
gem build trojan.gemspec
|
6
|
+
mv trojan.gemspec.backup trojan.gemspec
|
7
|
+
gem push trojan-$1.gem
|
8
|
+
git tag -a v$1 -m "Release v$1"
|
9
|
+
git push origin --tags
|
data/trojan.gemspec
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
Gem::Specification.new do |s|
|
3
|
+
s.name = 'trojan'
|
4
|
+
s.version = '0.0.1'
|
5
|
+
s.date = '2017-10-30'
|
6
|
+
s.summary = 'Library of spies, stubs and mocks for Ruby'
|
7
|
+
s.description = 'Library of spies, stubs and mocks for Ruby'
|
8
|
+
s.homepage = 'https://github.com/Colex/trojan-rb'
|
9
|
+
s.authors = ['Alex Correia Santos']
|
10
|
+
s.email = ['hello@alexcsantos.com']
|
11
|
+
s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
12
|
+
s.require_paths = ['lib']
|
13
|
+
s.license = 'MIT'
|
14
|
+
|
15
|
+
s.required_ruby_version = '>= 2.2.2'
|
16
|
+
|
17
|
+
s.add_development_dependency 'bundler', '~> 1.12'
|
18
|
+
s.add_development_dependency 'rspec', '~> 3.6'
|
19
|
+
s.add_development_dependency 'rake', '~> 11.3'
|
20
|
+
s.add_development_dependency 'rubocop', '~> 0.45.0'
|
21
|
+
s.add_development_dependency 'byebug'
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: trojan
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Alex Correia Santos
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-10-30 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.12'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.12'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.6'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.6'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '11.3'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '11.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubocop
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.45.0
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.45.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: byebug
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: Library of spies, stubs and mocks for Ruby
|
84
|
+
email:
|
85
|
+
- hello@alexcsantos.com
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- ".gitignore"
|
91
|
+
- ".travis.yml"
|
92
|
+
- Gemfile
|
93
|
+
- Gemfile.lock
|
94
|
+
- README.md
|
95
|
+
- Rakefile
|
96
|
+
- lib/trojan.rb
|
97
|
+
- lib/trojan/spy.rb
|
98
|
+
- release
|
99
|
+
- trojan.gemspec
|
100
|
+
homepage: https://github.com/Colex/trojan-rb
|
101
|
+
licenses:
|
102
|
+
- MIT
|
103
|
+
metadata: {}
|
104
|
+
post_install_message:
|
105
|
+
rdoc_options: []
|
106
|
+
require_paths:
|
107
|
+
- lib
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 2.2.2
|
113
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
requirements: []
|
119
|
+
rubyforge_project:
|
120
|
+
rubygems_version: 2.5.1
|
121
|
+
signing_key:
|
122
|
+
specification_version: 4
|
123
|
+
summary: Library of spies, stubs and mocks for Ruby
|
124
|
+
test_files: []
|