test_version_pre_tag

in dev/release/01-prepare-test.rb [131:340]


  def test_version_pre_tag
    omit_on_release_branch

    expected_changes = [
      {
        path: "c_glib/meson.build",
        hunks: [
          ["-    version: '#{@snapshot_version}',",
           "+    version: '#{@release_version}',"],
        ],
      },
      {
        path: "c_glib/vcpkg.json",
        hunks: [
          ["-  \"version-string\": \"#{@snapshot_version}\",",
           "+  \"version-string\": \"#{@release_version}\","],
        ],
      },
      {
        path: "ci/scripts/PKGBUILD",
        hunks: [
          ["-pkgver=#{@previous_version}.9000",
           "+pkgver=#{@release_version}"],
        ],
      },
      {
        path: "cpp/CMakeLists.txt",
        hunks: [
          ["-set(ARROW_VERSION \"#{@snapshot_version}\")",
           "+set(ARROW_VERSION \"#{@release_version}\")"],
        ],
      },
      {
        path: "cpp/meson.build",
        hunks: [
          ["-    version: '#{@snapshot_version}',",
           "+    version: '#{@release_version}',"],
        ],
      },
      {
        path: "cpp/vcpkg.json",
        hunks: [
          ["-  \"version-string\": \"#{@snapshot_version}\",",
           "+  \"version-string\": \"#{@release_version}\","],
        ],
      },
      {
        path: "csharp/Directory.Build.props",
        hunks: [
          ["-    <Version>#{@snapshot_version}</Version>",
           "+    <Version>#{@release_version}</Version>"],
        ],
      },
      {
        path: "dev/tasks/homebrew-formulae/apache-arrow-glib.rb",
        hunks: [
          ["-  url \"https://www.apache.org/dyn/closer.lua?path=arrow/arrow-#{@snapshot_version}/apache-arrow-#{@snapshot_version}.tar.gz\"",
           "+  url \"https://www.apache.org/dyn/closer.lua?path=arrow/arrow-#{@release_version}/apache-arrow-#{@release_version}.tar.gz\""],
        ],
      },
      {
        path: "dev/tasks/homebrew-formulae/apache-arrow.rb",
        hunks: [
          ["-  url \"https://www.apache.org/dyn/closer.lua?path=arrow/arrow-#{@snapshot_version}/apache-arrow-#{@snapshot_version}.tar.gz\"",
           "+  url \"https://www.apache.org/dyn/closer.lua?path=arrow/arrow-#{@release_version}/apache-arrow-#{@release_version}.tar.gz\""],
        ],
      },
    ]
    unless next_release_type == :patch
      expected_changes += [
        {
          path: "docs/source/_static/versions.json",
          hunks: [
            [
              "-        \"name\": \"#{@release_compatible_version} (dev)\",",
              "+        \"name\": \"#{@next_compatible_version} (dev)\",",
              "-        \"name\": \"#{@previous_compatible_version} (stable)\",",
              "+        \"name\": \"#{@release_compatible_version} (stable)\",",
              "+    {",
              "+        \"name\": \"#{@previous_compatible_version}\",",
              "+        \"version\": \"#{@previous_compatible_version}/\",",
              "+        \"url\": \"https://arrow.apache.org/docs/#{@previous_compatible_version}/\"",
              "+    },",
            ],
          ],
        },
      ]
    end
    expected_changes += [
      {
        path: "js/package.json",
        hunks: [
          ["-  \"version\": \"#{@snapshot_version}\"",
           "+  \"version\": \"#{@release_version}\""],
        ],
      },
      {
        path: "matlab/CMakeLists.txt",
        hunks: [
          ["-set(MLARROW_VERSION \"#{@snapshot_version}\")",
           "+set(MLARROW_VERSION \"#{@release_version}\")"],
        ],
      },
      {
        path: "python/CMakeLists.txt",
        hunks: [
          ["-set(PYARROW_VERSION \"#{@snapshot_version}\")",
           "+set(PYARROW_VERSION \"#{@release_version}\")"],
        ],
      },
      {
        path: "python/pyproject.toml",
        hunks: [
          ["-fallback_version = '#{@release_version}a0'",
           "+fallback_version = '#{@release_version}'"],
        ],
      },
      {
        path: "r/DESCRIPTION",
        hunks: [
          ["-Version: #{@previous_version}.9000",
           "+Version: #{@release_version}"],
        ],
      },
      {
        path: "r/NEWS.md",
        hunks: [
          ["-\# arrow #{@previous_version}.9000",
           "+\# arrow #{@release_version}"],
        ],
      },
    ]
    if next_release_type == :major
      expected_changes += [
        {
          path: "r/pkgdown/assets/versions.html",
          hunks: [
            [
              "-<body><p><a href=\"../dev/r/\">#{@previous_version}.9000 (dev)</a></p>",
              "-<p><a href=\"../r/\">#{@previous_r_version} (release)</a></p>",
              "+<body><p><a href=\"../dev/r/\">#{@release_version}.9000 (dev)</a></p>",
              "+<p><a href=\"../r/\">#{@release_version} (release)</a></p>",
              "+<p><a href=\"../#{@previous_compatible_version}/r/\">" +
              "#{@previous_r_version}</a></p>",
            ]
          ],
        },
        {
          path: "r/pkgdown/assets/versions.json",
          hunks: [
            [
              "-        \"name\": \"#{@previous_version}.9000 (dev)\",",
              "+        \"name\": \"#{@release_version}.9000 (dev)\",",
              "-        \"name\": \"#{@previous_r_version} (release)\",",
              "+        \"name\": \"#{@release_version} (release)\",",
              "+    {",
              "+        \"name\": \"#{@previous_r_version}\",",
              "+        \"version\": \"#{@previous_compatible_version}/\"",
              "+    },",
            ]
          ],
        },
      ]
    else
      expected_changes += [
        {
          path: "r/pkgdown/assets/versions.html",
          hunks: [
            [
              "-<body><p><a href=\"../dev/r/\">#{@previous_version}.9000 (dev)</a></p>",
              "-<p><a href=\"../r/\">#{@previous_r_version} (release)</a></p>",
              "+<body><p><a href=\"../dev/r/\">#{@release_version}.9000 (dev)</a></p>",
              "+<p><a href=\"../r/\">#{@release_version} (release)</a></p>",
            ]
          ],
        },
        {
          path: "r/pkgdown/assets/versions.json",
          hunks: [
            [
              "-        \"name\": \"#{@previous_version}.9000 (dev)\",",
              "+        \"name\": \"#{@release_version}.9000 (dev)\",",
              "-        \"name\": \"#{@previous_r_version} (release)\",",
              "+        \"name\": \"#{@release_version} (release)\",",
            ]
          ],
        },
      ]
    end

    Dir.glob("ruby/**/version.rb") do |path|
      version = "  VERSION = \"#{@snapshot_version}\""
      new_version = "  VERSION = \"#{@release_version}\""
      expected_changes << {
        hunks: [
          [
            "-#{version}",
            "+#{new_version}",
          ]
        ],
        path: path,
      }
    end

    stdout = prepare("VERSION_PRE_TAG")
    assert_equal(expected_changes.sort_by {|diff| diff[:path]},
                 parse_patch(git("log", "-n", "1", "-p")),
                 "Output:\n#{stdout}")
  end