#!/bin/sh

if [ -z "$AUTOPKGTEST_TMP" ]; then
  export PATH="$(dirname $0):$PATH"
  export RUBYLIB=.
else
  export PATH="/usr/lib/ruby-standalone/bin:$PATH"
fi

RUBY_VERSION=$(ruby -e 'puts RUBY_VERSION')

test_basics() {
  output=$(ruby -e 'puts ARGV.join(",")' 1 2 3)
  assertEquals "1,2,3" "$output"
}

test_cant_load_stuff_from_vendor_ruby() {
  if [ ! -f /usr/lib/ruby/vendor_ruby/ffi.rb ]; then echo SKIP; return; fi
  rc=0
  ruby -rffi -e 'true' 2>/dev/null || rc=$?
  assertNotEquals 0 "$rc"
}

test_rubygems_dont_see_debian_package() {
  if [ ! -f /usr/lib/ruby/vendor_ruby/ffi.rb ]; then echo SKIP; return; fi
  rc=0
  (gem list ffi | grep 'ffi\s') || rc=$?
  assertNotEquals 0 "$rc"
}

test_rubygems_sees_default_gems() {
  rc=0
  (gem list io-console | grep -q io-console) || rc=$?
  assertEquals 0 "$rc"
}

test_rubygems_installs_to_var_lib_as_root() {
  if [ "$(whoami)" != 'root' ]; then echo SKIP; return; fi
  default_dir=$(ruby -e 'puts Gem.default_dir')
  assertEquals "/var/lib/gems/$RUBY_VERSION" "$default_dir"
}

test_rubygems_installs_programs_to_usr_local_as_root() {
  if [ "$(whoami)" != 'root' ]; then echo SKIP; return; fi
  default_bindir=$(ruby -e 'puts Gem.default_bindir')
  assertEquals '/usr/local/bin' "$default_bindir"
}

test_rubygems_installs_to_home_as_non_root() {
  if [ "$(whoami)" = 'root' ]; then echo SKIP; return; fi
  expected_default_dir=$(ruby -e 'puts Gem.user_dir')
  default_dir=$(ruby -e 'puts Gem.default_dir')
  assertEquals "$expected_default_dir" "$default_dir"
}

test_rubygems_installs_programs_to_user_dir_as_non_root() {
  if [ "$(whoami)" = 'root' ]; then echo SKIP; return; fi
  expected_default_bindir=$(ruby -e 'puts Gem.user_dir')/bin
  default_bindir=$(ruby -e 'puts Gem.default_bindir')
  assertEquals "$expected_default_bindir" "$default_bindir"
}

test_rubygems_installed_as_root_are_available_to_user() {
  default_path=$(ruby -e 'puts Gem.default_path.join(":")')
  assertEquals "$(ruby -e 'puts Gem.user_dir'):/var/lib/gems/$RUBY_VERSION:/usr/lib/ruby/gems/$RUBY_VERSION" "$default_path"
}

test_shebang() {
  assertEquals "lib/ruby-standalone/bin/ruby" "$(ruby -e 'puts Gem.ruby.gsub(%r{^/usr(/local)?/}, "")')"
}

. shunit2
