diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml new file mode 100644 index 0000000..05a25c6 --- /dev/null +++ b/.github/workflows/examples.yml @@ -0,0 +1,25 @@ +name: Examples + +on: + push: + branches: + - release/3.* + - temp/3.* + + pull_request: + branches: + - release/3.* + - temp/3.* + +jobs: + check-syntax: + name: Check Syntax + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + + - uses: ruby/setup-ruby@v1 + with: + ruby-version: '4.0' + + - run: rake check_syntax diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..8628b7c --- /dev/null +++ b/Rakefile @@ -0,0 +1,20 @@ +desc "Check syntax of all Ruby example files (equivalent to running `ruby -c` on each file)" +task :check_syntax do + pass = 0 + fail_count = 0 + errors = [] + + Dir.glob("modules/**/*.rb").sort.each do |file| + source = File.read(file) + RubyVM::InstructionSequence.compile(source, file) + pass += 1 + rescue SyntaxError => e + fail_count += 1 + errors << file + puts "FAIL: #{e.message}" + end + + puts "\nResults: #{pass} files passed, #{fail_count} failed" + + abort "Files with errors:\n#{errors.map { |f| " #{f}" }.join("\n")}" if errors.any? +end