Commit b0a0186a authored by Matias Alvarez's avatar Matias Alvarez
Browse files

fix: Logging validator exit with code 2

parent e523484f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -101,7 +101,7 @@ module Labkit
            warn baseline_generation_message(new_offenses)
          else
            warn report_new_offenses(new_offenses)
            raise "New LabKit logging offenses detected"
            raise SystemExit.new(2), "New LabKit logging offenses detected"
          end
        end

+8 −8
Original line number Diff line number Diff line
@@ -203,13 +203,13 @@ RSpec.describe Labkit::Logging::FieldValidator do
          File.write(config_path, { 'skip_ci_failure' => false, 'offenses' => [] }.to_yaml)
        end

        it 'raises an error for new offenses' do
        it 'exits with status 2 for new offenses' do
          offenses = registry.instance_variable_get(:@offenses)
          offenses << create_offense('app/models/user.rb', 10, 'meta.user_id', 'Labkit::Fields::GL_USER_ID', 'AppLogger')

          expect do
            suppress_output { described_class.process_violations }
          end.to raise_error(RuntimeError, /New LabKit logging offenses detected/)
          end.to raise_error(SystemExit) { |e| (expect(e.status).to eq(2)) && (expect(e.message).to match(/New LabKit logging offenses detected/)) }
        end
      end

@@ -218,36 +218,36 @@ RSpec.describe Labkit::Logging::FieldValidator do
          File.write(config_path, { 'offenses' => [] }.to_yaml)
        end

        it 'raises an error for new offenses' do
        it 'exits with status 2 for new offenses' do
          offenses = registry.instance_variable_get(:@offenses)
          offenses << create_offense('app/models/user.rb', 10, 'meta.user_id', 'Labkit::Fields::GL_USER_ID', 'AppLogger')

          expect do
            suppress_output { described_class.process_violations }
          end.to raise_error(RuntimeError, /New LabKit logging offenses detected/)
          end.to raise_error(SystemExit) { |e| (expect(e.status).to eq(2)) && (expect(e.message).to match(/New LabKit logging offenses detected/)) }
        end
      end
    end

    context 'with UPDATE not set' do
      it 'raises an error for new offenses' do
      it 'exits with status 2 for new offenses' do
        offenses = registry.instance_variable_get(:@offenses)
        offenses << create_offense('app/models/user.rb', 10, 'meta.user_id', 'Labkit::Fields::GL_USER_ID', 'AppLogger')

        expect do
          suppress_output { described_class.process_violations }
        end.to raise_error(RuntimeError, /New LabKit logging offenses detected/)
        end.to raise_error(SystemExit) { |e| (expect(e.status).to eq(2)) && (expect(e.message).to match(/New LabKit logging offenses detected/)) }

        expect(File.exist?(config_path)).to be(false)
      end

      it 'reports offense details before raising' do
      it 'reports offense details before exiting' do
        offenses = registry.instance_variable_get(:@offenses)
        offenses << create_offense('app/models/user.rb', 10, 'meta.user_id', 'Labkit::Fields::GL_USER_ID', 'AppLogger')

        expect do
          described_class.process_violations
        end.to raise_error(RuntimeError).and output(%r{app/models/user.rb:10.*meta\.user_id.*GL_USER_ID}m).to_stderr
        end.to raise_error(SystemExit).and output(%r{app/models/user.rb:10.*meta\.user_id.*GL_USER_ID}m).to_stderr
      end
    end