ttnt 0.0.3 → 0.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9947cd4256b1b4745ec7f4d215aa9c690fd48239
4
- data.tar.gz: 787357a06a7c10ec0bffecef39f835991ebf04d5
3
+ metadata.gz: 6757ad3cc408877e086c4d5f2833db4ba91bfc91
4
+ data.tar.gz: efbb968db897fb0be1f03b76c44f50da338a2f19
5
5
  SHA512:
6
- metadata.gz: 79cb9265651ac4148288f8c74cebb20e360323818fce52fb96089dc9ef0ec4478cb9f17b1fad60946adf62f6c99276e3753614c3d8daa31f686bc13c079190ae
7
- data.tar.gz: 2f7182fe104b563b933af1c28c51130ff87f6338f8d002d1053d028528e3c5a6eadb4a2bd720686edf0b2663008ffc2c3a74cf6f285c74d1bcd77130992c8ccb
6
+ metadata.gz: 443694bdcf2fc4dfc277c12b49cb7447e5dfedb4a7f32a4d4e18b14ca617eddf9eb2b77e362344a06f6c123b21d8b274f3c5abf00847c0bf9574b30e22060770
7
+ data.tar.gz: 02e06045c97fe2f63d28cdd7a06d4660ef3adf36f20976cbfaaabee8239d5e21388507ac6feb503c5ad860c7d3a13d25776bbd7d790ceeba630065dcd737a0f0
data/Gemfile CHANGED
@@ -3,6 +3,4 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in ttnt.gemspec
4
4
  gemspec
5
5
 
6
- group :development do
7
- gem "coveralls", require: false
8
- end
6
+ gem "coveralls", require: false
data/README.md CHANGED
@@ -58,29 +58,40 @@ Or install it yourself as:
58
58
 
59
59
  $ gem install ttnt
60
60
 
61
- ### Define rake tasks
61
+ ### Define Rake tasks
62
62
 
63
- You can define TTNT rake tasks by following steps:
63
+ TTNT allows you to define its tasks according to an existing `Rake::TestTask` object like:
64
64
 
65
- 1. `require 'ttnt/testtask'`
66
- 2. Define `TTNT::TestTask` when defining `Rake::TestTask`
65
+ ```ruby
66
+ require 'rake/testtask'
67
+ require 'ttnt/testtask'
67
68
 
68
- Your `Rakefile` will look like this:
69
+ t = Rake::TestTask.new do |t|
70
+ t.libs << 'test'
71
+ t.name = 'task_name'
72
+ end
69
73
 
74
+ TTNT::TestTask.new(t)
70
75
  ```
71
- require 'rake/testtask'
76
+
77
+ This will define 2 tasks: `ttnt:task_name:anchor` and `ttnt:task_name:run`. Usage for those tasks are described later in this document.
78
+
79
+ You can also instantiate a new `TTNT::TestTask` object and specify certain options like:
80
+
81
+ ```ruby
72
82
  require 'ttnt/testtask'
73
83
 
74
- Rake::TestTask.new { |t|
75
- t.name = 'my_test_name'
76
- t.libs << 'test'
77
- t.pattern = 'test/**/*_test.rb'
78
- TTNT::TestTask.new(t)
79
- }
84
+ TTNT::TestTask.new do |t|
85
+ t.code_files = FileList['lib/**/*.rb'] - FileList['lib/vendor/**/*.rb']
86
+ t.test_files = 'test/**/*_test.rb'
87
+ end
80
88
  ```
81
89
 
82
- This will define 2 rake tasks `ttnt:my_test_name:anchor` and `ttnt:my_test_name:run` (portion of `my_test_name` depends on the name you specify for your `Rake::TestTask`).
83
- Usage for those tasks are described later in this document.
90
+ You can specify the same options as `Rake::TestTask`.
91
+ Additionally, there is an option which is specific to TTNT:
92
+
93
+ - `code_files`
94
+ - Specifies code files TTNT uses to select tests. Changes in files not listed here do not affect the test selection. Defaults to all files under the directory `Rakefile` resides.
84
95
 
