packwerk 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 (153) hide show
  1. checksums.yaml +7 -0
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +27 -0
  3. data/.github/probots.yml +2 -0
  4. data/.github/pull_request_template.md +27 -0
  5. data/.github/workflows/ci.yml +50 -0
  6. data/.gitignore +12 -0
  7. data/.rubocop.yml +46 -0
  8. data/.ruby-version +1 -0
  9. data/CODEOWNERS +1 -0
  10. data/CODE_OF_CONDUCT.md +76 -0
  11. data/CONTRIBUTING.md +17 -0
  12. data/Gemfile +22 -0
  13. data/Gemfile.lock +236 -0
  14. data/LICENSE.md +7 -0
  15. data/README.md +73 -0
  16. data/Rakefile +13 -0
  17. data/TROUBLESHOOT.md +67 -0
  18. data/USAGE.md +250 -0
  19. data/bin/console +15 -0
  20. data/bin/setup +8 -0
  21. data/dev.yml +32 -0
  22. data/docs/cohesion.png +0 -0
  23. data/exe/packwerk +6 -0
  24. data/lib/packwerk.rb +44 -0
  25. data/lib/packwerk/application_validator.rb +343 -0
  26. data/lib/packwerk/association_inspector.rb +44 -0
  27. data/lib/packwerk/checking_deprecated_references.rb +40 -0
  28. data/lib/packwerk/cli.rb +238 -0
  29. data/lib/packwerk/configuration.rb +82 -0
  30. data/lib/packwerk/const_node_inspector.rb +44 -0
  31. data/lib/packwerk/constant_discovery.rb +60 -0
  32. data/lib/packwerk/constant_name_inspector.rb +22 -0
  33. data/lib/packwerk/dependency_checker.rb +28 -0
  34. data/lib/packwerk/deprecated_references.rb +92 -0
  35. data/lib/packwerk/file_processor.rb +43 -0
  36. data/lib/packwerk/files_for_processing.rb +67 -0
  37. data/lib/packwerk/formatters/progress_formatter.rb +46 -0
  38. data/lib/packwerk/generators/application_validation.rb +62 -0
  39. data/lib/packwerk/generators/configuration_file.rb +69 -0
  40. data/lib/packwerk/generators/inflections_file.rb +43 -0
  41. data/lib/packwerk/generators/root_package.rb +37 -0
  42. data/lib/packwerk/generators/templates/inflections.yml +6 -0
  43. data/lib/packwerk/generators/templates/package.yml +17 -0
  44. data/lib/packwerk/generators/templates/packwerk +23 -0
  45. data/lib/packwerk/generators/templates/packwerk.yml.erb +23 -0
  46. data/lib/packwerk/generators/templates/packwerk_validator_test.rb +11 -0
  47. data/lib/packwerk/graph.rb +74 -0
  48. data/lib/packwerk/inflections/custom.rb +33 -0
  49. data/lib/packwerk/inflections/default.rb +73 -0
  50. data/lib/packwerk/inflector.rb +41 -0
  51. data/lib/packwerk/node.rb +259 -0
  52. data/lib/packwerk/node_processor.rb +49 -0
  53. data/lib/packwerk/node_visitor.rb +22 -0
  54. data/lib/packwerk/offense.rb +44 -0
  55. data/lib/packwerk/output_styles.rb +41 -0
  56. data/lib/packwerk/package.rb +56 -0
  57. data/lib/packwerk/package_set.rb +59 -0
  58. data/lib/packwerk/parsed_constant_definitions.rb +62 -0
  59. data/lib/packwerk/parsers.rb +23 -0
  60. data/lib/packwerk/parsers/erb.rb +66 -0
  61. data/lib/packwerk/parsers/factory.rb +34 -0
  62. data/lib/packwerk/parsers/ruby.rb +42 -0
  63. data/lib/packwerk/privacy_checker.rb +45 -0
  64. data/lib/packwerk/reference.rb +6 -0
  65. data/lib/packwerk/reference_extractor.rb +81 -0
  66. data/lib/packwerk/reference_lister.rb +23 -0
  67. data/lib/packwerk/run_context.rb +103 -0
  68. data/lib/packwerk/sanity_checker.rb +10 -0
  69. data/lib/packwerk/spring_command.rb +28 -0
  70. data/lib/packwerk/updating_deprecated_references.rb +51 -0
  71. data/lib/packwerk/version.rb +6 -0
  72. data/lib/packwerk/violation_type.rb +13 -0
  73. data/library.yml +6 -0
  74. data/packwerk.gemspec +58 -0
  75. data/service.yml +6 -0
  76. data/shipit.rubygems.yml +1 -0
  77. data/sorbet/config +2 -0
  78. data/sorbet/rbi/gems/actioncable@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +840 -0
  79. data/sorbet/rbi/gems/actionmailbox@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +571 -0
  80. data/sorbet/rbi/gems/actionmailer@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +568 -0
  81. data/sorbet/rbi/gems/actionpack@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +5216 -0
  82. data/sorbet/rbi/gems/actiontext@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +663 -0
  83. data/sorbet/rbi/gems/actionview@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +2504 -0
  84. data/sorbet/rbi/gems/activejob@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +635 -0
  85. data/sorbet/rbi/gems/activemodel@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +1201 -0
  86. data/sorbet/rbi/gems/activerecord@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +8011 -0
  87. data/sorbet/rbi/gems/activestorage@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +904 -0
  88. data/sorbet/rbi/gems/activesupport@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +3888 -0
  89. data/sorbet/rbi/gems/ast@2.4.1.rbi +54 -0
  90. data/sorbet/rbi/gems/better_html@1.0.15.rbi +317 -0
  91. data/sorbet/rbi/gems/builder@3.2.4.rbi +8 -0
  92. data/sorbet/rbi/gems/byebug@11.1.3.rbi +8 -0
  93. data/sorbet/rbi/gems/coderay@1.1.3.rbi +8 -0
  94. data/sorbet/rbi/gems/colorize@0.8.1.rbi +40 -0
  95. data/sorbet/rbi/gems/commander@4.5.2.rbi +8 -0
  96. data/sorbet/rbi/gems/concurrent-ruby@1.1.6.rbi +1966 -0
  97. data/sorbet/rbi/gems/constant_resolver@0.1.5.rbi +26 -0
  98. data/sorbet/rbi/gems/crass@1.0.6.rbi +138 -0
  99. data/sorbet/rbi/gems/erubi@1.9.0.rbi +39 -0
  100. data/sorbet/rbi/gems/globalid@0.4.2.rbi +178 -0
  101. data/sorbet/rbi/gems/highline@2.0.3.rbi +8 -0
  102. data/sorbet/rbi/gems/html_tokenizer@0.0.7.rbi +46 -0
  103. data/sorbet/rbi/gems/i18n@1.8.2.rbi +633 -0
  104. data/sorbet/rbi/gems/jaro_winkler@1.5.4.rbi +8 -0
  105. data/sorbet/rbi/gems/loofah@2.5.0.rbi +272 -0
  106. data/sorbet/rbi/gems/m@1.5.1.rbi +108 -0
  107. data/sorbet/rbi/gems/mail@2.7.1.rbi +2490 -0
  108. data/sorbet/rbi/gems/marcel@0.3.3.rbi +30 -0
  109. data/sorbet/rbi/gems/method_source@1.0.0.rbi +76 -0
  110. data/sorbet/rbi/gems/mimemagic@0.3.5.rbi +47 -0
  111. data/sorbet/rbi/gems/mini_mime@1.0.2.rbi +71 -0
  112. data/sorbet/rbi/gems/mini_portile2@2.4.0.rbi +8 -0
  113. data/sorbet/rbi/gems/minitest@5.14.0.rbi +542 -0
  114. data/sorbet/rbi/gems/mocha@1.11.2.rbi +964 -0
  115. data/sorbet/rbi/gems/nio4r@2.5.2.rbi +89 -0
  116. data/sorbet/rbi/gems/nokogiri@1.10.9.rbi +1608 -0
  117. data/sorbet/rbi/gems/parallel@1.19.1.rbi +8 -0
  118. data/sorbet/rbi/gems/parlour@4.0.1.rbi +561 -0
  119. data/sorbet/rbi/gems/parser@2.7.1.4.rbi +1632 -0
  120. data/sorbet/rbi/gems/pry@0.13.1.rbi +8 -0
  121. data/sorbet/rbi/gems/rack-test@1.1.0.rbi +335 -0
  122. data/sorbet/rbi/gems/rack@2.2.2.rbi +1730 -0
  123. data/sorbet/rbi/gems/rails-dom-testing@2.0.3.rbi +123 -0
  124. data/sorbet/rbi/gems/rails-html-sanitizer@1.3.0.rbi +213 -0
  125. data/sorbet/rbi/gems/rails@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +8 -0
  126. data/sorbet/rbi/gems/railties@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +869 -0
  127. data/sorbet/rbi/gems/rainbow@3.0.0.rbi +155 -0
  128. data/sorbet/rbi/gems/rake@13.0.1.rbi +841 -0
  129. data/sorbet/rbi/gems/rexml@3.2.4.rbi +8 -0
  130. data/sorbet/rbi/gems/rubocop-performance@1.5.2.rbi +8 -0
  131. data/sorbet/rbi/gems/rubocop-shopify@1.0.2.rbi +8 -0
  132. data/sorbet/rbi/gems/rubocop-sorbet@0.3.7.rbi +8 -0
  133. data/sorbet/rbi/gems/rubocop@0.82.0.rbi +8 -0
  134. data/sorbet/rbi/gems/ruby-progressbar@1.10.1.rbi +8 -0
  135. data/sorbet/rbi/gems/smart_properties@1.15.0.rbi +168 -0
  136. data/sorbet/rbi/gems/spoom@1.0.4.rbi +418 -0
  137. data/sorbet/rbi/gems/spring@2.1.0.rbi +160 -0
  138. data/sorbet/rbi/gems/sprockets-rails@3.2.1.rbi +431 -0
  139. data/sorbet/rbi/gems/sprockets@4.0.0.rbi +1132 -0
  140. data/sorbet/rbi/gems/tapioca@0.4.5.rbi +518 -0
  141. data/sorbet/rbi/gems/thor@1.0.1.rbi +892 -0
  142. data/sorbet/rbi/gems/tzinfo@2.0.2.rbi +547 -0
  143. data/sorbet/rbi/gems/unicode-display_width@1.7.0.rbi +8 -0
  144. data/sorbet/rbi/gems/websocket-driver@0.7.1.rbi +438 -0
  145. data/sorbet/rbi/gems/websocket-extensions@0.1.4.rbi +71 -0
  146. data/sorbet/rbi/gems/zeitwerk@2.3.0.rbi +8 -0
  147. data/sorbet/tapioca/require.rb +25 -0
  148. data/static/packwerk-check-demo.png +0 -0
  149. data/static/packwerk_check.gif +0 -0
  150. data/static/packwerk_check_violation.gif +0 -0
  151. data/static/packwerk_update.gif +0 -0
  152. data/static/packwerk_validate.gif +0 -0
  153. metadata +341 -0
