Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
165 changes: 165 additions & 0 deletions test/app_funcs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
#!/usr/bin/env bash

set -e -o pipefail

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source $SCRIPT_DIR/.test_support.sh

# include source files
source $SCRIPT_DIR/../lib/misc_funcs.sh
source $SCRIPT_DIR/../lib/path_funcs.sh
source $SCRIPT_DIR/../lib/app_funcs.sh

# set runtime_path to a known value
runtime_path="/app"
env_path="${TEST_DIR}/env_path"
MIX_ENV="prod"


# TESTS
######################
suite "export_var"

test "outputs export statement"

result=$(export_var "FOO" "bar")

[ "$result" == "export FOO=bar" ]


test "handles path-like values"

result=$(export_var "PATH" "/usr/bin:\$PATH")

[ "$result" == 'export PATH=/usr/bin:$PATH' ]


suite "export_default_var"

test "outputs export when env var file missing"

rm -rf $env_path
result=$(export_default_var "LC_CTYPE" "en_US.utf8")

[ "$result" == "export LC_CTYPE=en_US.utf8" ]


test "outputs nothing when env var file exists"

mkdir -p $env_path
echo -n "C" > $env_path/LC_CTYPE

result=$(export_default_var "LC_CTYPE" "en_US.utf8")

[ -z "$result" ]
rm -rf $env_path


suite "echo_profile_env_vars"

test "includes PATH with runtime paths"

result=$(echo_profile_env_vars)

echo "$result" | grep -q "export PATH=/app/.platform_tools/elixir/bin:/app/.platform_tools/erlang/bin:/app/.platform_tools:"


test "includes MIX_ENV"

rm -rf $env_path
result=$(echo_profile_env_vars)

echo "$result" | grep -q "export MIX_ENV=prod"


test "includes HEX_HOME"

rm -rf $env_path
result=$(echo_profile_env_vars)

echo "$result" | grep -q "export HEX_HOME=/app/.hex"


test "includes MIX_HOME"

rm -rf $env_path
result=$(echo_profile_env_vars)

echo "$result" | grep -q "export MIX_HOME=/app/.mix"


suite "echo_export_env_vars"

test "includes PATH with build paths"

result=$(echo_export_env_vars)

echo "$result" | grep -q "export PATH=${build_path}/.platform_tools/elixir/bin:${build_path}/.platform_tools/erlang/bin:${build_path}/.platform_tools:"


test "includes build MIX_HOME"

rm -rf $env_path
result=$(echo_export_env_vars)

echo "$result" | grep -q "export MIX_HOME=${build_path}/.mix"


test "includes build HEX_HOME"

rm -rf $env_path
result=$(echo_export_env_vars)

echo "$result" | grep -q "export HEX_HOME=${build_path}/.hex"


suite "write_profile_d_script"

test "creates .profile.d directory"

write_profile_d_script > /dev/null

[ -d "$build_path/.profile.d" ]


test "creates profile script file"

write_profile_d_script > /dev/null

[ -f "$build_path/.profile.d/elixir_buildpack_paths.sh" ]


test "profile script contains PATH export"

# Clean up from previous test runs
rm -rf $build_path/.profile.d

write_profile_d_script > /dev/null

grep -q "export PATH=" $build_path/.profile.d/elixir_buildpack_paths.sh


suite "write_export"

test "creates export file"

rm -f "${build_pack_path}/export"

write_export > /dev/null

[ -f "${build_pack_path}/export" ]


test "export file contains PATH"

rm -f "${build_pack_path}/export"

write_export > /dev/null

grep -q "export PATH=" "${build_pack_path}/export"

# Clean up
rm -f "${build_pack_path}/export"


PASSED_ALL_TESTS=true
32 changes: 32 additions & 0 deletions test/detect.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/usr/bin/env bash

set -e -o pipefail

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source $SCRIPT_DIR/.test_support.sh


# TESTS
######################
suite "bin/detect"

test "detects mix.exs exists"

touch $build_path/mix.exs
output=$($SCRIPT_DIR/../bin/detect $build_path)

[ "$output" == "Elixir" ]
rm $build_path/mix.exs


test "exits 1 when no mix.exs"

set +e
$SCRIPT_DIR/../bin/detect $build_path > /dev/null 2>&1
result=$?
set -e

[ "$result" == "1" ]


PASSED_ALL_TESTS=true
64 changes: 64 additions & 0 deletions test/elixir_funcs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#!/usr/bin/env bash

set -e -o pipefail

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source $SCRIPT_DIR/.test_support.sh

# include source file
source $SCRIPT_DIR/../lib/elixir_funcs.sh


# TESTS
######################
suite "otp_version"

test "extracts major version from full version"

result=$(otp_version "26.2.1")

[ "$result" == "26" ]


test "extracts major version from major.minor"

result=$(otp_version "25.0")

[ "$result" == "25" ]


test "extracts major version from major only"

result=$(otp_version "27")

[ "$result" == "27" ]


test "handles OTP 24"

result=$(otp_version "24.3.4")

[ "$result" == "24" ]


suite "elixir_download_file"

test "generates correct download filename"

erlang_version="26.2.1"
elixir_version="v1.16.2"
result=$(elixir_download_file)

[ "$result" == "elixir-v1.16.2-otp-26.zip" ]


test "generates filename for different versions"

erlang_version="25.0"
elixir_version="v1.14.5"
result=$(elixir_download_file)

[ "$result" == "elixir-v1.14.5-otp-25.zip" ]


PASSED_ALL_TESTS=true
68 changes: 68 additions & 0 deletions test/erlang_funcs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#!/usr/bin/env bash

set -e -o pipefail

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
source $SCRIPT_DIR/.test_support.sh

# include source files
source $SCRIPT_DIR/../lib/path_funcs.sh
source $SCRIPT_DIR/../lib/erlang_funcs.sh
source $SCRIPT_DIR/../lib/canonical_version.sh


# TESTS
######################
suite "erlang_tarball"

test "generates correct tarball filename"

erlang_version="26.2.1"
result=$(erlang_tarball)

[ "$result" == "OTP-26.2.1.tar.gz" ]


test "generates tarball for major.minor version"

erlang_version="25.0"
result=$(erlang_tarball)

[ "$result" == "OTP-25.0.tar.gz" ]


suite "erlang_builds_url"

test "returns heroku-20 URL"

STACK="heroku-20"
result=$(erlang_builds_url)

[ "$result" == "https://builds.hex.pm/builds/otp/ubuntu-20.04" ]


test "returns heroku-22 URL"

STACK="heroku-22"
result=$(erlang_builds_url)

[ "$result" == "https://builds.hex.pm/builds/otp/ubuntu-22.04" ]


test "returns heroku-24 URL"

STACK="heroku-24"
result=$(erlang_builds_url)

[ "$result" == "https://builds.hex.pm/builds/otp/ubuntu-24.04" ]


test "returns cedar-14 URL for unknown stack"

STACK="unknown-stack"
result=$(erlang_builds_url)

[ "$result" == "https://s3.amazonaws.com/heroku-buildpack-elixir/erlang/cedar-14" ]


PASSED_ALL_TESTS=true
Loading
Loading