85
96
  ## Requirements
86
97
 
@@ -92,7 +103,7 @@ Developed and only tested under ruby version 2.2.2.
92
103
 
93
104
  If you defined TTNT rake task as described above, you can run following command to produce test-to-code mapping:
94
105
 
95
- ```
106
+ ```sh
96
107
  $ rake ttnt:my_test_name:anchor
97
108
  ```
98
109
 
@@ -100,10 +111,24 @@ $ rake ttnt:my_test_name:anchor
100
111
 
101
112
  If you defined TTNT rake task as described above, you can run following command to run selected tests.
102
113
 
103
- ```
114
+ ```sh
104
115
  $ rake ttnt:my_test_name:run
105
116
  ```
106
117
 
118
+ #### Options
119
+
120
+ You can run test files one by one by setting `ISOLATED` environment variable:
121
+
122
+ ```
123
+ $ rake ttnt:my_test_name:run ISOLATED=1
124
+ ```
125
+
126
+ With isolated option, you can set `FAIL_FAST` environment variable to stop running successive tests after a test has failed:
127
+
128
+ ```
129
+ $ rake ttnt:my_test_name:run ISOLATED=1 FAIL_FAST=1
130
+ ```
131
+
107
132
  ## Current Limitations
108
133
 
109
134
  - Test selection algorithm is not perfect yet (it may produce false-positives and false-negatives)
data/bin/setup CHANGED
@@ -5,4 +5,3 @@ IFS=$'\n\t'
5
5
  bundle install
6
6
 
7
7
  # Do any other automated setup that you need to do here
8
- git submodule update --init
@@ -0,0 +1,13 @@
1
+ require 'rake'
2
+
3
+ module TTNT
4
+ class << self
5
+ def root_dir
6
+ @@root_dir ||= Rake.application.find_rakefile_location[1]
7
+ end
8
+
9
+ def root_dir=(dir)
10
+ @@root_dir = dir
11
+ end
12
+ end
13
+ end
@@ -5,8 +5,8 @@ module TTNT
5
5
  STORAGE_SECTION = 'meta'
6
6
 
7
7
  # @param repo [Rugged::Repository]
8
- # @param sha [String] sha of commit from which metadata is read from.
9
- # nil means to read from current working tree. see {Storage} for more.
8
+ # @param sha [String] sha of commit which metadata is read from.
9
+ # nil means to read from current working tree. See {Storage} for more.
10
10
  def initialize(repo, sha = nil)
11
11
  @storage = Storage.new(repo, sha)
12
12
  read!
@@ -1,25 +1,28 @@
1
+ require 'ttnt/internals'
2
+
1
3
  module TTNT
2
4
  # A utility class to store TTNT data such as test-to-code mapping and metadata.
3
5
  class Storage
4
6
  # Initialize the storage from given repo and sha. This reads contents from
5
- # a file `.ttnt`. When sha is not nil, contents of the file on that commit
7
+ # a `.ttnt` file. When sha is not nil, contents of the file on that commit
6
8
  # is read. Data can be written only when sha is nil (written to current
7
9
  # working tree).
8
10
  #
9
11
  # @param repo [Rugged::Repository]
10
- # @param sha [String] sha of the commit from which data should be read.
12
+ # @param sha [String] sha of the commit which data should be read from.
11
13
  # nil means reading from/writing to current working tree.
12
14
  def initialize(repo, sha = nil)
13
15
  @repo = repo
14
16
  @sha = sha
15
17
  end
16
18
 
17
- # Read data in section from the storage.
19
+ # Read data from the storage in the given section.
18
20
  #
19
21
  # @param section [String]
20
22
  # @return [Hash]
21
23
  def read(section)
22
24
  str = read_storage_content
