Skip to content

Commit 295da57

Browse files
authored
Merge pull request #30 from gzm0/automated-test
Automate CLI test on UNIX
2 parents 39d4e33 + a83bdc4 commit 295da57

File tree

7 files changed

+96
-39
lines changed

7 files changed

+96
-39
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
target/
22
/pack/
3+
/cli-test/

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ env:
1010
- SCALAJS_VERSION=1.0.0
1111
script:
1212
- ./scripts/assemble-cli.sh $SCALAJS_VERSION $TRAVIS_SCALA_VERSION
13+
- ./scripts/test-cli.sh $SCALAJS_VERSION $TRAVIS_SCALA_VERSION
1314
cache:
1415
directories:
1516
- $HOME/.ivy2/cache

TESTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
TODO: We should automate this process
44

5-
For each major Scala version on a *NIX distro and a Windows distro:
5+
For each major Scala version on a Windows distro:
66

77
1. Download packaged Scala from scala-lang.org
88
2. Build a CLI distribution (see [the release process](./RELEASING.md))

scripts/assemble-cli.sh

Lines changed: 4 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,8 @@
11
#! /bin/sh
22

3-
set -e
4-
53
# Assembles the CLI tools for a given Scala binary version.
64

7-
if [ $# -lt 2 ]; then
8-
echo "Usage: $(basename $0) <scala.js full version> <base scala full version>" >&2
9-
exit 1
10-
fi
11-
12-
SCALAJS_VER=$1
13-
14-
BASEVER=$2
15-
case $BASEVER in
16-
2.11.*)
17-
BINVER="2.11"
18-
;;
19-
2.12.*)
20-
BINVER="2.12"
21-
;;
22-
2.13.*)
23-
BINVER="2.13"
24-
;;
25-
*)
26-
echo "Invalid Scala version $BINVER" >&2
27-
exit 2
28-
esac
5+
. "$(dirname $0)/vars.sh"
296

307
# Build and lay out the contents of the archives
318
sbt \
@@ -35,21 +12,11 @@ sbt \
3512
"cliPack" \
3613
|| exit $?
3714

38-
# Base Scala.js project directory.
39-
BASE="$(dirname $0)/.."
40-
41-
# Aritfact name (no extension).
42-
NAME=scalajs_$BINVER-$SCALAJS_VER
43-
44-
# Target directories
45-
TRG_BASE="$BASE/pack"
46-
TRG_VER="$TRG_BASE/$NAME"
47-
4815
# Tar and zip the whole thing up
4916
(
5017
cd $TRG_BASE
51-
tar cfz $NAME.tgz $NAME
18+
tar cfz $SJS_ARTIFACT_NAME.tgz $SJS_ARTIFACT_NAME
5219

53-
if [ -f $NAME.zip ]; then rm $NAME.zip; fi
54-
zip -r $NAME.zip -r $NAME
20+
if [ -f $SJS_ARTIFACT_NAME.zip ]; then rm $SJS_ARTIFACT_NAME.zip; fi
21+
zip -r $SJS_ARTIFACT_NAME.zip -r $SJS_ARTIFACT_NAME
5522
)

scripts/test-cli.sh

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#! /bin/sh
2+
3+
# Tests the CLI tools.
4+
5+
. "$(dirname $0)/vars.sh"
6+
7+
TEST_DIR="$(realpath $(dirname $0)/../cli-test)"
8+
9+
rm -rf $TEST_DIR
10+
mkdir $TEST_DIR
11+
cd $TEST_DIR
12+
13+
# Fetch Scala
14+
SCALA_ARTIFACT_NAME=scala-$BASEVER
15+
wget "https://downloads.lightbend.com/scala/$BASEVER/$SCALA_ARTIFACT_NAME.tgz"
16+
tar xf $SCALA_ARTIFACT_NAME.tgz
17+
18+
# Fetch Scala.js
19+
cp $TRG_BASE/$SJS_ARTIFACT_NAME.tgz .
20+
tar xf $SJS_ARTIFACT_NAME.tgz
21+
22+
# Setup PATH
23+
PATH=$PATH:$TEST_DIR/$SCALA_ARTIFACT_NAME/bin:$TEST_DIR/$SJS_ARTIFACT_NAME/bin
24+
25+
fail() {
26+
echo "$1" >&2
27+
exit 2
28+
}
29+
30+
# Actual test.
31+
mkdir bin
32+
cat > foo.scala <<'EOF'
33+
object Foo {
34+
def main(args: Array[String]): Unit = {
35+
println(s"asdf ${1 + 1}")
36+
new A
37+
}
38+
39+
class A
40+
}
41+
EOF
42+
43+
scalajsc -d bin foo.scala
44+
45+
scalajsp bin/Foo$.sjsir > out
46+
test -s out || fail "scalajsp bin/Foo$.sjsir: empty output"
47+
48+
scalajsp bin/Foo\$A.sjsir > out
49+
test -s out || fail "scalajsp bin/Foo\$A.sjsir: empty output"
50+
51+
scalajsld -o test.js -mm Foo.main bin
52+
test -s test.js || fail "scalajsld: empty output"
53+
54+
node test.js > got.run
55+
cat > want.run <<EOF
56+
asdf 2
57+
EOF
58+
59+
diff got.run want.run

scripts/vars.sh

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
set -e
2+
3+
if [ $# -lt 2 ]; then
4+
echo "Usage: $(basename $0) <scala.js full version> <base scala full version>" >&2
5+
exit 1
6+
fi
7+
8+
SCALAJS_VER=$1
9+
10+
BASEVER=$2
11+
case $BASEVER in
12+
2.11.*)
13+
BINVER="2.11"
14+
;;
15+
2.12.*)
16+
BINVER="2.12"
17+
;;
18+
2.13.*)
19+
BINVER="2.13"
20+
;;
21+
*)
22+
echo "Invalid Scala version $BINVER" >&2
23+
exit 2
24+
esac
25+
26+
# Base Scala.js project directory.
27+
TRG_BASE="$(realpath $(dirname $0)/../pack)"
28+
29+
SJS_ARTIFACT_NAME=scalajs_$BINVER-$SCALAJS_VER

src/main/resources/scalajsc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
SCALA_BIN_VER="@SCALA_BIN_VER@"
44
SCALAJS_VER="@SCALAJS_VER@"
5-
SCALA_VER=$(scalac -version 2>&1 | grep -o '[0-9]\.[0-9]\+\.[0-9]\+')
5+
SCALA_VER=$(scalac -version 2>&1 | grep -i scala | grep -o '[0-9]\.[0-9]\+\.[0-9]\+')
66

77
if [ "$(echo $SCALA_VER | cut -d '.' -f 1-2)" != "$SCALA_BIN_VER" ]; then
88
echo "This bundle of Scala.js CLI is for $SCALA_BIN_VER. Your scala version is $SCALA_VER!" >&2

0 commit comments

Comments
 (0)