selective-ruby-core 0.2.2-arm64-darwin → 0.2.4-arm64-darwin
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.
- checksums.yaml +4 -4
- data/lib/bin/build_env.sh +18 -14
- data/lib/bin/transport +0 -0
- data/lib/selective/ruby/core/controller.rb +37 -22
- data/lib/selective/ruby/core/file_correlator.rb +1 -1
- data/lib/selective/ruby/core/named_pipe.rb +2 -4
- data/lib/selective/ruby/core/version.rb +1 -1
- data/lib/selective-ruby-core.rb +1 -0
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 2e1eca15119e443f80735ecf5a021664cc706dd9efb903a3f1d4825df5950e0d
         | 
| 4 | 
            +
              data.tar.gz: 3b9f485c85389105e30cec608443215d8b141efa03f2d20cff61a5451cc9d6ff
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: a9948e7eb50a8b2f828a99d4813aa0d58508affb1596c0c559239311a5e8a8777f48d488caae6f6fe590eff4622c263cf1b8fccef3377e8b3b9109687002347a
         | 
| 7 | 
            +
              data.tar.gz: 6fb5ad1de05daa3d5fed90f4ac7ca89038edd0a10137ad90449335044365d83af07ed00d9901bff5c380fdbc7198808a6a566fbeec3b387e6002b0d721e99791
         | 
    
        data/lib/bin/build_env.sh
    CHANGED
    
    | @@ -31,22 +31,26 @@ elif [ -n "$SEMAPHORE" ]; then | |
| 31 31 | 
             
              pr_title=$SEMAPHORE_GIT_PR_NAME
         | 
| 32 32 | 
             
            fi
         | 
| 33 33 |  | 
| 34 | 
            +
            function escape() {
         | 
| 35 | 
            +
              echo -n "$1" | sed 's/"/\\"/g'
         | 
| 36 | 
            +
            }
         | 
| 37 | 
            +
             | 
| 34 38 | 
             
            # Output the JSON
         | 
| 35 39 | 
             
            cat <<EOF
         | 