25
+
23
26
  if str.length > 0
24
27
  JSON.parse(str)[section] || {}
25
28
  else
@@ -27,7 +30,7 @@ module TTNT
27
30
  end
28
31
  end
29
32
 
30
- # Write value to section in the storage.
33
+ # Write value to the given section in the storage.
31
34
  # Locks the file so that concurrent write does not occur.
32
35
  #
33
36
  # @param section [String]
@@ -49,12 +52,34 @@ module TTNT
49
52
  private
50
53
 
51
54
  def filename
52
- "#{@repo.workdir}/.ttnt"
55
+ "#{TTNT.root_dir}/.ttnt"
56
+ end
57
+
58
+ def filename_from_repository_root
59
+ filename.gsub(@repo.workdir, '')
60
+ end
61
+
62
+ def storage_file_oid
63
+ tree = @repo.lookup(@sha).tree
64
+ paths = filename_from_repository_root.split(File::SEPARATOR)
65
+ dirs, filename = paths[0...-1], paths[-1]
66
+ dirs.each do |dir|
67
+ obj = tree[dir]
68
+ return nil unless obj
69
+ tree = @repo.lookup(obj[:oid])
70
+ end
71
+ obj = tree[filename]
72
+ return nil unless obj
73
+ obj[:oid]
53
74
  end
54
75
 
55
76
  def read_storage_content
56
77
  if @sha
57
- @repo.lookup(@repo.lookup(@sha).tree['.ttnt'][:oid]).content
78
+ if oid = storage_file_oid
79
+ @repo.lookup(oid).content
80
+ else
81
+ '' # Storage file is not committed for the commit of given sha
82
+ end
58
83
  else
59
84
  File.exist?(filename) ? File.read(filename) : ''
60
85
  end
@@ -4,7 +4,7 @@ require 'ttnt/metadata'
4
4
  require 'ttnt/test_to_code_mapping'
5
5
 
6
6
  module TTNT
7
- # Select tests using git information and {TestToCodeMapping}.
7
+ # Select tests using Git information and {TestToCodeMapping}.
8
8
  class TestSelector
9
9
 
10
10
  attr_reader :tests
@@ -15,7 +15,8 @@ module TTNT
15
15
  # @param test_files [#include?] candidate test files
16
16
  def initialize(repo, target_sha, test_files)
17
17
  @repo = repo
18
- @metadata = MetaData.new(repo, target_sha)
18
+ storage_src_sha = target_sha ? target_sha : @repo.head.target_id
19
+ @metadata = MetaData.new(repo, storage_src_sha)
19
20
  @target_obj = @repo.lookup(target_sha) if target_sha
20
21
 
21
22
  # Base should be the commit `ttnt:anchor` has run on.
@@ -30,9 +31,17 @@ module TTNT
30
31
  #
31
32
  # @return [Set] a set of tests that might be affected by changes in base_sha...target_sha
32
33
  def select_tests!
33
- # TODO: if test-to-code-mapping is not found (ttnt-anchor has not been run)
34
+ # select all tests if anchored commit does not exist
35
+ return Set.new(@test_files) unless @base_obj
36
+
34
37
  @tests ||= Set.new
35
- diff = @target_obj ? @base_obj.diff(@target_obj) : @base_obj.diff_workdir
38
+
39
+ opts = {
40
+ include_untracked: true,
41
+ recurse_untracked_dirs: true
42
+ }
43
+ diff = defined?(@target_obj) ? @base_obj.diff(@target_obj, opts) : @base_obj.diff_workdir(opts)
44
+
36
45
  diff.each_patch do |patch|
37
46
  file = patch.delta.old_file[:path]
38
47
  if test_file?(file)
@@ -47,8 +56,10 @@ module TTNT
47
56
  private
48
57
 
49
58
  def mapping
