# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

class PrepareTest < Test::Unit::TestCase
  include GitRunnable
  include VersionDetectable

  def setup
    @current_commit = git_current_commit
    detect_versions

    top_dir = Pathname(__dir__).parent.parent
    @original_git_repository = top_dir + ".git"
    Dir.mktmpdir do |dir|
      @test_git_repository = Pathname(dir) + "arrow"
      git("clone", @original_git_repository.to_s, @test_git_repository.to_s)
      Dir.chdir(@test_git_repository) do
        @tag_name = "apache-arrow-#{@release_version}"
        @release_branch = "release-#{@release_version}-rc0"
        @script = "dev/release/00-prepare.sh"
        git("checkout", "-b", @release_branch, @current_commit)
        yield
      end
    end
  end

  def omit_on_release_branch
    omit("Not for release branch") if on_release_branch?
  end

  def prepare(*targets)
    if targets.last.is_a?(Hash)
      additional_env = targets.pop
    else
      additional_env = {}
    end
    env = {"PREPARE_DEFAULT" => "0"}
    targets.each do |target|
      env["PREPARE_#{target}"] = "1"
    end
    env = env.merge(additional_env)
    sh(env, @script, @release_version, @next_version)
  end

  def parse_patch(patch)
    diffs = []
    in_hunk = false
    patch.each_line do |line|
      case line
      when /\A--- a\//
        path = $POSTMATCH.chomp
        diffs << {path: path, hunks: []}
        in_hunk = false
      when /\A@@/
        in_hunk = true
        diffs.last[:hunks] << []
      when /\A[-+]/
        next unless in_hunk
        diffs.last[:hunks].last << line.chomp
      end
    end
    diffs.sort_by do |diff|
      diff[:path]
    end
  end

  def test_linux_packages
    user = "Arrow Developers"
    email = "dev@arrow.apache.org"
    prepare("LINUX_PACKAGES",
            "DEBFULLNAME" => user,
            "DEBEMAIL" => email)
    changes = parse_patch(git("log", "-n", "1", "-p"))
    sampled_changes = changes.collect do |change|
      {
        path: change[:path],
        sampled_hunks: change[:hunks].collect(&:first),
        # sampled_hunks: change[:hunks],
      }
    end
    base_dir = "dev/tasks/linux-packages"
    today = Time.now.utc.strftime("%a %b %d %Y")
    expected_changes = [
      {
        path: "#{base_dir}/apache-arrow-archive-keyring/debian/changelog",
        sampled_hunks: [
          "+apache-arrow-archive-keyring (#{@release_version}-1) " +
          "unstable; urgency=low",
        ],
      },
      {
        path:
          "#{base_dir}/apache-arrow-release/yum/apache-arrow-release.spec.in",
        sampled_hunks: [
          "+* #{today} #{user} <#{email}> - #{@release_version}-1",
        ],
      },
      {
        path: "#{base_dir}/apache-arrow/debian.ubuntu-xenial/changelog",
        sampled_hunks: [
          "+apache-arrow (#{@release_version}-1) unstable; urgency=low",
        ],
      },
      {
        path: "#{base_dir}/apache-arrow/debian/changelog",
        sampled_hunks: [
          "+apache-arrow (#{@release_version}-1) unstable; urgency=low",
        ],
      },
      {
        path: "#{base_dir}/apache-arrow/yum/arrow.spec.in",
        sampled_hunks: [
          "+* #{today} #{user} <#{email}> - #{@release_version}-1",
        ],
      },
    ]
    assert_equal(expected_changes, sampled_changes)
  end

  def test_version_pre_tag
    omit_on_release_branch
    prepare("VERSION_PRE_TAG")
    assert_equal([
                   {
                     path: "c_glib/configure.ac",
                     hunks: [
                       ["-m4_define([arrow_glib_version], #{@snapshot_version})",
                        "+m4_define([arrow_glib_version], #{@release_version})"],
                     ],
                   },
                   {
                     path: "c_glib/meson.build",
                     hunks: [
                       ["-version = '#{@snapshot_version}'",
                        "+version = '#{@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: "csharp/Directory.Build.props",
                     hunks: [
                       ["-    <Version>#{@snapshot_version}</Version>",
                        "+    <Version>#{@release_version}</Version>"],
                     ],
                   },
                   {
                     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\""],
                     ],
                   },
                   {
                     path: "dev/tasks/homebrew-formulae/autobrew/apache-arrow.rb",
                     hunks: [
                       ["-  url \"https://www.apache.org/dyn/closer.lua?path=arrow/arrow-#{@previous_version}.9000/apache-arrow-#{@previous_version}.9000.tar.gz\"",
                        "+  url \"https://www.apache.org/dyn/closer.lua?path=arrow/arrow-#{@release_version}/apache-arrow-#{@release_version}.tar.gz\""],
                     ],
                   },
                   {
                     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/setup.py",
                     hunks: [
                       ["-default_version = '#{@snapshot_version}'",
                        "+default_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}"],
                     ],
                   },
                   {
                     path: "ruby/red-arrow-cuda/lib/arrow-cuda/version.rb",
                     hunks: [
                       ["-  VERSION = \"#{@snapshot_version}\"",
                        "+  VERSION = \"#{@release_version}\""],
                     ],
                   },
                   {
                     path: "ruby/red-arrow/lib/arrow/version.rb",
                     hunks: [
                       ["-  VERSION = \"#{@snapshot_version}\"",
                        "+  VERSION = \"#{@release_version}\""],
                     ],
                   },
                   {
                     path: "ruby/red-gandiva/lib/gandiva/version.rb",
                     hunks: [
                       ["-  VERSION = \"#{@snapshot_version}\"",
                        "+  VERSION = \"#{@release_version}\""],
                     ],
                   },
                   {
                     path: "ruby/red-parquet/lib/parquet/version.rb",
                     hunks: [
                       ["-  VERSION = \"#{@snapshot_version}\"",
                        "+  VERSION = \"#{@release_version}\""],
                     ],
                   },
                   {
                     path: "ruby/red-plasma/lib/plasma/version.rb",
                     hunks: [
                       ["-  VERSION = \"#{@snapshot_version}\"",
                        "+  VERSION = \"#{@release_version}\""],
                     ],
                   },
                   {
                     path: "rust/arrow-flight/Cargo.toml",
                     hunks: [
                       ["-version = \"#{@snapshot_version}\"",
                        "+version = \"#{@release_version}\""],
                     ],
                   },
                   {
                     path: "rust/arrow/Cargo.toml",
                     hunks: [
                       ["-version = \"#{@snapshot_version}\"",
                        "+version = \"#{@release_version}\""],
                     ],
                   },
                   {
                     path: "rust/datafusion/Cargo.toml",
                     hunks: [
                       ["-version = \"#{@snapshot_version}\"",
                        "+version = \"#{@release_version}\""],
                       ["-arrow = { path = \"../arrow\", version = \"#{@snapshot_version}\" }",
                        "-parquet = { path = \"../parquet\", version = \"#{@snapshot_version}\" }",
                        "+arrow = { path = \"../arrow\", version = \"#{@release_version}\" }",
                        "+parquet = { path = \"../parquet\", version = \"#{@release_version}\" }"],
                       ["-arrow-flight = { path = \"../arrow-flight\", version = \"#{@snapshot_version}\" }",
                        "+arrow-flight = { path = \"../arrow-flight\", version = \"#{@release_version}\" }"]
                     ],
                   },
                   {
                     path: "rust/datafusion/README.md",
                     hunks: [
                       ["-datafusion = \"#{@snapshot_version}\"",
                        "+datafusion = \"#{@release_version}\""],
                     ],
                   },
                   {
                     path: "rust/parquet/Cargo.toml",
                     hunks: [
                       ["-version = \"#{@snapshot_version}\"",
                        "+version = \"#{@release_version}\""],
                       ["-arrow = { path = \"../arrow\", version = \"#{@snapshot_version}\" }",
                        "+arrow = { path = \"../arrow\", version = \"#{@release_version}\" }"]
                     ],
                   },
                   {
                     path: "rust/parquet/README.md",
                     hunks: [
                       ["-parquet = \"#{@snapshot_version}\"",
                        "+parquet = \"#{@release_version}\""],
                       ["-See [crate documentation](https://docs.rs/crate/parquet/#{@snapshot_version}) on available API.",
                        "+See [crate documentation](https://docs.rs/crate/parquet/#{@release_version}) on available API."],
                     ],
                   },
                 ],
                 parse_patch(git("log", "-n", "1", "-p")))
  end

  def test_version_post_tag
    if on_release_branch?
      prepare("VERSION_POST_TAG")
    else
      prepare("VERSION_PRE_TAG",
              "VERSION_POST_TAG")
    end
    assert_equal([
                   {
                     path: "c_glib/configure.ac",
                     hunks: [
                       ["-m4_define([arrow_glib_version], #{@release_version})",
                        "+m4_define([arrow_glib_version], #{@next_snapshot_version})"],
                     ],
                   },
                   {
                     path: "c_glib/meson.build",
                     hunks: [
                       ["-version = '#{@release_version}'",
                        "+version = '#{@next_snapshot_version}'"],
                     ],
                   },
                   {
                     path: "ci/scripts/PKGBUILD",
                     hunks: [
                       ["-pkgver=#{@release_version}",
                        "+pkgver=#{@release_version}.9000"],
                     ],
                   },
                   {
                     path: "cpp/CMakeLists.txt",
                     hunks: [
                       ["-set(ARROW_VERSION \"#{@release_version}\")",
                        "+set(ARROW_VERSION \"#{@next_snapshot_version}\")"],
                     ],
                   },
                   {
                     path: "csharp/Directory.Build.props",
                     hunks: [
                       ["-    <Version>#{@release_version}</Version>",
                        "+    <Version>#{@next_snapshot_version}</Version>"],
                     ],
                   },
                   {
                     path: "dev/tasks/homebrew-formulae/apache-arrow.rb",
                     hunks: [
                       ["-  url \"https://www.apache.org/dyn/closer.lua?path=arrow/arrow-#{@release_version}/apache-arrow-#{@release_version}.tar.gz\"",
                        "+  url \"https://www.apache.org/dyn/closer.lua?path=arrow/arrow-#{@next_snapshot_version}/apache-arrow-#{@next_snapshot_version}.tar.gz\""],
                     ],
                   },
                   {
                     path: "dev/tasks/homebrew-formulae/autobrew/apache-arrow.rb",
                     hunks: [
                       ["-  url \"https://www.apache.org/dyn/closer.lua?path=arrow/arrow-#{@release_version}/apache-arrow-#{@release_version}.tar.gz\"",
                        "+  url \"https://www.apache.org/dyn/closer.lua?path=arrow/arrow-#{@release_version}.9000/apache-arrow-#{@release_version}.9000.tar.gz\""],
                     ],
                   },
                   {
                     path: "js/package.json",
                     hunks: [
                       ["-  \"version\": \"#{@release_version}\"",
                        "+  \"version\": \"#{@next_snapshot_version}\""],
                     ],
                   },
                   {
                     path: "matlab/CMakeLists.txt",
                     hunks: [
                       ["-set(MLARROW_VERSION \"#{@release_version}\")",
                        "+set(MLARROW_VERSION \"#{@next_snapshot_version}\")"],
                     ],
                   },
                   {
                     path: "python/setup.py",
                     hunks: [
                       ["-default_version = '#{@release_version}'",
                        "+default_version = '#{@next_snapshot_version}'"],
                     ],
                   },
                   {
                     path: "r/DESCRIPTION",
                     hunks: [
                       ["-Version: #{@release_version}",
                        "+Version: #{@release_version}.9000"],
                     ],
                   },
                   {
                     path: "r/NEWS.md",
                     # Note that these are additions only, no replacement
                     hunks: [
                       ["+# arrow #{@release_version}.9000",
                        "+"],
                     ],
                   },
                   {
                     path: "ruby/red-arrow-cuda/lib/arrow-cuda/version.rb",
                     hunks: [
                       ["-  VERSION = \"#{@release_version}\"",
                        "+  VERSION = \"#{@next_snapshot_version}\""],
                     ],
                   },
                   {
                     path: "ruby/red-arrow/lib/arrow/version.rb",
                     hunks: [
                       ["-  VERSION = \"#{@release_version}\"",
                        "+  VERSION = \"#{@next_snapshot_version}\""],
                     ],
                   },
                   {
                     path: "ruby/red-gandiva/lib/gandiva/version.rb",
                     hunks: [
                       ["-  VERSION = \"#{@release_version}\"",
                        "+  VERSION = \"#{@next_snapshot_version}\""],
                     ],
                   },
                   {
                     path: "ruby/red-parquet/lib/parquet/version.rb",
                     hunks: [
                       ["-  VERSION = \"#{@release_version}\"",
                        "+  VERSION = \"#{@next_snapshot_version}\""],
                     ],
                   },
                   {
                     path: "ruby/red-plasma/lib/plasma/version.rb",
                     hunks: [
                       ["-  VERSION = \"#{@release_version}\"",
                        "+  VERSION = \"#{@next_snapshot_version}\""],
                     ],
                   },
                   {
                     path: "rust/arrow-flight/Cargo.toml",
                     hunks: [
                       ["-version = \"#{@release_version}\"",
                        "+version = \"#{@next_snapshot_version}\""],
                     ],
                   },
                   {
                     path: "rust/arrow/Cargo.toml",
                     hunks: [
                       ["-version = \"#{@release_version}\"",
                        "+version = \"#{@next_snapshot_version}\""],
                     ],
                   },
                   {
                     path: "rust/datafusion/Cargo.toml",
                     hunks: [
                       ["-version = \"#{@release_version}\"",
                        "+version = \"#{@next_snapshot_version}\""],
                       ["-arrow = { path = \"../arrow\", version = \"#{@release_version}\" }",
                        "-parquet = { path = \"../parquet\", version = \"#{@release_version}\" }",
                        "+arrow = { path = \"../arrow\", version = \"#{@next_snapshot_version}\" }",
                        "+parquet = { path = \"../parquet\", version = \"#{@next_snapshot_version}\" }"],
                       ["-arrow-flight = { path = \"../arrow-flight\", version = \"#{@release_version}\" }",
                        "+arrow-flight = { path = \"../arrow-flight\", version = \"#{@next_snapshot_version}\" }"]
                     ],
                   },
                   {
                     path: "rust/datafusion/README.md",
                     hunks: [
                       ["-datafusion = \"#{@release_version}\"",
                        "+datafusion = \"#{@next_snapshot_version}\""],
                     ],
                   },
                   {
                     path: "rust/parquet/Cargo.toml",
                     hunks: [
                       ["-version = \"#{@release_version}\"",
                        "+version = \"#{@next_snapshot_version}\""],
                       ["-arrow = { path = \"../arrow\", version = \"#{@release_version}\" }",
                        "+arrow = { path = \"../arrow\", version = \"#{@next_snapshot_version}\" }"]
                     ],
                   },
                   {
                     path: "rust/parquet/README.md",
                     hunks: [
                       ["-parquet = \"#{@release_version}\"",
                        "+parquet = \"#{@next_snapshot_version}\""],
                       ["-See [crate documentation](https://docs.rs/crate/parquet/#{@release_version}) on available API.",
                        "+See [crate documentation](https://docs.rs/crate/parquet/#{@next_snapshot_version}) on available API."],
                     ],
                   },
                 ],
                 parse_patch(git("log", "-n", "1", "-p")))
  end

  def test_deb_package_names
    prepare("DEB_PACKAGE_NAMES")
    changes = parse_patch(git("log", "-n", "1", "-p"))
    sampled_changes = changes.collect do |change|
      first_hunk = change[:hunks][0]
      first_removed_line = first_hunk.find {|line| line.start_with?("-")}
      first_added_line = first_hunk.find {|line| line.start_with?("+")}
      {
        sampled_diff: [first_removed_line, first_added_line],
        path: change[:path],
      }
    end
    expected_changes = [
      {
        sampled_diff: [
          "-dev/tasks/linux-packages/apache-arrow/debian.ubuntu-xenial/libarrow-glib#{@so_version}.install",
          "+dev/tasks/linux-packages/apache-arrow/debian.ubuntu-xenial/libarrow-glib#{@next_so_version}.install",
        ],
        path: "dev/release/rat_exclude_files.txt"
      },
      {
        sampled_diff: [
          "-Package: libarrow#{@so_version}",
          "+Package: libarrow#{@next_so_version}",
        ],
        path: "dev/tasks/linux-packages/apache-arrow/debian.ubuntu-xenial/control"
      },
      {
        sampled_diff: [
          "-Package: libarrow#{@so_version}",
          "+Package: libarrow#{@next_so_version}",
        ],
        path: "dev/tasks/linux-packages/apache-arrow/debian/control"
      },
      {
        sampled_diff: [
          "-      - libarrow-glib#{@so_version}-dbgsym_{no_rc_version}-1_[a-z0-9]+.deb",
          "+      - libarrow-glib#{@next_so_version}-dbgsym_{no_rc_version}-1_[a-z0-9]+.deb",
        ],
        path: "dev/tasks/tasks.yml",
      },
    ]
    assert_equal(expected_changes, sampled_changes)
  end
end