| 36 40 | 
             
              {
         | 
| 37 | 
            -
                "api_key": "$SELECTIVE_API_KEY",
         | 
| 38 | 
            -
                "host": "${SELECTIVE_HOST:-wss://app.selective.ci}",
         | 
| 39 | 
            -
                "platform": "${SELECTIVE_PLATFORM:-$platform}",
         | 
| 40 | 
            -
                "branch": "${SELECTIVE_BRANCH:-$branch}",
         | 
| 41 | 
            -
                "pr_title": "${SELECTIVE_PR_TITLE:-$pr_title}",
         | 
| 42 | 
            -
                "target_branch": "${SELECTIVE_TARGET_BRANCH:-$target_branch}",
         | 
| 43 | 
            -
                "actor": "${SELECTIVE_ACTOR:-$actor}",
         | 
| 44 | 
            -
                "sha": "${SELECTIVE_SHA:-$sha}",
         | 
| 45 | 
            -
                "run_id": "${SELECTIVE_RUN_ID:-$run_id}",
         | 
| 46 | 
            -
                "run_attempt": "${SELECTIVE_RUN_ATTEMPT:-$run_attempt}",
         | 
| 47 | 
            -
                "runner_id": "${SELECTIVE_RUNNER_ID:-$runner_id}",
         | 
| 48 | 
            -
                "commit_message": "$(git log --format=%s -n 1 $sha)",
         | 
| 49 | 
            -
                "committer_name": "$(git show -s --format='%an' -n 1 $sha)",
         | 
| 50 | 
            -
                "committer_email": "$(git show -s --format='%ae' -n 1 $sha)"
         | 
| 41 | 
            +
                "api_key": "$(escape "${SELECTIVE_API_KEY}")",
         | 
| 42 | 
            +
                "host": "$(escape "${SELECTIVE_HOST:-wss://app.selective.ci}")",
         | 
| 43 | 
            +
                "platform": "$(escape "${SELECTIVE_PLATFORM:-$platform}")",
         | 
| 44 | 
            +
                "branch": "$(escape "${SELECTIVE_BRANCH:-$branch}")",
         | 
| 45 | 
            +
                "pr_title": "$(escape "${SELECTIVE_PR_TITLE:-$pr_title}")",
         | 
| 46 | 
            +
                "target_branch": "$(escape "${SELECTIVE_TARGET_BRANCH:-$target_branch}")",
         | 
| 47 | 
            +
                "actor": "$(escape "${SELECTIVE_ACTOR:-$actor}")",
         | 
| 48 | 
            +
                "sha": "$(escape "${SELECTIVE_SHA:-$sha}")",
         | 
| 49 | 
            +
                "run_id": "$(escape "${SELECTIVE_RUN_ID:-$run_id}")",
         | 
| 50 | 
            +
                "run_attempt": "$(escape "${SELECTIVE_RUN_ATTEMPT:-$run_attempt}")",
         | 
| 51 | 
            +
                "runner_id": "$(escape "${SELECTIVE_RUNNER_ID:-$runner_id}")",
         | 
| 52 | 
            +
                "commit_message": "$(escape "$(git log --format=%s -n 1 $sha)")",
         | 
| 53 | 
            +
                "committer_name": "$(escape "$(git show -s --format='%an' -n 1 $sha)")",
         | 
| 54 | 
            +
                "committer_email": "$(escape "$(git show -s --format='%ae' -n 1 $sha)")"
         | 
| 51 55 | 
             
              }
         | 
| 52 56 | 
             
            EOF
         | 
    
        data/lib/bin/transport
    CHANGED
    
    | Binary file | 
| @@ -8,6 +8,7 @@ module Selective | |
| 8 8 | 
             
                  class Controller
         | 
| 9 9 | 
             
                    include Helper
         | 
| 10 10 | 
             
                    @@selective_suppress_reporting = false
         | 
| 11 | 
            +
                    @@report_at_finish = {}
         | 
| 11 12 |  | 
| 12 13 | 
             
                    REQUIRED_CONFIGURATION = {
         | 
| 13 14 | 
             
                      "host" => "SELECTIVE_HOST",
         | 
| @@ -33,7 +34,7 @@ module Selective | |
| 33 34 | 
             
                      handle_termination_signals(transport_pid)
         | 
| 34 35 | 
             
                      wait_for_connectivity
         | 
| 35 36 | 
             
                      run_main_loop
         | 
| 36 | 
            -
                    rescue  | 
| 37 | 
            +
                    rescue ConnectionLostError
         | 
| 37 38 | 
             
                      retry!
         | 
| 38 39 | 
             
                    rescue => e
         | 
| 39 40 | 
             
                      with_error_handling { raise e }
         | 
| @@ -57,12 +58,16 @@ module Selective | |
| 57 58 | 
             
                      @@selective_suppress_reporting
         | 
| 58 59 | 
             
                    end
         | 
| 59 60 |  | 
| 61 | 
            +
                    def self.report_at_finish
         | 
| 62 | 
            +
                      @@report_at_finish
         | 
| 63 | 
            +
                    end
         | 
| 64 | 
            +
             | 
| 60 65 | 
             
                    private
         | 
| 61 66 |  | 
| 62 67 | 
             
                    attr_reader :runner, :pipe, :transport_pid, :retries, :logger, :runner_id, :diff
         | 
| 63 68 |  | 
| 64 69 | 
             
                    def get_runner_id
         | 
| 65 | 
            -
                      runner_id = build_env | 
| 70 | 
            +
                      runner_id = build_env["runner_id"]
         | 
| 66 71 | 
             
                      return generate_runner_id if runner_id.nil? || runner_id.empty?
         | 
| 67 72 |  | 
| 68 73 | 
             
                      runner_id
         | 
| @@ -90,10 +95,10 @@ module Selective | |
| 90 95 | 
             
                    def retry!
         | 
| 91 96 | 
             
                      @retries += 1
         | 
| 92 97 |  | 
| 93 | 
            -
                      with_error_handling { raise "Too many retries" } if retries >  | 
| 98 | 
            +
                      with_error_handling { raise "Too many retries" } if retries > 10
         | 
| 94 99 |  | 
| 95 | 
            -
                      puts("Retrying in #{retries} seconds...")
         | 
| 96 | 
            -
                      sleep(retries)
         | 
| 100 | 
            +
                      puts("Retrying in #{retries} seconds...") if debug?
         | 
| 101 | 
            +
                      sleep(retries > 4 ? 4 : retries)
         | 
| 97 102 | 
             
                      kill_transport
         | 
| 98 103 |  | 
| 99 104 | 
             
                      pipe.reset!
         | 
| @@ -109,29 +114,30 @@ module Selective | |
| 109 114 | 
             
                    end
         | 
| 110 115 |  | 
| 111 116 | 
             
                    def transport_url(reconnect: false)
         | 
| 112 | 
            -
                       | 
| 113 | 
            -
             | 
| 114 | 
            -
             | 
| 115 | 
            -
             | 
| 116 | 
            -
             | 
| 117 | 
            +
                      base_transport_url_params[:reconnect] = true if reconnect
         | 
| 118 | 
            +
                      query_string = URI.encode_www_form(base_transport_url_params)
         | 
| 119 | 
            +
                      "#{build_env["host"]}/transport/websocket?#{query_string}"
         | 
| 120 | 
            +
                    end
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                    def base_transport_url_params
         | 
| 123 | 
            +
                      @base_transport_url_params ||= begin
         | 
| 124 | 
            +
                        api_key = build_env["api_key"]
         | 
| 125 | 
            +
                        run_id = build_env["run_id"]
         | 
| 126 | 
            +
                        run_attempt = build_env["run_attempt"]
         | 
| 117 127 |  | 
| 118 | 
            -
                         | 
| 128 | 
            +
                        metadata = build_env.reject { |k,v| %w(host runner_id api_key run_id run_attempt).include?(k) }
         | 
| 129 | 
            +
             | 
| 130 | 
            +
                        {
         | 
| 131 | 
            +
                          "api_key" => api_key,
         | 
| 119 132 | 
             
                          "run_id" => run_id,
         | 
| 120 133 | 
             
                          "run_attempt" => run_attempt,
         | 
| 121 | 
            -
                          "api_key" => api_key,
         | 
| 122 134 | 
             
                          "runner_id" => runner_id,
         | 
| 123 135 | 
             
                          "language" => "ruby",
         | 
| 124 136 | 
             
                          "core_version" => Selective::Ruby::Core::VERSION,
         | 
| 125 137 | 
             
                          "framework" => runner.framework,
         | 
| 126 138 | 
             
                          "framework_version" => runner.framework_version,
         | 
| 127 139 | 
             
                          "framework_wrapper_version" => runner.wrapper_version,
         | 
| 128 | 
            -
                        }.merge(metadata:  | 
| 129 | 
            -
             | 
| 130 | 
            -
                        prams[:reconnect] = true if reconnect
         | 
| 131 | 
            -
             | 
| 132 | 
            -
                        query_string = URI.encode_www_form(params)
         | 
| 133 | 
            -
             | 
| 134 | 
            -
                        "#{host}/transport/websocket?#{query_string}"
         | 
| 140 | 
            +
                        }.merge(metadata: metadata.to_json)
         | 
| 135 141 | 
             
                      end
         | 
| 136 142 | 
             
                    end
         | 
| 137 143 |  | 
| @@ -224,7 +230,7 @@ module Selective | |
| 224 230 |  | 
| 225 231 | 
             
                          sleep(1)
         | 
| 226 232 | 
             
                        end
         | 
| 227 | 
            -
                      rescue  | 
| 233 | 
            +
                      rescue ConnectionLostError, IOError
         | 
| 228 234 | 
             
                        # If the pipe is close, move straight to killing
         | 
| 229 235 | 
             
                        # it forcefully.
         | 
| 230 236 | 
             
                      end
         | 
| @@ -270,8 +276,11 @@ module Selective | |
| 270 276 | 
             
                      runner.run_test_cases(data[:test_case_ids])
         | 
| 271 277 | 
             
                    end
         | 
| 272 278 |  | 
| 279 | 
            +
                    # Todo: Rename this command to match the method name
         | 
| 280 | 
            +
                    # on the runner wrapper. We should do something similar
         | 
| 281 | 
            +
                    # to normalize handle_print_notice and handle_print_message
         | 
| 273 282 | 
             
                    def handle_remove_failed_test_case_result(data)
         | 
| 274 | 
            -
                      runner. | 
| 283 | 
            +
                      runner.remove_test_case_result(data[:test_case_id])
         | 
| 275 284 | 
             
                    end
         | 
| 276 285 |  | 
| 277 286 | 
             
                    def handle_print_message(data)
         | 
| @@ -281,7 +290,13 @@ module Selective | |
| 281 290 | 
             
                    def handle_close(data)
         | 
| 282 291 | 
             
                      exit_status = data[:exit_status]
         | 
| 283 292 | 
             
                      self.class.restore_reporting!
         | 
| 284 | 
            -
             | 
| 293 | 
            +
             | 
| 294 | 
            +
                      with_error_handling do
         | 
| 295 | 
            +
                        Selective::Ruby::Core::Controller.report_at_finish[:connection_retries] = @retries
         | 
| 296 | 
            +
                        write({type: "report_at_finish", data: Selective::Ruby::Core::Controller.report_at_finish})
         | 
| 297 | 
            +
             | 
| 298 | 
            +
                        runner.finish unless exit_status.is_a?(Integer)
         | 
| 299 | 
            +
                      end
         | 
| 285 300 |  | 
| 286 301 | 
             
                      kill_transport
         | 
| 287 302 | 
             
                      pipe.delete_pipes
         | 
| @@ -9,7 +9,7 @@ module Selective | |
| 9 9 | 
             
                    FILE_CORRELATION_COLLECTOR_PATH = File.join(ROOT_GEM_PATH, "lib", "bin", "file_correlation_collector.sh")
         | 
| 10 10 |  | 
| 11 11 | 
             
                    def initialize(diff, num_commits, target_branch)
         | 
| 12 | 
            -
                      @diff = diff
         | 
| 12 | 
            +
                      @diff = diff.reject {|f| f =~ /^spec\// }
         | 
| 13 13 | 
             
                      @num_commits = num_commits
         | 
| 14 14 | 
             
                      @target_branch = target_branch
         | 
| 15 15 | 
             
                    end
         | 
| @@ -2,8 +2,6 @@ module Selective | |
| 2 2 | 
             
              module Ruby
         | 
| 3 3 | 
             
                module Core
         | 
| 4 4 | 
             
                  class NamedPipe
         | 
| 5 | 
            -
                    class PipeClosedError < StandardError; end
         | 
| 6 | 
            -
             | 
| 7 5 | 
             
                    attr_reader :read_pipe_path, :write_pipe_path
         | 
| 8 6 |  | 
| 9 7 | 
             
                    def initialize(read_pipe_path, write_pipe_path, skip_reset: false)
         | 
| @@ -44,7 +42,7 @@ module Selective | |
| 44 42 | 
             
                        write_pipe.write("\n")
         | 
| 45 43 | 
             
                        write_pipe.flush
         | 
| 46 44 | 
             
                      rescue Errno::EPIPE
         | 
| 47 | 
            -
                        raise  | 
| 45 | 
            +
                        raise ConnectionLostError
         | 
| 48 46 | 
             
                      end
         | 
| 49 47 | 
             
                    end
         | 
| 50 48 |  | 
| @@ -54,7 +52,7 @@ module Selective | |
| 54 52 | 
             
                        message = read_pipe.gets.chomp
         | 
| 55 53 | 
             
                      rescue NoMethodError => e
         | 
| 56 54 | 
             
                        if e.name == :chomp
         | 
| 57 | 
            -
                          raise  | 
| 55 | 
            +
                          raise ConnectionLostError
         | 
| 58 56 | 
             
                        else
         | 
| 59 57 | 
             
                          raise e
         | 
| 60 58 | 
             
                        end
         | 
    
        data/lib/selective-ruby-core.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: selective-ruby-core
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.2. | 
| 4 | 
            +
              version: 0.2.4
         | 
| 5 5 | 
             
            platform: arm64-darwin
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Benjamin Wood
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: exe
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2024- | 
| 12 | 
            +
            date: 2024-02-28 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: zeitwerk
         | 
| @@ -71,7 +71,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 71 71 | 
             
                - !ruby/object:Gem::Version
         | 
| 72 72 | 
             
                  version: '0'
         | 
| 73 73 | 
             
            requirements: []
         | 
| 74 | 
            -
            rubygems_version: 3. | 
| 74 | 
            +
            rubygems_version: 3.5.3
         | 
| 75 75 | 
             
            signing_key: 
         | 
| 76 76 | 
             
            specification_version: 4
         | 
| 77 77 | 
             
            summary: Selective Ruby Client Core
         |