50
- sha = @target_obj ? @target_obj.oid : @repo.head.target_id
51
- @mapping ||= TTNT::TestToCodeMapping.new(@repo, sha)
59
+ @mapping ||= begin
60
+ sha = defined?(@target_obj) ? @target_obj.oid : @repo.head.target_id
61
+ TTNT::TestToCodeMapping.new(@repo, sha)
62
+ end
52
63
  end
53
64
 
54
65
  # Select tests which are affected by the change of given patch.
@@ -59,6 +70,7 @@ module TTNT
59
70
  target_lines = Set.new
60
71
  file = patch.delta.old_file[:path]
61
72
  prev_line = nil
73
+
62
74
  patch.each_hunk do |hunk|
63
75
  hunk.each_line do |line|
64
76
  case line.line_origin
@@ -81,12 +93,16 @@ module TTNT
81
93
  end
82
94
  end
83
95
 
84
- # Find the commit `rake ttnt:test:anchor` has been run on.
96
+ # Find the commit `ttnt:anchor` has been run on.
85
97
  def find_anchored_commit
86
- @repo.lookup(@metadata['anchored_commit'])
98
+ if @metadata['anchored_commit']
99
+ @repo.lookup(@metadata['anchored_commit'])
100
+ else
101
+ nil
102
+ end
87
103
  end
88
104
 
89
- # Check if given file is a test file.
105
+ # Check if the given file is a test file.
90
106
  #
91
107
  # @param filename [String]
92
108
  def test_file?(filename)
@@ -1,3 +1,4 @@
1
+ require 'ttnt/internals'
1
2
  require 'ttnt/storage'
2
3
  require 'rugged'
3
4
  require 'json'
@@ -15,14 +16,12 @@ module TTNT
15
16
  attr_reader :mapping
16
17
 
17
18
  # @param repo [Rugged::Reposiotry] repository to save test-to-code mapping
18
- # (only repo.workdir is used to determine where to save the mapping file)
19
19
  # @param sha [String] sha of commit from which mapping is read.
20
- # nil means to read from current working tree. see {Storage} for more.
20
+ # nil means to read from current working tree. See {Storage} for more.
21
21
  def initialize(repo, sha = nil)
22
- @repo = repo
22
+ @repo = repo || raise('Not in a git repository')
23
23
  @storage = Storage.new(repo, sha)
24
24
  read!
25
- raise 'Not in a git repository' unless @repo
26
25
  end
27
26
 
28
27
  # Append the new mapping to test-to-code mapping file.
@@ -64,14 +63,25 @@ module TTNT
64
63
  tests
65
64
  end
66
65
 
66
+ # Select (filter) code files from mapping by given file names.
67
+ #
68
+ # @param code_files [#include?] code file names to filter
69
+ def select_code_files!(code_files)
70
+ @mapping.map do |test, spectra|
71
+ spectra.select! do |code, lines|
72
+ code_files.include?(code)
73
+ end
74
+ end
75
+ end
76
+
67
77
  private
68
78
 
69
- # Convert absolute path to relative path from the project (git repository) root.
79
+ # Convert absolute path to relative path from the project (Git repository) root.
70
80
  #
71
81
  # @param file [String] file name (absolute path)
72
82
  # @return [String] normalized file path
73
83
  def normalized_path(file)
74
- File.expand_path(file).sub(@repo.workdir, '')
84
+ File.expand_path(file).sub("#{TTNT.root_dir}/", '')
75
85
  end
76
86
 
77
87
  # Normalize all file names in a spectra.
@@ -90,7 +100,7 @@ module TTNT
90
100
  # @return [Hash] spectra with only files inside the target project
91
101
  def select_project_files(spectra)
92
102
  spectra.select do |filename, lines|
93
- filename.start_with?(@repo.workdir)
103
+ filename.start_with?(TTNT.root_dir)
94
104
  end
95
105
  end
96
106
 
@@ -1,34 +1,57 @@
1
1
  require 'rugged'
