From ea7f912e2cdaab1a0978bc23141522075181780d Mon Sep 17 00:00:00 2001 From: Michael Nikitochkin Date: Wed, 16 Apr 2025 08:56:40 +0200 Subject: [PATCH] Setup Github Action --- .github/workflows/test.yml | 57 ++++++++++++++++++++++++++++++++++++++ Gemfile | 4 ++- Gemfile.lock | 9 +++++- crystalruby.gemspec | 1 + test/test_helper.rb | 4 +-- 5 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..1b119a5 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,57 @@ +name: Test +on: + push: + branches: [master] + pull_request: + branches: [master] + workflow_dispatch: + schedule: + - cron: 13 7 * * 6 +jobs: + test: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + ruby_version: + - 3.3.8 + - 3.4.3 + crystal_version: + - 1.15.1 + - latest + experimental: [false] + include: + - ruby_version: head + crystal_version: nightly + experimental: true + - ruby_version: head + crystal_version: 1.16.0 + experimental: true + name: Ruby ${{ matrix.ruby_version }} / Crystal ${{ matrix.crystal_version }} + continue-on-error: ${{ matrix.experimental }} + steps: + - name: "[Git] Checkout code" + uses: actions/checkout@v4 + + - uses: crystal-lang/install-crystal@v1 + with: + crystal: ${{ matrix.crystal_version }} + + - uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby_version }} + bundler-cache: true + + - name: "[Test] Run tests" + run: | + bundle exec crystalruby clean + bundle exec rake test + env: + CRYSTAL_RUBY_SINGLE_THREAD_MODE: true + + - name: "[Test] Validate examples" + run: | + for example in examples/**/*.rb; do + echo " > Processing $example..." + bundle exec ruby $example + done diff --git a/Gemfile b/Gemfile index f052d01..fe640a1 100644 --- a/Gemfile +++ b/Gemfile @@ -5,11 +5,13 @@ source "https://rubygems.org" # Specify your gem's dependencies in crystalruby.gemspec gemspec -gem 'ffi' gem "rake", "~> 13.0" +gem "ostruct" # It is used in rake gem gem "minitest", "~> 5.16" gem "minitest-reporters", "~> 1.4" +gem "benchmark" gem "rubocop", "~> 1.21" gem "debug", ">= 1.1.0" +gem "fiddle" # It is used in reline -> irb -> debug gem diff --git a/Gemfile.lock b/Gemfile.lock index 949d12a..d8d7994 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -5,6 +5,7 @@ PATH digest ffi fileutils (~> 1.7) + logger prism (>= 1.3.0, < 1.5.0) GEM @@ -12,6 +13,7 @@ GEM specs: ansi (1.5.0) ast (2.4.2) + benchmark (0.4.0) builder (3.3.0) debug (1.9.2) irb (~> 1.10) @@ -19,6 +21,7 @@ GEM digest (3.1.1) ffi (1.17.0) ffi (1.17.0-arm64-darwin) + fiddle (1.1.8) fileutils (1.7.2) io-console (0.7.2) irb (1.12.0) @@ -26,12 +29,14 @@ GEM reline (>= 0.4.2) json (2.7.1) language_server-protocol (3.17.0.3) + logger (1.7.0) minitest (5.22.3) minitest-reporters (1.7.1) ansi builder minitest (>= 5.0) ruby-progressbar + ostruct (0.6.1) parallel (1.24.0) parser (3.3.0.5) ast (~> 2.4.1) @@ -70,11 +75,13 @@ PLATFORMS ruby DEPENDENCIES + benchmark crystalruby! debug (>= 1.1.0) - ffi + fiddle minitest (~> 5.16) minitest-reporters (~> 1.4) + ostruct rake (~> 13.0) rubocop (~> 1.21) diff --git a/crystalruby.gemspec b/crystalruby.gemspec index 0ed640b..4da9d85 100644 --- a/crystalruby.gemspec +++ b/crystalruby.gemspec @@ -36,6 +36,7 @@ Gem::Specification.new do |spec| spec.add_dependency "ffi" spec.add_dependency "fileutils", "~> 1.7" spec.add_dependency "prism", ">= 1.3.0", "< 1.5.0" + spec.add_dependency "logger" # For more information and examples about making a new gem, check out our # guide at: https://bundler.io/guides/creating_gem.html end diff --git a/test/test_helper.rb b/test/test_helper.rb index 7fdb6a3..21f5dd7 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -8,8 +8,8 @@ Minitest.parallel_executor = Struct.new(:shutdown).new(nil) CrystalRuby.configure do |config| - config.verbose = false - config.log_level = :warn + config.verbose = true + config.log_level = :debug config.colorize_log_output = true config.debug = true config.single_thread_mode = !!ENV["CRYSTAL_RUBY_SINGLE_THREAD_MODE"]