diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..0c92865 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,19 @@ +version: 2 + +updates: + - package-ecosystem: bundler + directory: / + schedule: + interval: weekly + day: monday + time: '00:00' + target-branch: main + versioning-strategy: increase-if-necessary + + - package-ecosystem: github-actions + directory: / + schedule: + interval: weekly + day: monday + time: '00:00' + target-branch: main diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..3a0c5fa --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,35 @@ +name: CI Workflow + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + specs: + name: Rubocop & Rspec + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + ruby-version: ['3.2', '3.1', '3.0', '2.7', '2.6'] + + steps: + - uses: actions/checkout@v3 + - name: Set up Ruby ${{matrix.ruby-version}} + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{matrix.ruby-version}} + bundler-cache: true + - name: Updating RubyGems + run: gem update --system + - name: Install dependencies + run: bundle install + - name: Rubocop + run: bundle exec rubocop -D + - name: Rspec + run: bundle exec rspec diff --git a/.hound.yml b/.hound.yml index bd9b97d..5d0ff60 100644 --- a/.hound.yml +++ b/.hound.yml @@ -1,2 +1,2 @@ ruby: - config_file: .ruby-style.yml + config_file: .rubocop.yml diff --git a/.rubocop.yml b/.rubocop.yml deleted file mode 120000 index 52caed6..0000000 --- a/.rubocop.yml +++ /dev/null @@ -1 +0,0 @@ -.ruby-style.yml \ No newline at end of file diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 0000000..eddcf01 --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,91 @@ +AllCops: + Exclude: + - memfs.gemspec + - spec/**/* + - vendor/bundle/**/* + NewCops: enable + TargetRubyVersion: 2.7 + +Layout/ArgumentAlignment: + EnforcedStyle: with_fixed_indentation + +Layout/EmptyLineAfterGuardClause: + Enabled: false + +Layout/FirstArrayElementIndentation: + EnforcedStyle: consistent + +Layout/FirstHashElementIndentation: + EnforcedStyle: consistent + +Layout/LineLength: + Exclude: + - Rakefile + Max: 100 + +Layout/MultilineMethodCallBraceLayout: + EnforcedStyle: same_line + +Layout/MultilineMethodDefinitionBraceLayout: + EnforcedStyle: same_line + +Layout/MultilineOperationIndentation: + EnforcedStyle: indented + +Layout/ParameterAlignment: + EnforcedStyle: with_fixed_indentation + +Metrics/AbcSize: + Max: 18 + +Metrics/ClassLength: + Enabled: false + +Metrics/MethodLength: + Max: 10 + +Naming/PredicateName: + ForbiddenPrefixes: + - is_ + +Security/Open: + Enabled: false + +Style/AccessModifierDeclarations: + Enabled: false + +Style/AndOr: + Enabled: false + +Style/Documentation: + Enabled: false + +Style/DoubleNegation: + Enabled: false + +Style/PercentLiteralDelimiters: + PreferredDelimiters: + '%': '{}' + '%i': '[]' + '%q': '{}' + '%Q': '{}' + '%r': '{}' + '%s': '{}' + '%w': '[]' + '%W': '[]' + '%x': '{}' + +Style/RegexpLiteral: + EnforcedStyle: mixed + +Style/SignalException: + EnforcedStyle: semantic + +Style/SpecialGlobalVars: + Enabled: false + +Style/StringLiterals: + EnforcedStyle: single_quotes + +Style/StringLiteralsInInterpolation: + EnforcedStyle: single_quotes diff --git a/.ruby-style.yml b/.ruby-style.yml deleted file mode 100644 index 3e06804..0000000 --- a/.ruby-style.yml +++ /dev/null @@ -1,90 +0,0 @@ -AllCops: - Exclude: - - memfs.gemspec - - 'spec/**/*' - NewCops: enable - TargetRubyVersion: 2.7 - -Layout/ArgumentAlignment: - EnforcedStyle: with_fixed_indentation - -Layout/ParameterAlignment: - EnforcedStyle: with_fixed_indentation - -Layout/EmptyLineAfterGuardClause: - Enabled: false - -Layout/FirstArrayElementIndentation: - EnforcedStyle: consistent - -Layout/FirstHashElementIndentation: - EnforcedStyle: consistent - -Layout/LineLength: - Exclude: - - Rakefile - Max: 100 - -Layout/MultilineMethodCallBraceLayout: - EnforcedStyle: same_line - -Layout/MultilineMethodDefinitionBraceLayout: - EnforcedStyle: same_line - -Layout/MultilineOperationIndentation: - EnforcedStyle: indented - -Metrics/AbcSize: - Max: 18 - -Metrics/ClassLength: - Enabled: false - -Metrics/MethodLength: - Max: 10 - -Naming/PredicateName: - ForbiddenPrefixes: - - is_ - -Security/Open: - Enabled: false - -Style/AccessModifierDeclarations: - Enabled: false - -Style/AndOr: - Enabled: false - -Style/DoubleNegation: - Enabled: false - -Style/Documentation: - Enabled: false - -Style/PercentLiteralDelimiters: - PreferredDelimiters: - '%': '{}' - '%i': '[]' - '%q': '{}' - '%Q': '{}' - '%r': '{}' - '%s': '{}' - '%w': '[]' - '%W': '[]' - '%x': '{}' - -Style/RegexpLiteral: - EnforcedStyle: mixed - -Style/SignalException: - EnforcedStyle: semantic - -Style/SpecialGlobalVars: - Enabled: false - -Style/StringLiterals: - EnforcedStyle: single_quotes - -Style/StringLiteralsInInterpolation: - EnforcedStyle: single_quotes diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 97ab780..0000000 --- a/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: ruby -cache: bundler -rvm: - - 2.4 - - 2.5 - - 2.6 - - 2.7 diff --git a/CHANGELOG.md b/CHANGELOG.md index 258a872..0ddd779 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,12 +2,19 @@ ## HEAD -* ADD: `Dir.empty?` from Ruby 2.4 +* ADD: Support for Ruby 3.x +* ADD: `Dir.empty?` * ADD: `IO#fileno` and `Dir#fileno` raise `NotImplementedError` * ADD: `File.birthtime` and `File#birthtime` * ADD: `File.empty?` * ADD: `File::Stat#nlink` (#39 by @djberg96) * FIX: Fixing the inverted _read_ and _execute_ bitmasks (#41 by @micahlee) +* ADD: Dependabot configuration +* CHG: Replacing Travis CI with GitHub Actions + +### Breaking + +* DEL: Removing support for Ruby 2.4 and 2.5 ## 1.0.0 diff --git a/lib/memfs/io.rb b/lib/memfs/io.rb index 48d665a..3458db9 100644 --- a/lib/memfs/io.rb +++ b/lib/memfs/io.rb @@ -113,7 +113,7 @@ def external_encoding end def each(sep = $/, &block) - return to_enum(__callee__) unless block_given? + return to_enum(__callee__, sep) unless block_given? fail IOError, 'not opened for reading' unless readable? content.each_line(sep) { |line| block.call(line) } self diff --git a/memfs.gemspec b/memfs.gemspec index 0071d26..0432fe7 100644 --- a/memfs.gemspec +++ b/memfs.gemspec @@ -21,14 +21,14 @@ Gem::Specification.new do |gem| gem.require_paths = ['lib'] gem.add_development_dependency 'coveralls', '~> 0.6' - gem.add_development_dependency 'rake', '~> 12.0' + gem.add_development_dependency 'rake', '~> 13.0' gem.add_development_dependency 'rspec', '~> 3.0' gem.add_development_dependency 'guard', '~> 2.6' gem.add_development_dependency 'guard-rspec', '~> 4.3' gem.add_development_dependency 'rb-inotify', '~> 0.8' gem.add_development_dependency 'rb-fsevent', '~> 0.9' gem.add_development_dependency 'rb-fchange', '~> 0.0' - gem.add_development_dependency 'rubocop', '~> 0.79' + gem.add_development_dependency 'rubocop', '~> 1.44' listen_version = RUBY_VERSION >= '2.2.3' ? '~> 3.1' : '~> 3.0.7' gem.add_development_dependency 'listen', listen_version