2
- require 'rake'
2
+ require 'rake/testtask'
3
3
  require 'ttnt/test_selector'
4
4
 
5
5
  module TTNT
6
6
  # TTNT version of Rake::TestTask.
7
- # Uses configuration from Rake::TestTask to minimize user configuration.
7
+ #
8
+ # You can use the configuration from a Rake::TestTask to minimize user
9
+ # configuration.
10
+ #
8
11
  # Defines TTNT related rake tasks when instantiated.
9
12
  class TestTask
10
13
  include Rake::DSL
11
14
 
12
- # An instance of `Rake::TestTask` passed when TTNT::TestTask is initialized
13
15
  attr_accessor :rake_testtask
16
+ attr_reader :code_files, :test_files
14
17
 
15
18
  # Create an instance of TTNT::TestTask and define TTNT rake tasks.
16
19
  #
17
- # @param rake_testtask [Rake::TestTask] an instance of Rake::TestTask after user configuration is done
18
- def initialize(rake_testtask)
19
- @rake_testtask = rake_testtask
20
- # Since test_files is not exposed in Rake::TestTask
20
+ # @param rake_testtask [Rake::TestTask] an instance of Rake::TestTask
21
+ # after user configuration is done
22
+ def initialize(rake_testtask = nil)
23
+ @rake_testtask = rake_testtask || Rake::TestTask.new
24
+
25
+ # There's no `test_files` method so we can't delegate it
26
+ # to the internal task through `method_missing`.
21
27
  @test_files = @rake_testtask.instance_variable_get('@test_files')
22
28
 
23
- @anchor_description = 'Generate test-to-code mapping' + (@rake_testtask.name == :test ? '' : " for #{@rake_testtask.name}")
24
- @run_description = 'Run selected tests' + (@rake_testtask.name == :test ? '' : "for #{@rake_testtask.name}")
29
+ yield self if block_given?
30
+
31
+ @anchor_description = 'Generate test-to-code mapping' + (name == :test ? '' : " for #{name}")
32
+ @run_description = 'Run selected tests' + (name = :test ? '' : " for #{name}")
25
33
  define_tasks
26
34
  end
27
35
 
36
+ # Delegate missing methods to the internal task
37
+ # so we can override the defaults during the
38
+ # block execution.
39
+ def method_missing(method, *args, &block)
40
+ @rake_testtask.public_send(method, *args, &block)
41
+ end
42
+
43
+ def code_files=(files)
44
+ @code_files = files.kind_of?(String) ? FileList[files] : files
45
+ end
46
+
47
+ def test_files=(files)
48
+ @test_files = files.kind_of?(String) ? FileList[files] : files
49
+ end
50
+
28
51
  # Returns array of test file names.
29
52
  # Unlike Rake::TestTask#file_list, patterns are expanded.
30
53
  def expanded_file_list
31
- test_files = Rake::FileList[@rake_testtask.pattern].compact
54
+ test_files = Rake::FileList[pattern].compact
32
55
  test_files += @test_files.to_a if @test_files
33
56
  test_files
34
57
  end
@@ -49,15 +72,15 @@ module TTNT
49
72
  # Task definitions are taken from Rake::TestTask
50
73
  # https://github.com/ruby/rake/blob/e644af3/lib/rake/testtask.rb#L98-L112
51
74
  namespace :ttnt do
52
- namespace @rake_testtask.name do
75
+ namespace name do
53
76
  define_run_task
54
77
  define_anchor_task
55
78
  end
56
79
  end
57
80
  end
58
81
 
59
- # Define a task which runs only tests which might have affected from changes
60
- # between anchored commit and TARGET_SHA.
82
+ # Define a task which runs only tests which might have been affected from
83
+ # changes between anchored commit and TARGET_SHA.
61
84
  #
62
85
  # TARGET_SHA can be specified as an environment variable (defaults to HEAD).
63
86
  #