@@ -0,0 +1,30 @@
1
+ # DO NOT EDIT MANUALLY
2
+ # This is an autogenerated file for types exported from the `marcel` gem.
3
+ # Please instead update this file by running `dev typecheck update`.
4
+
5
+ # typed: true
6
+
7
+ module Marcel
8
+ end
9
+
10
+ class Marcel::MimeType
11
+ class << self
12
+ def extend(type, extensions: T.unsafe(nil), parents: T.unsafe(nil), magic: T.unsafe(nil)); end
13
+ def for(pathname_or_io = T.unsafe(nil), name: T.unsafe(nil), extension: T.unsafe(nil), declared_type: T.unsafe(nil)); end
14
+
15
+ private
16
+
17
+ def for_data(pathname_or_io); end
18
+ def for_declared_type(declared_type); end
19
+ def for_extension(extension); end
20
+ def for_name(name); end
21
+ def most_specific_type(from_magic_type, fallback_type); end
22
+ def parse_media_type(content_type); end
23
+ def root_types(type); end
24
+ def with_io(pathname_or_io, &block); end
25
+ end
26
+ end
27
+
28
+ Marcel::MimeType::BINARY = T.let(T.unsafe(nil), String)
29
+
30
+ Marcel::VERSION = T.let(T.unsafe(nil), String)
@@ -0,0 +1,76 @@
1
+ # DO NOT EDIT MANUALLY
2
+ # This is an autogenerated file for types exported from the `method_source` gem.
3
+ # Please instead update this file by running `dev typecheck update`.
4
+
5
+ # typed: true
6
+
7
+ module MethodSource
8
+ extend(::MethodSource::CodeHelpers)
9
+
10
+ class << self
11
+ def comment_helper(source_location, name = T.unsafe(nil)); end
12
+ def extract_code(source_location); end
13
+ def lines_for(file_name, name = T.unsafe(nil)); end
14
+ def source_helper(source_location, name = T.unsafe(nil)); end
15
+ def valid_expression?(str); end
16
+ end
17
+ end
18
+
19
+ module MethodSource::CodeHelpers
20
+ def comment_describing(file, line_number); end
21
+ def complete_expression?(str); end
22
+ def expression_at(file, line_number, options = T.unsafe(nil)); end
23
+
24
+ private
25
+
26
+ def extract_first_expression(lines, consume = T.unsafe(nil), &block); end
27
+ def extract_last_comment(lines); end
28
+ end
29
+
30
+ module MethodSource::CodeHelpers::IncompleteExpression
31
+ class << self
32
+ def ===(ex); end
33
+ def rbx?; end
34
+ end
35
+ end
36
+
37
+ MethodSource::CodeHelpers::IncompleteExpression::GENERIC_REGEXPS = T.let(T.unsafe(nil), Array)
38
+
39
+ MethodSource::CodeHelpers::IncompleteExpression::RBX_ONLY_REGEXPS = T.let(T.unsafe(nil), Array)
40
+
41
+ module MethodSource::MethodExtensions
42
+ def comment; end
43
+ def source; end
44
+
45
+ class << self
46
+ def included(klass); end
47
+ end
48
+ end
49
+
50
+ module MethodSource::ReeSourceLocation
51
+ def source_location; end
52
+ end
53
+
54
+ module MethodSource::SourceLocation
55
+ end
56
+
57
+ module MethodSource::SourceLocation::MethodExtensions
58
+ def source_location; end
59
+
60
+ private
61
+
62
+ def trace_func(event, file, line, id, binding, classname); end
63
+ end
64
+
65
+ module MethodSource::SourceLocation::ProcExtensions
66
+ def source_location; end
67
+ end
68
+
69
+ module MethodSource::SourceLocation::UnboundMethodExtensions
70
+ def source_location; end
71
+ end
72
+
73
+ class MethodSource::SourceNotFoundError < ::StandardError
74
+ end
75
+
76
+ MethodSource::VERSION = T.let(T.unsafe(nil), String)
@@ -0,0 +1,47 @@
1
+ # DO NOT EDIT MANUALLY
2
+ # This is an autogenerated file for types exported from the `mimemagic` gem.
3
+ # Please instead update this file by running `dev typecheck update`.
4
+
5
+ # typed: true
6
+
7
+ class MimeMagic
8
+ def initialize(type); end
9
+
10
+ def ==(other); end
11
+ def audio?; end
12
+ def child_of?(parent); end
13
+ def comment; end
14
+ def eql?(other); end
15
+ def extensions; end
16
+ def hash; end
17
+ def image?; end
18
+ def mediatype; end
19
+ def subtype; end
20
+ def text?; end
21
+ def to_s; end
22
+ def type; end
23
+ def video?; end
24
+
25
+ class << self
26
+ def add(type, options); end
27
+ def all_by_magic(io); end
28
+ def by_extension(ext); end
29
+ def by_magic(io); end
30
+ def by_path(path); end
31
+ def child?(child, parent); end
32
+ def remove(type); end
33
+
34
+ private
35
+
36
+ def magic_match(io, method); end
37
+ def magic_match_io(io, matches, buffer); end
38
+ end
39
+ end
40
+
41
+ MimeMagic::EXTENSIONS = T.let(T.unsafe(nil), Hash)
42
+
43
+ MimeMagic::MAGIC = T.let(T.unsafe(nil), Array)
44
+
45
+ MimeMagic::TYPES = T.let(T.unsafe(nil), Hash)
46
+
47
+ MimeMagic::VERSION = T.let(T.unsafe(nil), String)
@@ -0,0 +1,71 @@
1
+ # DO NOT EDIT MANUALLY
2
+ # This is an autogenerated file for types exported from the `mini_mime` gem.
3
+ # Please instead update this file by running `dev typecheck update`.
4
+
5
+ # typed: true
6
+
7
+ module MiniMime
8
+ class << self
9
+ def lookup_by_content_type(mime); end
10
+ def lookup_by_extension(extension); end
11
+ def lookup_by_filename(filename); end
12
+ end
13
+ end
14
+
15
+ module MiniMime::Configuration
16
+ class << self
17
+ def content_type_db_path; end
18
+ def content_type_db_path=(_); end
19
+ def ext_db_path; end
20
+ def ext_db_path=(_); end
21
+ end
22
+ end
23
+
24
+ class MiniMime::Db
25
+ def initialize; end
26
+
27
+ def lookup_by_content_type(content_type); end
28
+ def lookup_by_extension(extension); end
29
+
30
+ class << self
31
+ def lookup_by_content_type(content_type); end
32
+ def lookup_by_extension(extension); end
33
+ def lookup_by_filename(filename); end
34
+ end
35
+ end
36
+
37
+ class MiniMime::Db::Cache
38
+ def initialize(size); end
39
+
40
+ def []=(key, val); end
41
+ def fetch(key, &blk); end
42
+ end
43
+
44
+ MiniMime::Db::LOCK = T.let(T.unsafe(nil), Thread::Mutex)
45
+
46
+ class MiniMime::Db::RandomAccessDb
47
+ def initialize(path, sort_order); end
48
+
49
+ def lookup(val); end
50
+ def lookup_uncached(val); end
51
+ def resolve(row); end
52
+ end
53
+
54
+ MiniMime::Db::RandomAccessDb::MAX_CACHED = T.let(T.unsafe(nil), Integer)
55
+
56
+ class MiniMime::Info
57
+ def initialize(buffer); end
58
+
59
+ def [](idx); end
60
+ def binary?; end
61
+ def content_type; end
62
+ def content_type=(_); end
63
+ def encoding; end
64
+ def encoding=(_); end
65
+ def extension; end
66
+ def extension=(_); end
67
+ end
68
+
69
+ MiniMime::Info::BINARY_ENCODINGS = T.let(T.unsafe(nil), Array)
70
+
71
+ MiniMime::VERSION = T.let(T.unsafe(nil), String)
@@ -0,0 +1,8 @@
1
+ # DO NOT EDIT MANUALLY
2
+ # This is an autogenerated file for types exported from the `mini_portile2` gem.
3
+ # Please instead update this file by running `dev typecheck update`.
4
+
5
+ # typed: true
6
+
7
+ # THIS IS AN EMPTY RBI FILE.
8
+ # see https://github.com/Shopify/tapioca/blob/master/README.md#manual-gem-requires
@@ -0,0 +1,542 @@
1
+ # DO NOT EDIT MANUALLY
2
+ # This is an autogenerated file for types exported from the `minitest` gem.
3
+ # Please instead update this file by running `dev typecheck update`.
4
+
5
+ # typed: true
6
+
7
+ module Kernel
8
+
9
+ private
10
+
11
+ def describe(desc, *additional_desc, &block); end
12
+ end
13
+
14
+ module Minitest
15
+ class << self
16
+ def __run(reporter, options); end
17
+ def after_run(&block); end
18
+ def autorun; end
19
+ def backtrace_filter; end
20
+ def backtrace_filter=(_); end
21
+ def clock_time; end
22
+ def extensions; end
23
+ def extensions=(_); end
24
+ def filter_backtrace(bt); end
25
+ def info_signal; end
26
+ def info_signal=(_); end
27
+ def init_plugins(options); end
28
+ def load_plugins; end
29
+ def parallel_executor; end
30
+ def parallel_executor=(_); end
31
+ def process_args(args = T.unsafe(nil)); end
32
+ def reporter; end
33
+ def reporter=(_); end
34
+ def run(args = T.unsafe(nil)); end
35
+ def run_one_method(klass, method_name); end
36
+ end
37
+ end
38
+
39
+ class Minitest::AbstractReporter
40
+ include(::Mutex_m)
41
+
42
+ def lock; end
43
+ def locked?; end
44
+ def passed?; end
45
+ def prerecord(klass, name); end
46
+ def record(result); end
47
+ def report; end
48
+ def start; end
49
+ def synchronize(&block); end
50
+ def try_lock; end
51
+ def unlock; end
52
+ end
53
+
54
+ class Minitest::Assertion < ::Exception
55
+ def error; end
56
+ def location; end
57
+ def result_code; end
58
+ def result_label; end
59
+ end
60
+
61
+ module Minitest::Assertions
62
+ def _synchronize; end
63
+ def assert(test, msg = T.unsafe(nil)); end
64
+ def assert_empty(obj, msg = T.unsafe(nil)); end
65
+ def assert_equal(exp, act, msg = T.unsafe(nil)); end
66
+ def assert_in_delta(exp, act, delta = T.unsafe(nil), msg = T.unsafe(nil)); end
67
+ def assert_in_epsilon(exp, act, epsilon = T.unsafe(nil), msg = T.unsafe(nil)); end
68
+ def assert_includes(collection, obj, msg = T.unsafe(nil)); end
69
+ def assert_instance_of(cls, obj, msg = T.unsafe(nil)); end
70
+ def assert_kind_of(cls, obj, msg = T.unsafe(nil)); end
71
+ def assert_match(matcher, obj, msg = T.unsafe(nil)); end
72
+ def assert_mock(mock); end
73
+ def assert_nil(obj, msg = T.unsafe(nil)); end
74
+ def assert_operator(o1, op, o2 = T.unsafe(nil), msg = T.unsafe(nil)); end
75
+ def assert_output(stdout = T.unsafe(nil), stderr = T.unsafe(nil)); end
76
+ def assert_path_exists(path, msg = T.unsafe(nil)); end
77
+ def assert_predicate(o1, op, msg = T.unsafe(nil)); end
78
+ def assert_raises(*exp); end
79
+ def assert_respond_to(obj, meth, msg = T.unsafe(nil)); end
80
+ def assert_same(exp, act, msg = T.unsafe(nil)); end
81
+ def assert_send(send_ary, m = T.unsafe(nil)); end
82
+ def assert_silent; end
83
+ def assert_throws(sym, msg = T.unsafe(nil)); end
84
+ def capture_io; end
85
+ def capture_subprocess_io; end
86
+ def diff(exp, act); end
87
+ def exception_details(e, msg); end
88
+ def fail_after(y, m, d, msg); end
89
+ def flunk(msg = T.unsafe(nil)); end
90
+ def message(msg = T.unsafe(nil), ending = T.unsafe(nil), &default); end
91
+ def mu_pp(obj); end
92
+ def mu_pp_for_diff(obj); end
93
+ def pass(_msg = T.unsafe(nil)); end
94
+ def refute(test, msg = T.unsafe(nil)); end
95
+ def refute_empty(obj, msg = T.unsafe(nil)); end
96
+ def refute_equal(exp, act, msg = T.unsafe(nil)); end
97
+ def refute_in_delta(exp, act, delta = T.unsafe(nil), msg = T.unsafe(nil)); end
98
+ def refute_in_epsilon(a, b, epsilon = T.unsafe(nil), msg = T.unsafe(nil)); end
99
+ def refute_includes(collection, obj, msg = T.unsafe(nil)); end
100
+ def refute_instance_of(cls, obj, msg = T.unsafe(nil)); end
101
+ def refute_kind_of(cls, obj, msg = T.unsafe(nil)); end
102
+ def refute_match(matcher, obj, msg = T.unsafe(nil)); end
103
+ def refute_nil(obj, msg = T.unsafe(nil)); end
104
+ def refute_operator(o1, op, o2 = T.unsafe(nil), msg = T.unsafe(nil)); end
105
+ def refute_path_exists(path, msg = T.unsafe(nil)); end
106
+ def refute_predicate(o1, op, msg = T.unsafe(nil)); end
107
+ def refute_respond_to(obj, meth, msg = T.unsafe(nil)); end
108
+ def refute_same(exp, act, msg = T.unsafe(nil)); end
109
+ def skip(msg = T.unsafe(nil), bt = T.unsafe(nil)); end
110
+ def skip_until(y, m, d, msg); end
111
+ def skipped?; end
112
+ def things_to_diff(exp, act); end
113
+
114
+ class << self
115
+ def diff; end
116
+ def diff=(o); end
117
+ end
118
+ end
119
+
120
+ Minitest::Assertions::E = T.let(T.unsafe(nil), String)
121
+
122
+ Minitest::Assertions::UNDEFINED = T.let(T.unsafe(nil), Object)
123
+
124
+ class Minitest::BacktraceFilter
125
+ def filter(bt); end
126
+ end
127
+
128
+ Minitest::BacktraceFilter::MT_RE = T.let(T.unsafe(nil), Regexp)
129
+
130
+ class Minitest::CompositeReporter < ::Minitest::AbstractReporter
131
+ def initialize(*reporters); end
132
+
133
+ def <<(reporter); end
134
+ def io; end
135
+ def passed?; end
136
+ def prerecord(klass, name); end
137
+ def record(result); end
138
+ def report; end
139
+ def reporters; end
140
+ def reporters=(_); end
141
+ def start; end
142
+ end
143
+
144
+ Minitest::ENCS = T.let(T.unsafe(nil), TrueClass)
145
+
146
+ class Minitest::Expectation < ::Struct
147
+ def ctx; end
148
+ def ctx=(_); end
149
+ def must_be(*args); end
150
+ def must_be_close_to(*args); end
151
+ def must_be_empty(*args); end
152
+ def must_be_instance_of(*args); end
153
+ def must_be_kind_of(*args); end
154
+ def must_be_nil(*args); end
155
+ def must_be_same_as(*args); end
156
+ def must_be_silent(*args); end
157
+ def must_be_within_delta(*args); end
158
+ def must_be_within_epsilon(*args); end
159
+ def must_equal(*args); end
160
+ def must_include(*args); end
161
+ def must_match(*args); end
162
+ def must_output(*args); end
163
+ def must_raise(*args); end
164
+ def must_respond_to(*args); end
165
+ def must_throw(*args); end
166
+ def path_must_exist(*args); end
167
+ def path_wont_exist(*args); end
168
+ def target; end
169
+ def target=(_); end
170
+ def wont_be(*args); end
171
+ def wont_be_close_to(*args); end
172
+ def wont_be_empty(*args); end
173
+ def wont_be_instance_of(*args); end
174
+ def wont_be_kind_of(*args); end
175
+ def wont_be_nil(*args); end
176
+ def wont_be_same_as(*args); end
177
+ def wont_be_within_delta(*args); end
178
+ def wont_be_within_epsilon(*args); end
179
+ def wont_equal(*args); end
180
+ def wont_include(*args); end
181
+ def wont_match(*args); end
182
+ def wont_respond_to(*args); end
183
+
184
+ class << self
185
+ def [](*_); end
186
+ def inspect; end
187
+ def members; end
188
+ def new(*_); end
189
+ end
190
+ end
191
+
192
+ module Minitest::Expectations
193
+ def must_be(*args); end
194
+ def must_be_close_to(*args); end
195
+ def must_be_empty(*args); end
196
+ def must_be_instance_of(*args); end
197
+ def must_be_kind_of(*args); end
198
+ def must_be_nil(*args); end
199
+ def must_be_same_as(*args); end
200
+ def must_be_silent(*args); end
201
+ def must_be_within_delta(*args); end
202
+ def must_be_within_epsilon(*args); end
203
+ def must_equal(*args); end
204
+ def must_include(*args); end
205
+ def must_match(*args); end
206
+ def must_output(*args); end
207
+ def must_raise(*args); end
208
+ def must_respond_to(*args); end
209
+ def must_throw(*args); end
210
+ def path_must_exist(*args); end
211
+ def path_wont_exist(*args); end
212
+ def wont_be(*args); end
213
+ def wont_be_close_to(*args); end
214
+ def wont_be_empty(*args); end
215
+ def wont_be_instance_of(*args); end
216
+ def wont_be_kind_of(*args); end
217
+ def wont_be_nil(*args); end
218
+ def wont_be_same_as(*args); end
219
+ def wont_be_within_delta(*args); end
220
+ def wont_be_within_epsilon(*args); end
221
+ def wont_equal(*args); end
222
+ def wont_include(*args); end
223
+ def wont_match(*args); end
224
+ def wont_respond_to(*args); end
225
+ end
226
+
227
+ module Minitest::Guard
228
+ def jruby?(platform = T.unsafe(nil)); end
229
+ def maglev?(platform = T.unsafe(nil)); end
230
+ def mri?(platform = T.unsafe(nil)); end
231
+ def osx?(platform = T.unsafe(nil)); end
232
+ def rubinius?(platform = T.unsafe(nil)); end
233
+ def windows?(platform = T.unsafe(nil)); end
234
+ end
235
+
236
+ class Minitest::Mock
237
+ def initialize(delegator = T.unsafe(nil)); end
238
+
239
+ def ===(*args, &b); end
240
+ def __call(name, data); end
241
+ def __respond_to?(*_); end
242
+ def class(*args, &b); end
243
+ def expect(name, retval, args = T.unsafe(nil), &blk); end
244
+ def inspect(*args, &b); end
245
+ def instance_eval(*args, &b); end
246
+ def instance_variables(*args, &b); end
247
+ def method_missing(sym, *args, &block); end
248
+ def object_id(*args, &b); end
249
+ def public_send(*args, &b); end
250
+ def respond_to?(sym, include_private = T.unsafe(nil)); end
251
+ def send(*args, &b); end
252
+ def to_s(*args, &b); end
253
+ def verify; end
254
+
255
+ private
256
+
257
+ def respond_to_missing?(*args, &b); end
258
+ end
259
+
260
+ module Minitest::Parallel
261
+ end
262
+
263
+ class Minitest::Parallel::Executor
264
+ def initialize(size); end
265
+
266
+ def <<(work); end
267
+ def shutdown; end
268
+ def size; end
269
+ def start; end
270
+ end
271
+
272
+ module Minitest::Parallel::Test
273
+ def _synchronize; end
274
+ end
275
+
276
+ module Minitest::Parallel::Test::ClassMethods
277
+ def run_one_method(klass, method_name, reporter); end
278
+ def test_order; end
279
+ end
280
+
281
+ class Minitest::ProgressReporter < ::Minitest::Reporter
282
+ def prerecord(klass, name); end
283
+ def record(result); end
284
+ end
285
+
286
+ module Minitest::Reportable
287
+ def class_name; end
288
+ def error?; end
289
+ def location; end
290
+ def passed?; end
291
+ def result_code; end
292
+ def skipped?; end
293
+ end
294
+
295
+ class Minitest::Reporter < ::Minitest::AbstractReporter
296
+ def initialize(io = T.unsafe(nil), options = T.unsafe(nil)); end
297
+
298
+ def io; end
299
+ def io=(_); end
300
+ def options; end
301
+ def options=(_); end
302
+ end
303
+
304
+ class Minitest::Result < ::Minitest::Runnable
305
+ include(::Minitest::Reportable)
306
+
307
+ def class_name; end
308
+ def klass; end
309
+ def klass=(_); end
310
+ def source_location; end
311
+ def source_location=(_); end
312
+ def to_s; end
313
+
314
+ class << self
315
+ def from(runnable); end
316
+ end
317
+ end
318
+
319
+ class Minitest::Runnable
320
+ def initialize(name); end
321
+
322
+ def assertions; end
323
+ def assertions=(_); end
324
+ def failure; end
325
+ def failures; end
326
+ def failures=(_); end
327
+ def marshal_dump; end
328
+ def marshal_load(ary); end
329
+ def name; end
330
+ def name=(o); end
331
+ def passed?; end
332
+ def result_code; end
333
+ def run; end
334
+ def skipped?; end
335
+ def time; end
336
+ def time=(_); end
337
+ def time_it; end
338
+
339
+ class << self
340
+ def inherited(klass); end
341
+ def methods_matching(re); end
342
+ def on_signal(name, action); end
343
+ def reset; end
344
+ def run(reporter, options = T.unsafe(nil)); end
345
+ def run_one_method(klass, method_name, reporter); end
346
+ def runnable_methods; end
347
+ def runnables; end
348
+ def with_info_handler(reporter, &block); end
349
+ end
350
+ end
351
+
352
+ Minitest::Runnable::SIGNALS = T.let(T.unsafe(nil), Hash)
353
+
354
+ class Minitest::Skip < ::Minitest::Assertion
355
+ def result_label; end
356
+ end
357
+
358
+ class Minitest::Spec < ::Minitest::Test
359
+ include(::Minitest::Spec::DSL::InstanceMethods)
360
+ extend(::Minitest::Spec::DSL)
361
+
362
+ def initialize(name); end
363
+
364
+ class << self
365
+ def current; end
366
+ end
367
+ end
368
+
369
+ module Minitest::Spec::DSL
370
+ def after(_type = T.unsafe(nil), &block); end
371
+ def before(_type = T.unsafe(nil), &block); end
372
+ def children; end
373
+ def create(name, desc); end
374
+ def desc; end
375
+ def describe_stack; end
376
+ def it(desc = T.unsafe(nil), &block); end
377
+ def let(name, &block); end
378
+ def name; end
379
+ def nuke_test_methods!; end
380
+ def register_spec_type(*args, &block); end
381
+ def spec_type(desc, *additional); end
382
+ def specify(desc = T.unsafe(nil), &block); end
383
+ def subject(&block); end
384
+ def to_s; end
385
+
386
+ class << self
387
+ def extended(obj); end
388
+ end
389
+ end
390
+
391
+ module Minitest::Spec::DSL::InstanceMethods
392
+ def _(value = T.unsafe(nil), &block); end
393
+ def before_setup; end
394
+ def expect(value = T.unsafe(nil), &block); end
395
+ def value(value = T.unsafe(nil), &block); end
396
+ end
397
+
398
+ Minitest::Spec::DSL::TYPES = T.let(T.unsafe(nil), Array)
399
+
400
+ Minitest::Spec::TYPES = T.let(T.unsafe(nil), Array)
401
+
402
+ class Minitest::StatisticsReporter < ::Minitest::Reporter
403
+ def initialize(io = T.unsafe(nil), options = T.unsafe(nil)); end
404
+
405
+ def assertions; end
406
+ def assertions=(_); end
407
+ def count; end
408
+ def count=(_); end
409
+ def errors; end
410
+ def errors=(_); end
411
+ def failures; end
412
+ def failures=(_); end
413
+ def passed?; end
414
+ def record(result); end
415
+ def report; end
416
+ def results; end
417
+ def results=(_); end
418
+ def skips; end
419
+ def skips=(_); end
420
+ def start; end
421
+ def start_time; end
422
+ def start_time=(_); end
423
+ def total_time; end
424
+ def total_time=(_); end
425
+ end
426
+
427
+ class Minitest::SummaryReporter < ::Minitest::StatisticsReporter
428
+ def aggregated_results(io); end
429
+ def old_sync; end
430
+ def old_sync=(_); end
431
+ def report; end
432
+ def start; end
433
+ def statistics; end
434
+ def summary; end
435
+ def sync; end
436
+ def sync=(_); end
437
+ def to_s; end
438
+
439
+ private
440
+
441
+ def binary_string; end
442
+ end
443
+
444
+ class Minitest::Test < ::Minitest::Runnable
445
+ include(::Minitest::Assertions)
446
+ include(::Minitest::Reportable)
447
+ include(::Minitest::Test::LifecycleHooks)
448
+ include(::Minitest::Guard)
449
+ include(::Mocha::ParameterMatchers)
450
+ include(::Mocha::Hooks)
451
+ include(::Mocha::API)
452
+ include(::Mocha::Integration::MiniTest::Adapter)
453
+ extend(::Minitest::Guard)
454
+
455
+ def capture_exceptions; end
456
+ def class_name; end
457
+ def run; end
458
+ def with_info_handler(&block); end
459
+
460
+ class << self
461
+ def i_suck_and_my_tests_are_order_dependent!; end
462
+ def io_lock; end
463
+ def io_lock=(_); end
464
+ def make_my_diffs_pretty!; end
465
+ def parallelize_me!; end
466
+ def runnable_methods; end
467
+ def test_order; end
468
+ end
469
+ end
470
+
471
+ module Minitest::Test::LifecycleHooks
472
+ def after_setup; end
473
+ def after_teardown; end
474
+ def before_setup; end
475
+ def before_teardown; end
476
+ def setup; end
477
+ def teardown; end
478
+ end
479
+
480
+ Minitest::Test::PASSTHROUGH_EXCEPTIONS = T.let(T.unsafe(nil), Array)
481
+
482
+ Minitest::Test::TEARDOWN_METHODS = T.let(T.unsafe(nil), Array)
483
+
484
+ class Minitest::UnexpectedError < ::Minitest::Assertion
485
+ def initialize(error); end
486
+
487
+ def backtrace; end
488
+ def error; end
489
+ def error=(_); end
490
+ def message; end
491
+ def result_label; end
492
+ end
493
+
494
+ class Minitest::Unit
495
+ class << self
496
+ def after_tests(&b); end
497
+ def autorun; end
498
+ end
499
+ end
500
+
501
+ class Minitest::Unit::TestCase < ::Minitest::Test
502
+ class << self
503
+ def inherited(klass); end
504
+ end
505
+ end
506
+
507
+ Minitest::Unit::VERSION = T.let(T.unsafe(nil), String)
508
+
509
+ Minitest::VERSION = T.let(T.unsafe(nil), String)
510
+
511
+ class MockExpectationError < ::StandardError
512
+ end
513
+
514
+ class Module
515
+ include(::ActiveSupport::Dependencies::ModuleConstMissing)
516
+ include(::Module::Concerning)
517
+
518
+ def infect_an_assertion(meth, new_name, dont_flip = T.unsafe(nil)); end
519
+ end
520
+
521
+ Module::DELEGATION_RESERVED_KEYWORDS = T.let(T.unsafe(nil), Array)
522
+
523
+ Module::DELEGATION_RESERVED_METHOD_NAMES = T.let(T.unsafe(nil), Set)
524
+
525
+ Module::RUBY_RESERVED_KEYWORDS = T.let(T.unsafe(nil), Array)
526
+
527
+ class Object < ::BasicObject
528
+ include(::ActiveSupport::ToJsonWithActiveSupportEncoder)
529
+ include(::ActiveSupport::ForkTracker::CoreExt)
530
+ include(::ActiveSupport::ForkTracker::CoreExtPrivate)
531
+ include(::Kernel)
532
+ include(::JSON::Ext::Generator::GeneratorMethods::Object)
533
+ include(::ActiveSupport::Tryable)
534
+ include(::ActiveSupport::Dependencies::Loadable)
535
+ include(::Minitest::Expectations)
536
+ include(::Mocha::ParameterMatchers::InstanceMethods)
537
+ include(::Mocha::Inspect::ObjectMethods)
538
+ include(::Mocha::ObjectMethods)
539
+ include(::PP::ObjectMixin)
540
+
541
+ def stub(name, val_or_callable, *block_args); end
542
+ end