@@ -68,18 +91,27 @@ module TTNT
68
91
  target_sha = ENV['TARGET_SHA']
69
92
  ts = TTNT::TestSelector.new(repo, target_sha, expanded_file_list)
70
93
  tests = ts.select_tests!
94
+
71
95
  if tests.empty?
72
96
  STDERR.puts 'No test selected.'
73
97
  else
74
- args =
75
- "#{@rake_testtask.ruby_opts_string} #{@rake_testtask.run_code} " +
76
- "#{tests.to_a.join(' ')} #{@rake_testtask.option_list}"
77
- run_ruby args
98
+ if ENV['ISOLATED']
99
+ tests.each do |test|
100
+ args = "#{ruby_opts_string} #{test} #{option_list}"
101
+ run_ruby args
102
+ break if @failed && ENV['FAIL_FAST']
103
+ end
104
+ else
105
+ args =
106
+ "#{ruby_opts_string} #{run_code} " +
107
+ "#{tests.to_a.join(' ')} #{option_list}"
108
+ run_ruby args
109
+ end
78
110
  end
79
111
  end
80
112
  end
81
113
 
82
- # Define a task which runs test files file by file, and generate and save
114
+ # Define a task which runs tests file by file, and generate and save
83
115
  # test-to-code mapping.
84
116
  #
85
117
  # @return [void]
@@ -91,17 +123,23 @@ module TTNT
91
123
  # See test/test_helper.rb
92
124
  ENV['ANCHOR_TASK'] = '1'
93
125
 
94
- Rake::FileUtilsExt.verbose(@rake_testtask.verbose) do
126
+ Rake::FileUtilsExt.verbose(verbose) do
95
127
  # Make it possible to require files in this gem
96
128
  gem_root = File.expand_path('../..', __FILE__)
97
129
  args =
98
130
  "-I#{gem_root} -r ttnt/anchor " +
99
- "#{@rake_testtask.ruby_opts_string}"
131
+ "#{ruby_opts_string}"
100
132
 
101
133
  expanded_file_list.each do |test_file|
102
134
  run_ruby "#{args} #{test_file}"
103
135
  end
104
136
  end
137
+
138
+ if @code_files
139
+ mapping = TestToCodeMapping.new(repo)
140
+ mapping.select_code_files!(@code_files)
141
+ mapping.write!
142
+ end
105
143
  end
106
144
  end
107
145
 
@@ -110,6 +148,7 @@ module TTNT
110
148
  # @param args [String] argument to pass to ruby
111
149
  def run_ruby(args)
112
150
  ruby "#{args}" do |ok, status|
151
+ @failed = true if !ok
113
152
  if !ok && status.respond_to?(:signaled?) && status.signaled?
114
153
  raise SignalException.new(status.termsig)
115
154
  end
@@ -1,3 +1,3 @@
1
1
  module TTNT
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -14,26 +14,17 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = "http://github.com/Genki-S/ttnt"
15
15
  spec.license = "MIT"
16
16
 
17
- # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
18
- # delete this section to allow pushing this gem to any host.
19
- # if spec.respond_to?(:metadata)
20
- # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
21
- # else
22
- # raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
23
- # end
24
-
25
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
18
  spec.bindir = "exe"
27
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
20
  spec.require_paths = ["lib"]
29
21
 
30
- spec.add_dependency "rugged", "0.23.0b2"
22
+ spec.add_dependency "rugged", "0.23.1"
31
23
  spec.add_dependency "json", "1.8.3"
32
24
 
33
25
  spec.add_development_dependency "bundler", "~> 1.10"
34
26
  spec.add_development_dependency "rake", "~> 10.0"
35
27
  spec.add_development_dependency "minitest"
36
- spec.add_development_dependency "coveralls"
37
28
  spec.add_development_dependency "yard"
38
29
 
39
30
  # Pry
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ttnt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugimoto
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-08-01 00:00:00.000000000 Z
11
+ date: 2015-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rugged
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.23.0b2
19
+ version: 0.23.1
20
20
  type: :runtime
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: 0.23.0b2
26
+ version: 0.23.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: coveralls
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: yard
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -201,8 +187,6 @@ extra_rdoc_files: []
201
187
  files:
202
188
  - ".gitignore"
203
189
  - ".travis.yml"
204
- - ".ttnt/commit_obj.txt"
205
- - ".ttnt/test_to_code_mapping.json"
206
190
  - ".yardopts"
207
191
  - CODE_OF_CONDUCT.md
208
192
  - Gemfile
@@ -213,6 +197,7 @@ files:
213
197
  - bin/setup
214
198
  - lib/ttnt.rb
215
199
  - lib/ttnt/anchor.rb
200
+ - lib/ttnt/internals.rb
216
201
  - lib/ttnt/metadata.rb
217
202
  - lib/ttnt/storage.rb
218
203
  - lib/ttnt/test_selector.rb
@@ -1 +0,0 @@
1
- 8b4bac9f164b6389d657f4c1de100dccfc245651
@@ -1 +0,0 @@
1
- {"test/fixtures/repositories/fizzbuzz/test/buzz_test.rb":{"lib/ttnt/version.rb":[1,2],"test/fixtures/repositories/fizzbuzz/lib/fizzbuzz.rb":[1,2,4,6,7]},"test/fixtures/repositories/fizzbuzz/test/fizz_test.rb":{"lib/ttnt/version.rb":[1,2],"test/fixtures/repositories/fizzbuzz/lib/fizzbuzz.rb":[1,2,4,5]},"test/fixtures/repositories/fizzbuzz/test/fizzbuzz_test.rb":{"lib/ttnt/version.rb":[1,2],"test/fixtures/repositories/fizzbuzz/lib/fizzbuzz.rb":[1,2,3]},"test/fixtures/repositories/fizzbuzz/test/non_fizzbuzz_test.rb":{"lib/ttnt/version.rb":[1,2],"test/fixtures/repositories/fizzbuzz/lib/fizzbuzz.rb":[1,2,4,6,9]},"test/lib/tasks_test.rb":{"lib/ttnt/version.rb":[1,2],"test/test_helper.rb":[1,2,4,6,7,8,10,14,18,20],"lib/ttnt.rb":[1,3],"lib/ttnt/tasks.rb":[1,2,3,4,5,8,9,10,12,13,16,17,18,19,35,36,56],"lib/ttnt/testtask.rb":[1,2,3,5,9,21,22,24,26],"lib/ttnt/test_selector.rb":[1,2,3,5,6,7,18]},"test/lib/test_selector_test.rb":{"lib/ttnt/version.rb":[1,2],"test/test_helper.rb":[1,2,4,6,7,8,10,11,14,15,18,20,21,22,23,24,25,26,28],"lib/ttnt.rb":[1,3],"lib/ttnt/test_selector.rb":[1,2,3,5,6,7,8,9,13,14,15,18,19,20,23,24,25,26,28,29,33,35,42]},"test/lib/test_to_code_mapping_test.rb":{"lib/ttnt/version.rb":[1,2],"test/test_helper.rb":[1,2,4,6,7,8,10,11,14,15,18,20,21,22,23,24,25,26,28],"lib/ttnt.rb":[1,3]},"test/lib/testtask_test.rb":{"lib/ttnt/version.rb":[1,2],"test/test_helper.rb":[1,2,4,6,7,8,10,14,18,20],"lib/ttnt.rb":[1,3],"lib/ttnt/testtask.rb":[1,2,3,5,6,9,21,22,24,26,27,28,29,33,34]},"test/ttnt_test.rb":{"lib/ttnt/version.rb":[1,2],"test/test_helper.rb":[1,2,4,6,7,8,10,14,18,20],"lib/ttnt.rb":[1,3]}}