diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index dff6dced..d08fc619 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -31,6 +31,7 @@ jobs:
- Squeak32-4.5
- Pharo64-stable
- Pharo64-alpha
+ - Pharo64-12
- Pharo64-11
- Pharo64-10
- Pharo64-9.0
@@ -41,11 +42,17 @@ jobs:
- Pharo32-stable
- Pharo32-alpha
- Pharo32-3.0
+ - Moose64-11
- Moose64-10
- Moose64-9.0
- Moose64-8.0
+ - GemStone64-3.5.3
+ - GemStone64-3.5.8
+ - GemStone64-3.6.0
+ - GemStone64-3.6.5
+ - GToolkit64-release
timeout-minutes: [ 15 ]
- exclude: # exclude 32bit builds on macOS
+ exclude: # exclude 32bit builds on macOS and GemStone builds on windows
- os: macos-latest
smalltalk: Squeak32-trunk
- os: macos-latest
@@ -62,10 +69,14 @@ jobs:
smalltalk: Pharo64-10
- os: windows-2019
smalltalk: Pharo64-6.0
- include:
- - os: ubuntu-18.04
- smalltalk: GemStone64-3.5.0
- timeout-minutes: 30
+ - os: windows-2019
+ smalltalk: GemStone64-3.5.3
+ - os: windows-2019
+ smalltalk: GemStone64-3.5.8
+ - os: windows-2019
+ smalltalk: GemStone64-3.6.0
+ - os: windows-2019
+ smalltalk: GemStone64-3.6.5
runs-on: ${{ matrix.os }}
name: ${{ matrix.smalltalk }} on ${{ matrix.os }}
steps:
@@ -79,14 +90,14 @@ jobs:
tests/all_tests.sh
bin/smalltalkci -s ${{ matrix.smalltalk }} --self-test
shell: bash
- if: contains(matrix.smalltalk, 'trunk') == false && contains(matrix.smalltalk, 'alpha') == false && contains(matrix.smalltalk, 'Squeak32-6.0') == false
+ if: contains(matrix.smalltalk, 'trunk') == false && contains(matrix.smalltalk, 'alpha') == false && contains(matrix.smalltalk, 'Squeak32-6.0') == false && contains(matrix.smalltalk, 'GToolkit64') == false
timeout-minutes: ${{ matrix.timeout-minutes }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Run smalltalkCI self test and ignore failures
run: bin/smalltalkci -s ${{ matrix.smalltalk }} --self-test || true
shell: bash
- if: contains(matrix.smalltalk, 'trunk') || contains(matrix.smalltalk, 'alpha') || contains(matrix.smalltalk, 'Squeak32-6.0')
+ if: contains(matrix.smalltalk, 'trunk') || contains(matrix.smalltalk, 'alpha') || contains(matrix.smalltalk, 'Squeak32-6.0') || contains(matrix.smalltalk, 'GToolkit64')
timeout-minutes: ${{ matrix.timeout-minutes }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/README.md b/README.md
index c348a06e..16f1bf39 100644
--- a/README.md
+++ b/README.md
@@ -72,30 +72,31 @@ they can take up a lot of space on your drive.*
## List of Supported Images
-| [Squeak][squeak] | [Pharo][pharo] | [GemStone][gemstone] | [Moose][moose] |
-| ---------------- | ---------------- | -------------------- | --------------- |
-| `Squeak64-trunk` | `Pharo64-alpha` | `GemStone64-3.5.x` | `Moose64-trunk` |
-| `Squeak64-6.0` | `Pharo64-stable` | `GemStone64-3.4.x` | `Moose64-10` |
-| `Squeak64-5.3` | `Pharo64-11` | `GemStone64-3.3.x` | `Moose64-9.0` |
-| `Squeak64-5.2` | `Pharo64-10` | `GemStone64-3.2.x` | `Moose64-8.0` |
-| `Squeak64-5.1` | `Pharo64-9.0` | `GemStone64-3.1.0.x` | `Moose64-7.0` |
-| `Squeak32-trunk` | `Pharo64-8.0` | `Gemstone64-2.4.x` | `Moose32-trunk` |
-| `Squeak32-6.0` | `Pharo64-7.0` | | `Moose32-6.1` |
-| `Squeak32-5.3` | `Pharo64-6.1` | | `Moose32-6.0` |
-| `Squeak32-5.2` | `Pharo32-6.0` | | |
-| `Squeak32-5.1` | `Pharo32-alpha` | | |
-| `Squeak32-5.0` | `Pharo32-stable` | | |
-| `Squeak32-4.6` | `Pharo32-11` | | |
-| `Squeak32-4.5` | `Pharo32-10` | | |
-| | `Pharo32-9.0` | | |
-| | `Pharo32-8.0` | | |
-| | `Pharo32-7.0` | | |
-| | `Pharo32-6.1` | | |
-| | `Pharo32-6.0` | | |
-| | `Pharo32-5.0` | | |
-| | `Pharo32-4.0` | | |
-| | `Pharo32-3.0` | | |
-| | | | |
+| [Squeak][squeak] | [Pharo][pharo] | [GemStone][gemstone] | [Moose][moose] | [GToolkit][gtoolkit] |
+| ---------------- | ---------------- | -------------------- | --------------- | -------------------- |
+| `Squeak64-trunk` | `Pharo64-alpha` | `GemStone64-3.6.x` | `Moose64-trunk` | `GToolkit64-release` |
+| `Squeak64-6.0` | `Pharo64-stable` | `GemStone64-3.5.8` | `Moose64-11` | |
+| `Squeak64-5.3` | `Pharo64-12` | `GemStone64-3.5.7` | `Moose64-10` | |
+| `Squeak64-5.2` | `Pharo64-11` | `GemStone64-3.5.6` | `Moose64-9.0` | |
+| `Squeak64-5.1` | `Pharo64-10` | `GemStone64-3.5.5` | `Moose64-8.0` | |
+| `Squeak32-trunk` | `Pharo64-9.0` | `Gemstone64-3.5.4` | `Moose64-7.0` | |
+| `Squeak32-6.0` | `Pharo64-8.0` | `GemStone64-3.5.3` | `Moose32-trunk` | |
+| `Squeak32-5.3` | `Pharo64-7.0` | | `Moose32-6.1` | |
+| `Squeak32-5.2` | `Pharo64-6.1` | | `Moose32-6.0` | |
+| `Squeak32-5.1` | `Pharo64-6.0` | | | |
+| `Squeak32-5.0` | `Pharo32-alpha` | | | |
+| `Squeak32-4.6` | `Pharo32-stable` | | | |
+| `Squeak32-4.5` | `Pharo32-12` | | | |
+| | `Pharo32-11` | | | |
+| | `Pharo32-10` | | | |
+| | `Pharo32-9.0` | | | |
+| | `Pharo32-8.0` | | | |
+| | `Pharo32-7.0` | | | |
+| | `Pharo32-6.1` | | | |
+| | `Pharo32-6.0` | | | |
+| | `Pharo32-5.0` | | | |
+| | `Pharo32-4.0` | | | |
+| | `Pharo32-3.0` | | | |
## Templates
@@ -178,9 +179,9 @@ smalltalk:
- Pharo32-stable
- Pharo32-6.1
# ...
- - GemStone64-3.3.2
- - GemStone64-3.2.12
- - GemStone64-3.1.0.6
+ - GemStone64-3.5.3
+ - GemStone64-3.6.0
+ - GemStone64-3.6.5
# ...
# Override `script` to customize smalltalkCI invocation, e.g.:
@@ -409,7 +410,7 @@ Otherwise, it will be loaded from the specified `#repository`.
SCIMetacelloLoadSpec {
#baseline : 'MyProject', // Define MC Baseline
#configuration : 'MyProject', // Alternatively, define MC Configuration
- #directory : 'packages', // Path to packages if FileTree is used
+ #directory : 'src', // Path to source-code directory were are packages (i.e. 'packages' or 'src'), in case of packages are not on root
#failOn : [ #OCUndeclaredVariableWarning ], // Fail build on provided list of Warnings
#ignoreImage : true, // If true, Metacello will force a load of a package, overriding a previously existing one
#load : [ 'default' ], // Define MC load attributes
@@ -648,15 +649,28 @@ problem.
[animations](https://github.com/hpi-swa/animations),
[Ohm-S](https://github.com/hpi-swa/Ohm-S),
[signals](https://github.com/hpi-swa/signals),
+ [Sandblocks](https://github.com/hpi-swa/sandblocks),
[Squot](https://github.com/hpi-swa/Squot),
[vivide](https://github.com/hpi-swa/vivide),
[widgets](https://github.com/hpi-swa/widgets).
+- [@hpi-swa-lab](https://github.com/hpi-swa-lab):
+ [Babylonian Programming/Smalltalk](https://github.com/hpi-swa-lab/babylonian-programming-smalltalk),
+ [Squeak by Example](https://github.com/hpi-swa-lab/SqueakByExample-english),
+ [Squeak Inbox Talk](https://github.com/hpi-swa-lab/squeak-inbox-talk).
- [@HPI-SWA-Teaching](https://github.com/HPI-SWA-Teaching):
[Algernon-Launcher](https://github.com/HPI-SWA-Teaching/Algernon-Launcher),
[AutoTDD](https://github.com/hpi-swa-teaching/AutoTDD),
+ [Koans](https://github.com/hpi-swa-teaching/Koans),
+ [Morphic Testing Framework](https://github.com/hpi-swa-teaching/Morphic-Testing-Framework),
+ [Poppy Print](https://github.com/hpi-swa-teaching/poppy-print),
[SpreadSheetTool](https://github.com/hpi-swa-teaching/SpreadSheetTool),
[TelegramClient](https://github.com/hpi-swa-teaching/TelegramClient),
[SwaLint](https://github.com/hpi-swa-teaching/SwaLint).
+- [@LinqLover](https://github.com/LinqLover):
+ [create-image](https://github.com/LinqLover/create-image),
+ [SimulationStudio](https://github.com/LinqLover/SimulationStudio),
+ [TelegramBot](https://github.com/LinqLover/TelegramBot),
+ [XmasDecorations](https://github.com/LinqLover/XmasDecorations).
- [@marianopeck](https://github.com/marianopeck):
[OSSubprocess](https://github.com/marianopeck/OSSubprocess),
[FFICHeaderExtractor](https://github.com/marianopeck/FFICHeaderExtractor).
@@ -739,6 +753,7 @@ list. Please add [`[ci skip]`][ci_skip] to your commit message.*
[gitlab_ci_cd]: https://about.gitlab.com/features/gitlab-ci-cd/
[gofer]: http://www.lukas-renggli.ch/blog/gofer
[gs]: https://github.com/hpi-swa/smalltalkCI/issues/28
+[gtoolkit]: https://gtoolkit.com
[issues]: https://github.com/hpi-swa/smalltalkCI/issues
[mc_baseline]: https://github.com/dalehenrich/metacello-work/blob/master/docs/GettingStartedWithGitHub.md#create-baseline
[mc_configuration]: https://github.com/dalehenrich/metacello-work/blob/master/docs/GettingStartedWithGitHub.md#create-configuration
diff --git a/gemstone/doc.txt b/gemstone/doc.txt
new file mode 100644
index 00000000..aca990c1
--- /dev/null
+++ b/gemstone/doc.txt
@@ -0,0 +1,16 @@
+cp $GEMSTONE/bin/extent0.seaside.dbf extent0.dbf; chmod +w extent0.dbf
+
+cp extent0_step_2.dbf extent0.dbf.
+cp extent0_step_3.dbf extent0.dbf.
+cp extent0_step_4.dbf extent0.dbf.
+
+cp extent0_step_1.dbf extent0.dbf.
+rm -rf tranlog*.*
+
+startstone -e system.conf -z system.conf -l logs/smalltalkci.log smalltalkci
+loadTode.stone -D
+
+startnetldi -g -a dhenrich smalltalkci_ldi -P 36083 -l logs/netldi.log
+
+stopstone smalltalkci DataCurator swordfish
+
diff --git a/gemstone/run.sh b/gemstone/run.sh
index 30b21317..117b6a34 100755
--- a/gemstone/run.sh
+++ b/gemstone/run.sh
@@ -3,51 +3,105 @@
# of a smalltalkCI build and it is not meant to be executed by itself.
################################################################################
-local CLIENT_NAME="travisClient"
-local DEFAULT_DEVKIT_BRANCH="master"
-local DEFAULT_GS_HOME="${SMALLTALK_CI_BUILD}/GsDevKit_home"
-local DEVKIT_BRANCH="${DEFAULT_DEVKIT_BRANCH}"
-local DEVKIT_CLIENT_NAMES=()
-local DEVKIT_CLIENTS=()
-local DEVKIT_DOWNLOAD="https://github.com/GsDevKit/GsDevKit_home.git"
-local PHARO_CHANGES_FILE="Pharo-3.0.changes"
-local PHARO_IMAGE_FILE="Pharo-3.0.image"
-local STONE_NAME="travis"
-local USE_DEFAULT_HOME="true"
+# set -x
+local STONE_NAME="smalltalkci"
+local SUPERDOIT_BRANCH=v3.1
+local SUPERDOIT_DOWNLOAD=git@github.com:dalehenrich/superDoit.git
+local SUPERDOIT_DOWNLOAD=https://github.com/dalehenrich/superDoit.git
+local GSDEVKIT_STONES_BRANCH=v1.1
+local GSDEVKIT_STONES_DOWNLOAD=git@github.com:GsDevKit/GsDevKit_stones.git
+local GSDEVKIT_STONES_DOWNLOAD=https://github.com/GsDevKit/GsDevKit_stones.git
+local STONES_REGISTRY_NAME=smalltalkCI_run
+local STONE_STARTED=""
+local STONE_DIRECTORY=""
+local STONES_STONES_HOME=$SMALLTALK_CI_BUILD/stones
+local STONES_PROJECTS_HOME=$SMALLTALK_CI_BUILD/repos
+local STONES_PRODUCTS=$SMALLTALK_CI_BUILD/products
+local STONES_PROJECT_SET_NAME=devkit
+local GEMSTONE_DEBUG=""
+
+vers=`echo "${config_smalltalk}" | sed 's/GemStone64-//'`
+
+local PLATFORM="`uname -sm | tr ' ' '-'`"
+case "$PLATFORM" in
+ Darwin-arm64)
+ local GEMSTONE_PRODUCT_NAME="GemStone64Bit${vers}-arm64.Darwin"
+ ;;
+ Darwin-x86_64)
+ local GEMSTONE_PRODUCT_NAME="GemStone64Bit${vers}-i386.Darwin"
+ ;;
+ Linux-x86_64)
+ local GEMSTONE_PRODUCT_NAME="GemStone64Bit${vers}-x86_64.Linux"
+ ;;
+ *)
+ echo "This script should only be run on Mac (Darwin-i386 or Darwin-arm64), or Linux (Linux-x86_64) ). The result from \"uname -sm\" is \"`uname -sm`\""
+ exit 1
+ ;;
+esac
+
+echo "GEMSTONE_PRODUCT_NAME=$GEMSTONE_PRODUCT_NAME"
################################################################################
-# Clone the GsDevKit_home project.
+# Clone the superDoit project, install GemStone
################################################################################
-gemstone::prepare_gsdevkit_home() {
- if [[ "${USE_DEFAULT_HOME}" = "true" ]]; then
- fold_start clone_gsdevkit "Cloning GsDevKit..."
- pushd "${SMALLTALK_CI_BUILD}"
- git clone -b "${DEVKIT_BRANCH}" --depth 1 "${DEVKIT_DOWNLOAD}"
- cd "${GS_HOME}"
- # pre-clone /sys/local, so that travis can skip backups
- ${GS_HOME}/bin/private/clone_sys_local
- # arrange to skip backups
- cp ${GS_HOME}/tests/sys/local/client/tode-scripts/* ${GS_HOME}/sys/local/client/tode-scripts
-
- cp ${GS_HOME}/tests/sys/local/gsdevkit_bin/* ${GS_HOME}/sys/local/gsdevkit_bin
-
- if is_travis_build; then
- # Operating system setup already performed on Travis CI
- touch ${GS_HOME}/bin/.gsdevkitSysSetup
- fi
-
- # Make sure the GsDevKit_home is using $SMALLTALK_CI_HOME in $GS_HOME/shared/repos
- ln -s ${SMALLTALK_CI_HOME} ${GS_HOME}/shared/repos/smalltalkCI
-
- popd
- fold_end clone_gsdevkit
-
- export GS_TRAVIS=true # install special key files for running GemStone on Travis hosts
+gemstone::prepare_superDoit() {
+ pushd $STONES_PROJECTS_HOME
+ if [ -d "$STONES_PROJECTS_HOME/superDoit" ] ; then
+ echo "Reusing existing superDoit project directory: $STONES_PROJECTS_HOME/superDoit"
+ else
+ fold_start clone_superDoit "Cloning superDoit..."
+ git clone -b "${SUPERDOIT_BRANCH}" --depth 1 "${SUPERDOIT_DOWNLOAD}"
+ export PATH="`pwd`/superDoit/bin:`pwd`/superDoit/examples/utility:$PATH"
+ fold_start install_superDoit_gemstone "Downloading GemStone for superDoit..."
+ install.sh $GS_ALTERNATE_PRODUCTS
+ fold_end install_superDoit_gemstone
+ fold_end clone_superDoit
+ fi
+ export PATH="`pwd`/superDoit/bin:`pwd`/superDoit/examples/utility:$PATH"
+ fold_start versionreport_superDoit "superDoit versionReport.solo..."
+ versionReport.solo
+ fold_end versionreport_superDoit
+ popd
+}
+################################################################################
+# Prepare environment for running GemStone
+################################################################################
+gemstone::prepare_gemstone() {
+echo "[Info] Creating /opt/gemstone directory"
+ if [ ! -e /opt/gemstone ]
+ then
+ sudo mkdir -p /opt/gemstone /opt/gemstone/log /opt/gemstone/locks
+ sudo chown $USER:${GROUPS[0]} /opt/gemstone /opt/gemstone/log /opt/gemstone/locks
+ sudo chmod 770 /opt/gemstone /opt/gemstone/log /opt/gemstone/locks
else
- print_info "Using existing GsDevKit_home clone: \${GS_HOME}=${GS_HOME}"
+ echo "[Warning] /opt/gemstone directory already exists"
+ echo "to replace it, remove or rename it and rerun this script"
fi
}
+################################################################################
+# Clone the GsDevKit_stones project
+################################################################################
+gemstone::prepare_gsdevkit_stones() {
+ fold_start clone_gsdevkit_stones "Cloning GsDevKit_stones..."
+ pushd "$STONES_PROJECTS_HOME"
+ if [ ! -d "$STONES_PROJECTS_HOME/GsDevKit_stones" ] ; then
+ git clone -b "${GSDEVKIT_STONES_BRANCH}" --depth 1 "${GSDEVKIT_STONES_DOWNLOAD}"
+ fi
+ export PATH="`pwd`/GsDevKit_stones/bin:$PATH"
+ popd
+ export STONES_DATA_HOME="$SMALLTALK_CI_BUILD/.stones_data_home"
+ if [ ! -d "$STONES_DATA_HOME" ] ; then
+ createRegistry.solo $STONES_REGISTRY_NAME $GEMSTONE_DEBUG
+ createProjectSet.solo --registry=$STONES_REGISTRY_NAME --projectSet=$STONES_PROJECT_SET_NAME \
+ --from=$STONES_PROJECTS_HOME/GsDevKit_stones/bin/gsdevkitProjectSpecs.ston \
+ --key=server --https $GEMSTONE_DEBUG
+ cloneProjectsFromProjectSet.solo --registry=$STONES_REGISTRY_NAME --projectSet=$STONES_PROJECT_SET_NAME \
+ --projectDirectory=$STONES_PROJECTS_HOME $GEMSTONE_DEBUG
+ fi
+ registryReport.solo
+ fold_end clone_gsdevkit_stones
+}
################################################################################
# Create a GemStone stone.
@@ -57,143 +111,38 @@ gemstone::prepare_stone() {
gemstone_version="$(echo $1 | cut -f2 -d-)"
- local gemstone_cached_extent_file="${SMALLTALK_CI_CACHE}/gemstone/extents/${gemstone_version}_extent0.tode.dbf"
-
- if [[ "${USE_DEFAULT_HOME}" = "true" ]]; then
- fold_start install_server "Installing server..."
- ${GS_HOME}/bin/installServer
- fold_end install_server
- fi
-
- if ! is_dir "${SMALLTALK_CI_CACHE}/gemstone"; then
- print_info "Creating GemStone extent cache..."
- mkdir "${SMALLTALK_CI_CACHE}/gemstone"
- if ! is_dir "${SMALLTALK_CI_CACHE}/gemstone/extents"; then
- mkdir "${SMALLTALK_CI_CACHE}/gemstone/extents"
- fi
- if ! is_dir "${SMALLTALK_CI_CACHE}/gemstone/pharo"; then
- mkdir "${SMALLTALK_CI_CACHE}/gemstone/pharo"
- fi
- fi
-
- if [[ "${TRAVIS_CACHE_ENABLED:-}" = "false" ]] ||
- [[ "${GS_HOME}" != "${DEFAULT_GS_HOME}" ]]; then
- print_info "Travis dependency cache not being used"
- else
- fold_start prepare_cache "Preparing Travis caches..."
- if ! is_dir "${SMALLTALK_CI_VMS}/Pharo-3.0"; then
- mkdir -p "${SMALLTALK_CI_VMS}/Pharo-3.0"
- print_info "Downloading Pharo-3.0 vm to cache"
- pushd "${SMALLTALK_CI_VMS}/Pharo-3.0" > /dev/null
- download_file "get.pharo.org/vm30" "$(pwd)/zeroconfig"
- bash "$(pwd)/zeroconfig"
- popd > /dev/null
- fi
-
- if ! is_file "${SMALLTALK_CI_CACHE}/${PHARO_IMAGE_FILE}"; then
- print_info "Downloading Pharo-3.0 image to cache..."
- pushd ${SMALLTALK_CI_CACHE} > /dev/null
- download_file "get.pharo.org/30" "$(pwd)/pharo30_zeroconfig"
- bash "$(pwd)/pharo30_zeroconfig"
- mv "Pharo.image" "${PHARO_IMAGE_FILE}"
- mv "Pharo.changes" "${PHARO_CHANGES_FILE}"
- popd > /dev/null
- fi
-
- if is_file "${SMALLTALK_CI_CACHE}/${PHARO_IMAGE_FILE}"; then
- if is_file "${SMALLTALK_CI_CACHE}/gemstone/pharo/gsDevKitCommandLine.image"; then
- print_info "Utilizing cached gsDevKitCommandLine image..."
- cp "${SMALLTALK_CI_CACHE}/${PHARO_IMAGE_FILE}" ${GS_HOME}/shared/pharo/Pharo.image
- cp "${SMALLTALK_CI_CACHE}/${PHARO_CHANGES_FILE}" ${GS_HOME}/shared/pharo/Pharo.changes
- ln -s "${SMALLTALK_CI_VMS}/Pharo-3.0/pharo" ${GS_HOME}/shared/pharo/pharo
- ln -s "${SMALLTALK_CI_VMS}/Pharo-3.0/pharo-ui" ${GS_HOME}/shared/pharo/pharo-ui
- ln -s "${SMALLTALK_CI_VMS}/Pharo-3.0/pharo-vm" ${GS_HOME}/shared/pharo/pharo-vm
- cp "${SMALLTALK_CI_CACHE}/gemstone/pharo/gsDevKitCommandLine.image" ${GS_HOME}/shared/pharo/
- cp "${SMALLTALK_CI_CACHE}/gemstone/pharo/gsDevKitCommandLine.changes" ${GS_HOME}/shared/pharo/
- fi
- fi
- fold_end prepare_cache
- fi
-
fold_start create_stone "Creating stone..."
- if is_file "${GS_HOME}/bin/.smalltalkCI_create_arg_supported"; then
- config_stone_create_arg="-z ${config_ston}"
- fi
-
- if [[ "${TRAVIS_CACHE_ENABLED:-}" = "false" ]]; then
- ${GS_HOME}/bin/createStone ${config_stone_create_arg:-} "${STONE_NAME}" "${gemstone_version}"
- else
- if ! is_file "${gemstone_cached_extent_file}"; then
- ${GS_HOME}/bin/createStone ${config_stone_create_arg:-} "${STONE_NAME}" "${gemstone_version}"
- cp "${GS_HOME}/server/stones/${STONE_NAME}/snapshots/extent0.tode.dbf" ${gemstone_cached_extent_file}
- else
- ${GS_HOME}/bin/createStone -t "${gemstone_cached_extent_file}" ${config_stone_create_arg:-} "${STONE_NAME}" "${gemstone_version}"
- fi
-
- if ! is_file "${SMALLTALK_CI_CACHE}/gemstone/pharo/gsDevKitCommandLine.image"; then
- cp ${GS_HOME}/shared/pharo/gsDevKitCommandLine.* "${SMALLTALK_CI_CACHE}/gemstone/pharo/"
- fi
- fi
+ registerProductDirectory.solo --registry=$STONES_REGISTRY_NAME --productDirectory=$STONES_PRODUCTS $GEMSTONE_DEBUG
+ if [ "$GS_ALTERNATE_PRODUCTS"x != "x" ] ; then
+ # matches superDoit gemstone version, so reuse the download
+ registerProduct.solo --registry=$STONES_REGISTRY_NAME --fromDirectory=$GS_ALTERNATE_PRODUCTS ${gemstone_version} $GEMSTONE_DEBUG
+ else
+ downloadGemStone.solo --directory=$STONES_PRODUCTS --registry=$STONES_REGISTRY_NAME ${gemstone_version} $GEMSTONE_DEBUG
+ fi
+ if [ "$STONE_DIRECTORY"x = "x" ] ; then
+ createStone.solo --force --registry=$STONES_REGISTRY_NAME --template=minimal_seaside \
+ --start --root=$STONES_STONES_HOME/$STONE_NAME "${gemstone_version}" $GEMSTONE_DEBUG
+ STONE_DIRECTORY=$STONES_STONES_HOME/$STONE_NAME
+ STONE_STARTED="TRUE"
+ else
+ STONE_STARTED="FALSE"
+ if [ ! -d "$STONE_DIRECTORY" ] ; then
+ print_error_and_exit "The directory named by --gs-STONE_DIR option ($STONE_DIRECTORY) is expected to exist"
+ fi
+ fi
+ pushd $STONE_DIRECTORY
+ if [ "${GEMSTONE+set}" ] ; then
+ echo "GEMSTONE = $GEMSTONE (PREDEFINED)"
+ else
+ export GEMSTONE="`pwd`/product"
+ echo "GEMSTONE = $GEMSTONE (DEFAULT VALUE)"
+ fi
+ export PATH=$GEMSTONE/bin:$PATH
+ loadTode.stone --projectDirectory=$STONES_PROJECTS_HOME $GEMSTONE_DEBUG
+ popd
fold_end create_stone
}
-################################################################################
-# Optionally create GemStone clients.
-################################################################################
-gemstone::prepare_optional_clients() {
- local client_version
- local client_extension
- local client_name
-
- if is_empty "${DEVKIT_CLIENTS:-}"; then
- return
- fi
-
- for version in "${DEVKIT_CLIENTS[@]}"
- do
- case "${version}" in
- "Pharo32-6.0"|"Pharo-6.0")
- client_version="Pharo6.0"
- client_extension="Pharo6.0"
- ;;
- "Pharo32-6.1"|"Pharo-6.1")
- client_version="Pharo6.1"
- client_extension="Pharo6.1"
- ;;
- "Pharo32-5.0"|"Pharo-5.0")
- client_version="Pharo5.0"
- client_extension="Pharo5.0"
- ;;
- "Pharo32-4.0"|"Pharo-4.0")
- client_version="Pharo4.0"
- client_extension="Pharo4.0"
- ;;
- "Pharo32-3.0"|"Pharo-3.0")
- client_version="Pharo3.0"
- client_extension="Pharo3.0"
- ;;
- *)
- print_error_and_exit "Unsupported client version '${version}'."
- ;;
- esac
-
- client_name="${CLIENT_NAME}_${client_extension}"
- DEVKIT_CLIENT_NAMES+=( "${client_name}" )
-
- gemstone::prepare_client "${client_version}" "${client_name}"
- done
-}
-
-gemstone::prepare_client() {
- local client_version=$1
- local client_name=$2
-
- fold_start "create_${client_name}" "Creating client ${client_name}..."
- ${GS_HOME}/bin/createClient -t pharo "${client_name}" -v ${client_version} -s "${STONE_NAME}" -z "${config_ston}"
- fold_end "create_${client_name}"
- check_and_consume_build_status_file
-}
-
################################################################################
# Load project into GemStone stone.
# Locals:
@@ -206,25 +155,15 @@ gemstone::load_project() {
local status=0
fold_start load_server_project "Loading server project..."
- run_script ${GS_HOME}/bin/startTopaz "${STONE_NAME}" -l -T ${GSCI_TOC:-100000} << EOF || status=$?
- iferr 1 stk
- iferr 2 stack
- iferr 3 exit 1
- login
- run
- GsDeployer bulkMigrate: [
- Metacello new
- baseline: 'SmalltalkCI';
- repository: 'filetree://${SMALLTALK_CI_HOME}/repository';
- load: 'Core'.
- System commitTransaction.
- (Smalltalk at: #SmalltalkCI) load: '${config_ston}'.
- ].
-%
- logout
- exit 0
-EOF
- fold_end load_server_project
+ pushd $STONE_DIRECTORY
+ if [ "$GEMSTONE"x = "x" ] ; then
+ export GEMSTONE="`pwd`/product"
+ fi
+ export PATH=$GEMSTONE/bin:$PATH
+ loadSmalltalkCIProject.stone --projectRoot=$SMALLTALK_CI_HOME --config_ston=${config_ston} $GEMSTONE_DEBUG
+ status=$?
+ popd
+ fold_end load_server_project
if is_nonzero "${status}"; then
print_error_and_exit "Failed to load project."
@@ -243,51 +182,81 @@ EOF
################################################################################
gemstone::test_project() {
local status=0
- local failing_clients=()
-
- run_script ${GS_HOME}/bin/startTopaz "${STONE_NAME}" -l -T ${GSCI_TOC:-100000} << EOF || status=$?
- iferr 1 stk
- iferr 2 stack
- iferr 3 exit 1
- login
- run
- (Smalltalk at: #SmalltalkCI) test: '${config_ston}' named: '${config_smalltalk} Server (${STONE_NAME})'.
-%
- logout
- exit 0
-EOF
+ fold_start run_tests "Running project tests..."
+ pushd $STONE_DIRECTORY
+ if [ "$GEMSTONE"x = "x" ] ; then
+ export GEMSTONE="`pwd`/product"
+ fi
+ export PATH=$GEMSTONE/bin:$PATH
+ testSmalltalkCIProject.stone --buildDirectory=$SMALLTALK_CI_BUILD --config_ston=${config_ston} --named='${config_smalltalk} Server (${STONE_NAME})' $GEMSTONE_DEBUG
+ status=$?
+ popd
+
+ if [ "$STONE_STARTED" = "TRUE" ] ; then
+ fold_start stop_stone "Stopping stone..."
+ stopstone "${STONE_NAME}" DataCurator swordfish
+ fold_end stop_stone
+ fi
+
+ fold_end run_tests
if is_nonzero "${status}"; then
print_error_and_exit "Error while testing server project."
fi
check_and_consume_build_status_file
- if is_not_empty "${DEVKIT_CLIENT_NAMES:-}"; then
- for client_name in "${DEVKIT_CLIENT_NAMES[@]}"
- do
- run_script ${GS_HOME}/bin/startClient ${client_name} -t "${client_name}" -s ${STONE_NAME} -z "${config_ston}" || status=$?
-
- if is_nonzero "${status}"; then
- print_error_and_exit "Error while testing client project ${client_name}."
- fi
- # Check and consume intermediate build status and keep going
- if current_build_status_signals_error; then
- failing_clients+=("${client_name}")
- fi
- consume_build_status_file
- done
- fi
-
- # Create build status file for `finalize` step
- if is_nonzero "${#failing_clients[@]}"; then
- echo "Error in the following client(s): ${failing_clients[*]}." > "${build_status_file}"
- else
- echo "[success]" > "${BUILD_STATUS_FILE}"
- fi
+ echo "[success]" > "${BUILD_STATUS_FILE}"
+}
- fold_start stop_stone "Stopping stone..."
- ${GS_HOME}/bin/stopStone -b "${STONE_NAME}"
- fold_end stop_stone
+################################################################################
+# Handle GemStone-specific shared memory needs for Darwin on GitHub.
+################################################################################
+gemstone::darwin_shared_mem_setup() {
+
+ if is_github_build && is_sudo_enabled; then
+ # Update shared memory, for github/Darwin builds, since default Darwin shared memory is too small t run GemStone
+ case "$PLATFORM" in
+ Darwin-arm64 | Darwin-x86_64)
+ echo "============"
+ totalMem="`sudo sysctl hw.memsize | cut -f2 -d' '`"
+ totalMemMB=$(($totalMem / 1048576))
+ shmmax="`sudo sysctl kern.sysv.shmmax | cut -f2 -d' '`"
+ shmall="`sysctl kern.sysv.shmall | cut -f2 -d' '`"
+
+ shmmaxMB=$(($shmmax / 1048576))
+ shmallMB=$(($shmall / 256))
+
+ # Print current values
+ echo " Total memory available is $totalMemMB MB"
+ echo " Max shared memory segment size is $shmmaxMB MB"
+ echo " Max shared memory allowed is $shmallMB MB"
+
+ # Figure out the max shared memory segment size (shmmax) we want
+ # Use 75% of available memory but not more than 2GB
+ shmmaxNew=$(($totalMem * 3/4))
+ [[ $shmmaxNew -gt 2147483648 ]] && shmmaxNew=2147483648
+ shmmaxNewMB=$(($shmmaxNew / 1048576))
+ # Figure out the max shared memory allowed (shmall) we want
+ # The MacOSX default is 4MB, way too small
+ shmallNew=$(($shmmaxNew / 4096))
+ [[ $shmallNew -lt $shmall ]] && shmallNew=$shmall
+ shmallNewMB=$(($shmallNew / 256))
+ echo "shmmaxNew=$shmmaxNew"
+ if [[ $shmmaxNew -gt $shmmax ]]; then
+ echo "[Info] Increasing max shared memory segment size to $shmmaxNewMB MB"
+ sudo sysctl -w kern.sysv.shmmax=$shmmaxNew
+ fi
+ echo "shmallNew=$shmallNew"
+ if [ $shmallNew -gt $shmall ]; then
+ echo "[Info] Increasing max shared memory allowed to $shmallNewMB MB"
+ sudo sysctl -w kern.sysv.shmall=$shmallNew
+ fi
+ echo "============"
+ ;;
+ *)
+ ;;
+ esac
+ fi
}
################################################################################
@@ -296,30 +265,38 @@ EOF
run_build() {
gemstone::parse_options "$@"
- # To bypass cached behavior for local build, export TRAVIS_CACHE_ENABLED
- # before calling run.sh
- if is_empty "${TRAVIS_CACHE_ENABLED:-}"; then
- TRAVIS_CACHE_ENABLED="true"
- if is_empty "${CASHER_DIR:-}"; then
- if is_travis_build; then
- TRAVIS_CACHE_ENABLED="false"
- fi
- fi
- fi
- export TRAVIS_CACHE_ENABLED
+ case "$(uname -s)" in
+ "Linux"|"Darwin")
+ ;;
+ *)
+ print_error_and_exit "GemStone is not supported on '$(uname -s)'"
+ ;;
+ esac
- gemstone::prepare_gsdevkit_home
+ if [ ! -d "$STONES_PRODUCTS" ] ; then
+ mkdir $STONES_PRODUCTS
+ fi
+ if [ ! -d "$STONES_PROJECTS_HOME" ] ; then
+ mkdir $STONES_PROJECTS_HOME
+ fi
+ if [ "$STONE_DIRECTORY"x = "x" ] ; then
+ if [ ! -d "$STONES_STONES_HOME" ] ; then
+ mkdir $STONES_STONES_HOME
+ fi
+ fi
+
+ gemstone::darwin_shared_mem_setup
+ gemstone::prepare_gemstone
+ gemstone::prepare_superDoit
+ gemstone::prepare_gsdevkit_stones
gemstone::prepare_stone "${config_smalltalk}"
- gemstone::prepare_optional_clients
gemstone::load_project
gemstone::test_project
}
-
################################################################################
# Handle GemStone-specific options.
################################################################################
gemstone::parse_options() {
- local devkit_client_args
case "$(uname -s)" in
"Linux"|"Darwin")
@@ -329,27 +306,26 @@ gemstone::parse_options() {
;;
esac
- GS_HOME="${DEFAULT_GS_HOME}"
-
- if is_not_empty "${GSCI_DEVKIT_BRANCH:-}"; then
- DEVKIT_BRANCH="${GSCI_DEVKIT_BRANCH}"
- fi
+ GS_ALTERNATE_PRODUCTS=""
while :
do
case "${1:-}" in
- --gs-HOME=*)
- GS_HOME="${1#*=}"
- shift
- USE_DEFAULT_HOME="false"
+ --gs-DEBUG)
+ GEMSTONE_DEBUG=" --debug"
+ shift
;;
- --gs-BRANCH=*)
- DEVKIT_BRANCH="${1#*=}"
- shift
+ --gs-PRODUCTS=*)
+ GS_ALTERNATE_PRODUCTS="${1#*=}"
+ shift
;;
- --gs-CLIENTS=*)
- devkit_client_args="${1#*=}"
- shift
+ --gs-REPOS=*)
+ STONES_PROJECTS_HOME="${1#*=}"
+ shift
+ ;;
+ --gs-STONE_DIR=*)
+ STONE_DIRECTORY="${1#*=}"
+ shift
;;
--gs-*)
print_error_and_exit "Unknown GemStone-specific option: $1"
@@ -363,13 +339,6 @@ gemstone::parse_options() {
esac
done
- if is_empty "${devkit_client_args:-}" && is_not_empty "${GSCI_CLIENTS:-}"; then
- devkit_client_args=${GSCI_CLIENTS}
- fi
-
- if is_not_empty "${devkit_client_args:-}"; then
- IFS=' '; read -ra DEVKIT_CLIENTS <<< "${devkit_client_args}"
- fi
-
- export GS_HOME
+ export GS_ALTERNATE_PRODUCTS
}
+
diff --git a/gtoolkit/run.sh b/gtoolkit/run.sh
new file mode 100644
index 00000000..76eaebdb
--- /dev/null
+++ b/gtoolkit/run.sh
@@ -0,0 +1,224 @@
+################################################################################
+# This file provides GToolkit support for smalltalkCI. It is used in the context
+# of a smalltalkCI build and it is not meant to be executed by itself.
+################################################################################
+
+readonly GTOOLKIT_API_LATEST="https://api.github.com/repos/feenkcom/gtoolkit/releases/latest"
+readonly GTOOLKIT_BASE_DL="https://github.com/feenkcom/gtoolkit/releases/download"
+
+gtoolkit::architecture() {
+ local gt_architecture
+
+ case "$(hardware_platform)" in
+ "arm64")
+ gt_architecture="aarch64"
+ ;;
+ "x86_64")
+ gt_architecture="x86_64"
+ ;;
+ esac
+
+ echo "$gt_architecture"
+}
+
+gtoolkit::archive_url() {
+ local filename
+ local gt_architecture
+ local gt_platform
+ local gt_release
+ local response
+
+ gt_architecture=$(gtoolkit::architecture)
+
+ response=$(curl -sL "${GTOOLKIT_API_LATEST}" || echo "Error: $?")
+ gt_release=$(echo "${response}" | grep -o '"tag_name": "[^"]*' | grep -o '[^"]*$')
+ if is_empty "${gt_release}"; then
+ print_error_and_exit "Unable to determine latest version of GToolkit:\n${response}"
+ fi
+
+ if is_linux_build; then
+ gt_platform="Linux"
+ elif is_windows_build; then
+ if [[ "${gt_architecture}" == "aarch64" ]]; then
+ print_error_and_exit "unsupported build platform '$(uname -s)'."
+ fi
+ gt_platform="Windows"
+ elif is_mac_build; then
+ gt_platform="MacOS"
+ else
+ print_error_and_exit "unsupported build platform '$(uname -s)'."
+ fi
+
+ filename="GlamorousToolkit-${gt_platform}-${gt_architecture}-${gt_release}.zip"
+ echo "${GTOOLKIT_BASE_DL}/${gt_release}/${filename}"
+}
+
+gtoolkit::vm_path() {
+ local result
+
+ if is_linux_build; then
+ result="bin/GlamorousToolkit-cli"
+ elif is_windows_build; then
+ result="bin/GlamorousToolkit-cli.exe"
+ elif is_mac_build; then
+ result="GlamorousToolkit.app/Contents/MacOS/GlamorousToolkit-cli"
+ else
+ print_error_and_exit "unsupported build platform '$(uname -s)'."
+ fi
+
+ echo "${result}"
+}
+
+################################################################################
+# Download and move vm if necessary.
+# Globals:
+# SMALLTALK_CI_VM
+################################################################################
+
+gtoolkit::prepare_vm() {
+ local vm_path
+ vm_path="$(gtoolkit::vm_path)"
+
+ # Skip in case vm is already set up
+ if is_file "${SMALLTALK_CI_VM}"; then
+ return 0
+ fi
+
+ export SMALLTALK_CI_VM="${SMALLTALK_CI_BUILD}/${vm_path}"
+
+ chmod +x "${SMALLTALK_CI_VM}"
+
+ if ! is_file "${SMALLTALK_CI_VM}"; then
+ print_error_and_exit "Unable to set vm up at '${SMALLTALK_CI_VM}'."
+ fi
+}
+
+################################################################################
+# Download GT (image and VM) if necessary and copy it to build folder.
+# Globals:
+# SMALLTALK_CI_BUILD
+# SMALLTALK_CI_CACHE
+# Arguments:
+# smalltalk_name
+################################################################################
+
+gtoolkit::prepare_gt() {
+ local smalltalk_name=$1 #Ignore currently because we are only supporting `release`
+ local gtoolkit_image_url
+ local download_name
+ local target
+ gtoolkit_image_url="$(gtoolkit::archive_url)"
+ download_name="$(basename "${gtoolkit_image_url}")"
+ target="${SMALLTALK_CI_CACHE}/${download_name}"
+
+ if ! is_file "${target}"; then
+ fold_start download_image "Downloading ${smalltalk_name} image..."
+ download_file "${gtoolkit_image_url}" "${target}"
+ fold_end download_image
+ fi
+
+ print_info "Extracting GT..."
+ extract_file "${target}" "${SMALLTALK_CI_BUILD}"
+ echo "${download_name}" > "${SMALLTALK_CI_BUILD}"/version
+
+ print_info "Preparing GToolkit image..."
+ if ! is_file "${SMALLTALK_CI_IMAGE}"; then
+ mv "${SMALLTALK_CI_BUILD}"/*.image "${SMALLTALK_CI_IMAGE}"
+ mv "${SMALLTALK_CI_BUILD}"/*.changes "${SMALLTALK_CI_CHANGES}"
+ fi
+
+ if ! vm_is_user_provided; then
+ gtoolkit::prepare_vm
+ fi
+
+ if ! is_file "${SMALLTALK_CI_IMAGE}"; then
+ print_error_and_exit "Failed to prepare image at '${SMALLTALK_CI_IMAGE}'."
+ fi
+}
+
+
+################################################################################
+# Run a Smalltalk script.
+# NB. copy/pasted from Pharo
+################################################################################
+gtoolkit::run_script() {
+ local script=$1
+ local vm_flags=""
+ local resolved_vm="${config_vm:-${SMALLTALK_CI_VM}}"
+ local resolved_image
+ resolved_image="$(resolve_path "${config_image:-${SMALLTALK_CI_IMAGE}}")"
+
+ if ! is_travis_build && ! is_headless; then
+ vm_flags="--no-quit"
+ fi
+
+ run_script "${resolved_vm}" "${resolved_image}" eval ${vm_flags} "${script}"
+}
+
+################################################################################
+# Load project into GToolkit image.
+# NB. copy/pasted from Pharo
+################################################################################
+gtoolkit::load_project() {
+ gtoolkit::run_script "
+ | smalltalkCI |
+ $(conditional_debug_halt)
+ [ | metacello |
+ metacello := Metacello new
+ baseline: 'SmalltalkCI';
+ repository: 'filetree://$(resolve_path "${SMALLTALK_CI_HOME}/repository")';
+ onUpgrade: [ :ex | ex useIncoming ].
+ (Metacello canUnderstand: #onConflictUseIncoming)
+ ifTrue: [ metacello onConflictUseIncoming ]
+ ifFalse: [ metacello onConflict: [ :ex | ex useIncoming ] ].
+ metacello load ]
+ on: Warning
+ do: [ :w | w resume ].
+ smalltalkCI := Smalltalk at: #SmalltalkCI.
+ smalltalkCI load: '$(resolve_path "${config_ston}")'.
+ (smalltalkCI isHeadless or: [ smalltalkCI promptToProceed ])
+ ifTrue: [ smalltalkCI saveAndQuitImage ]
+ "
+}
+
+################################################################################
+# Run tests for project.
+# NB. copy/pasted from Pharo
+################################################################################
+gtoolkit::test_project() {
+ gtoolkit::run_script "
+ | smalltalkCI |
+ $(conditional_debug_halt)
+ smalltalkCI := Smalltalk
+ at: #SmalltalkCI
+ ifAbsent: [
+ [ | metacello |
+ metacello := Metacello new
+ baseline: 'SmalltalkCI';
+ repository: 'filetree://$(resolve_path "${SMALLTALK_CI_HOME}/repository")';
+ onUpgrade: [ :ex | ex useIncoming ].
+ (Metacello canUnderstand: #onConflictUseIncoming)
+ ifTrue: [ metacello onConflictUseIncoming ]
+ ifFalse: [ metacello onConflict: [ :ex | ex useIncoming ] ].
+ metacello load ]
+ on: Warning
+ do: [ :w | w resume ].
+ Smalltalk at: #SmalltalkCI ].
+ smalltalkCI test: '$(resolve_path "${config_ston}")'
+ "
+}
+
+################################################################################
+# Main entry point for GToolkit builds.
+################################################################################
+run_build() {
+ if ! image_is_user_provided; then
+ gtoolkit::prepare_gt "${config_smalltalk}"
+ fi
+
+ if ston_includes_loading; then
+ gtoolkit::load_project
+ check_and_consume_build_status_file
+ fi
+ gtoolkit::test_project
+}
diff --git a/helpers.sh b/helpers.sh
index ca4edd23..fcf90aa4 100644
--- a/helpers.sh
+++ b/helpers.sh
@@ -47,7 +47,7 @@ print_error() {
if is_colorful; then
printf "${ANSI_BOLD}${ANSI_RED}%s${ANSI_RESET}\n" "$1" 1>&2
else
- echo "$1"
+ echo "$1" 1>&2
fi
}
@@ -78,28 +78,24 @@ print_help() {
--vm Custom VM for build (Squeak/Pharo).
GEMSTONE OPTIONS:
- --gs-BRANCH=
- Name of GsDevKit_home branch, SHA, or tag. Default is 'master'.
-
- Environment variable GSCI_DEVKIT_BRANCH may be used to
- specify . Command line option overrides
- value of environment variable.
-
- --gs-HOME=
- Path to an existing GsDevKit_home clone to be used
- instead of creating a fresh clone.
+ --gs-DEBUG Enable remote debugging of GsDevKit_stones .solo scripts
+ via topaz DEBUGGEM command.
- --gs-DEVKIT_BRANCH option is ignored.
+ --gs-PRODUCTS=
+ Specify directory containing GemStone product downloads
+ to be used instead of downloading products from
+ https://ftp.gemtalksystems.com for each run.
- --gs-CLIENTS="..."
- List of Smalltalk client versions to use as a GemStone client.
+ --gs-REPOS=
+ Specify directory containing existing server projects to be
+ used instead of cloning projects from GitHub for each run.
- Environment variable GSCI_CLIENTS may also be used to
- specify a list of client versions.
- Command line option overrides value of environment variable.
-
- If a client is specified, tests are run for both the client
- and server based using the project .smalltalk.ston file.
+ --gs-STONE_DIR=
+ Specify directory of an existing stone. A symbolic link named
+ product is expected to exist in the
+ and point to the GEMSTONE product tree for the stone. The name
+ stone is expected to be managed independently of the run.sh
+ script.
EXAMPLE:
$(basename -- $0) -s "Squeak64-trunk" --headfull /path/to/project/.smalltalk.ston
@@ -193,6 +189,18 @@ is_msys2_build() {
[[ $(uname -s) = "MSYS_NT-"* ]]
}
+is_mac_build() {
+ [[ $(uname -s) = "Darwin" ]]
+}
+
+is_windows_build() {
+ is_cygwin_build ] || is_mingw64_build || is_msys2_build
+}
+
+hardware_platform() {
+ echo "$(uname -m)"
+}
+
is_sudo_enabled() {
$(sudo -n true > /dev/null 2>&1)
}
@@ -519,11 +527,13 @@ upload_coveralls_results() {
if is_file "${coverage_results}"; then
print_info "Uploading coverage results to Coveralls..."
- http_status=$(curl -s -F json_file="@${coverage_results}" "${COVERALLS_API}" -o "${coveralls_response}" -w "%{http_code}")
+ http_status=$(curl -s -F json_file="@${coverage_results}" "${COVERALLS_API}" -o "${coveralls_response}" -w "%{http_code}" || echo $?)
if [[ "${http_status}" != "200" ]]; then
print_error "Failed to upload coverage results (HTTP status code #${http_status}):"
fi
- cat "${coveralls_response}"
+ if is_file "${coveralls_response}"; then
+ cat "${coveralls_response}"
+ fi
fi
}
@@ -552,7 +562,7 @@ report_build_metrics() {
project_slug="${TRAVIS_REPO_SLUG:-${APPVEYOR_REPO_NAME:-${GITHUB_REPOSITORY:-}}}"
api_url="${GITHUB_API}/repos/${project_slug}"
- status_code=$(curl -w %{http_code} -s -o /dev/null "${api_url}")
+ status_code=$(curl -w %{http_code} -s -o /dev/null "${api_url}" || echo $?)
if [[ "${status_code}" != "200" ]]; then
return 0 # Not a public repository
fi
diff --git a/pharo/run.sh b/pharo/run.sh
index d3c9816a..8be54224 100644
--- a/pharo/run.sh
+++ b/pharo/run.sh
@@ -15,12 +15,15 @@ pharo::get_image_url() {
local smalltalk_name=$1
case "${smalltalk_name}" in
- "Pharo64-alpha")
+ "Pharo64-alpha"|"Pharo-alpha")
echo "get.pharo.org/64/alpha"
;;
- "Pharo64-stable")
+ "Pharo64-stable"|"Pharo-stable")
echo "get.pharo.org/64/stable"
;;
+ "Pharo64-12")
+ echo "get.pharo.org/64/120"
+ ;;
"Pharo64-11")
echo "get.pharo.org/64/110"
;;
@@ -42,12 +45,15 @@ pharo::get_image_url() {
"Pharo64-6.0")
echo "get.pharo.org/64/60"
;;
- "Pharo32-alpha"|"Pharo-alpha")
+ "Pharo32-alpha")
echo "get.pharo.org/alpha"
;;
- "Pharo32-stable"|"Pharo-stable")
+ "Pharo32-stable")
echo "get.pharo.org/stable"
;;
+ "Pharo32-12")
+ echo "get.pharo.org/32/120"
+ ;;
"Pharo32-11")
echo "get.pharo.org/32/110"
;;
@@ -97,7 +103,7 @@ moose::get_image_url() {
case "${smalltalk_name}" in
"Moose64-trunk"|"Moose-trunk")
- echo "https://github.com/moosetechnology/Moose/releases/download/continuous/Moose10-development-Pharo64-10.zip"
+ echo "https://github.com/moosetechnology/Moose/releases/download/continuous/Moose11-development-Pharo64-11.zip"
;;
"Moose32-trunk")
moose_name="moose-7.0"
@@ -118,7 +124,10 @@ moose::get_image_url() {
echo "https://github.com/moosetechnology/Moose/releases/download/v9.x.x/Moose9-stable-Pharo64-9.0.zip"
;;
"Moose64-10"*)
- echo "https://github.com/moosetechnology/Moose/releases/download/continuous/Moose10-development-Pharo64-10.zip"
+ echo "https://github.com/moosetechnology/Moose/releases/download/v10.x.x/Moose10-stable-Pharo64-10.zip"
+ ;;
+ "Moose64-11"*)
+ echo "https://github.com/moosetechnology/Moose/releases/download/continuous/Moose11-development-Pharo64-11.zip"
;;
*)
print_error_and_exit "Unsupported Moose version '${smalltalk_name}'."
@@ -136,19 +145,24 @@ moose::get_image_url() {
################################################################################
pharo::get_vm_url() {
local smalltalk_name=$1
+ local stable_version=11
+ local alpha_version=12
case "${smalltalk_name}" in
# NOTE: vmLatestXX should be updated every time new Pharo is released
- "Pharo64-alpha")
- echo "get.pharo.org/64/vmLatest110"
+ "Pharo64-alpha"|"Pharo-alpha")
+ echo "get.pharo.org/64/vmLatest${alpha_version}0"
;;
- "Pharo64-stable")
- echo "get.pharo.org/64/vm100"
+ "Pharo64-stable"|"Pharo-stable")
+ echo "get.pharo.org/64/vm${stable_version}0"
;;
- "Pharo64-11")
+ "Pharo64-12")
+ echo "get.pharo.org/64/vm120"
+ ;;
+ "Pharo64-11"|"Moose64-11"|"Moose64-trunk")
echo "get.pharo.org/64/vm110"
;;
- "Pharo64-10"|"Moose64-10"|"Moose64-trunk")
+ "Pharo64-10"|"Moose64-10")
echo "get.pharo.org/64/vm100"
;;
"Pharo64-9.0"|"Moose64-9.0")
@@ -166,11 +180,14 @@ pharo::get_vm_url() {
"Pharo64-6.0")
echo "get.pharo.org/64/vm60"
;;
- "Pharo32-alpha"|"Pharo-alpha")
- echo "get.pharo.org/vmLatest110"
+ "Pharo32-alpha")
+ echo "get.pharo.org/vmLatest${alpha_version}0"
;;
- "Pharo-stable"|"Pharo32-stable")
- echo "get.pharo.org/vm100"
+ "Pharo32-stable")
+ echo "get.pharo.org/vm${stable_version}0"
+ ;;
+ "Pharo32-12")
+ echo "get.pharo.org/vm120"
;;
"Pharo32-11")
echo "get.pharo.org/vm110"
@@ -261,8 +278,8 @@ pharo::prepare_image() {
local target="${SMALLTALK_CI_CACHE}/${smalltalk_name}"
local pharo_zeroconf="${target}/zeroconfig"
- if ! is_file "${target}"; then
- is_dir "${target}" || mkdir "${target}"
+ if ! is_dir "${target}"; then
+ mkdir "${target}"
pushd "${target}" > /dev/null
fold_start download_image "Downloading ${smalltalk_name} image..."
download_file "${pharo_image_url}" "${pharo_zeroconf}"
diff --git a/repository/SmalltalkCI-Core.package/SCIMonticelloLoadSpec.class/instance/addLoadedClassesFrom..st b/repository/SmalltalkCI-Core.package/SCIMonticelloLoadSpec.class/instance/addLoadedClassesFrom..st
index 46f20892..97603fb0 100644
--- a/repository/SmalltalkCI-Core.package/SCIMonticelloLoadSpec.class/instance/addLoadedClassesFrom..st
+++ b/repository/SmalltalkCI-Core.package/SCIMonticelloLoadSpec.class/instance/addLoadedClassesFrom..st
@@ -3,5 +3,5 @@ addLoadedClassesFrom: aDefinitionsCollection
| mcOrganization classes |
mcOrganization := aDefinitionsCollection detect: [ :def | def isOrganizationDefinition ].
mcOrganization ifNil: [ self error: 'Could not find MCOrganizationDefinition' ].
- classes := SmalltalkCI classesWithCategoryNames: mcOrganization categories.
- self loadedClasses addAll: classes
\ No newline at end of file
+ classes := SmalltalkCI platformClass classesWithCategoryNames: mcOrganization categories.
+ self loadedClasses addAll: classes
diff --git a/repository/SmalltalkCI-Core.package/SmalltalkCISpec.class/instance/classesToTest.st b/repository/SmalltalkCI-Core.package/SmalltalkCISpec.class/instance/classesToTest.st
index 352f0555..f45fe4bc 100644
--- a/repository/SmalltalkCI-Core.package/SmalltalkCISpec.class/instance/classesToTest.st
+++ b/repository/SmalltalkCI-Core.package/SmalltalkCISpec.class/instance/classesToTest.st
@@ -4,7 +4,7 @@ classesToTest
SmalltalkCI explicitTestKeys
do: [ :key |
(self testing includesKey: key)
- ifTrue: [ ^ SmalltalkCI classesFrom: self testing ] ].
+ ifTrue: [ ^ SmalltalkCI platformClass classesFrom: self testing ] ].
classes := OrderedCollection new.
(self testing at: #'allTestCases' ifAbsent: [ false ]) = true
ifTrue: [ classes addAll: TestCase allSubclasses ]
diff --git a/repository/SmalltalkCI-Coverage-Core.package/SCICodeCoverage.class/instance/classesToCoverForCategories.st b/repository/SmalltalkCI-Coverage-Core.package/SCICodeCoverage.class/instance/classesToCoverForCategories.st
index b013965b..e16ab23d 100644
--- a/repository/SmalltalkCI-Coverage-Core.package/SCICodeCoverage.class/instance/classesToCoverForCategories.st
+++ b/repository/SmalltalkCI-Coverage-Core.package/SCICodeCoverage.class/instance/classesToCoverForCategories.st
@@ -1,4 +1,4 @@
helpers
classesToCoverForCategories
^ self coverageAt: #categories
- do: [ :categoryNames | SmalltalkCI classesForCategories: categoryNames ]
\ No newline at end of file
+ do: [ :categoryNames | SmalltalkCI platformClass classesForCategories: categoryNames ]
\ No newline at end of file
diff --git a/repository/SmalltalkCI-GemStone-Core.package/SCIGemStoneTestReporterFile.class/README.md b/repository/SmalltalkCI-GemStone-Core.package/SCIGemStoneTestReporterFile.class/README.md
new file mode 100644
index 00000000..e69de29b
diff --git a/repository/SmalltalkCI-GemStone-Core.package/SCIGemStoneTestReporterFile.class/instance/filePath..st b/repository/SmalltalkCI-GemStone-Core.package/SCIGemStoneTestReporterFile.class/instance/filePath..st
new file mode 100644
index 00000000..93b4f438
--- /dev/null
+++ b/repository/SmalltalkCI-GemStone-Core.package/SCIGemStoneTestReporterFile.class/instance/filePath..st
@@ -0,0 +1,3 @@
+accessing
+filePath: aPath
+ filePath := aPath
\ No newline at end of file
diff --git a/repository/SmalltalkCI-GemStone-Core.package/SCIGemStoneTestReporterFile.class/instance/filePath.st b/repository/SmalltalkCI-GemStone-Core.package/SCIGemStoneTestReporterFile.class/instance/filePath.st
new file mode 100644
index 00000000..72b3f1e8
--- /dev/null
+++ b/repository/SmalltalkCI-GemStone-Core.package/SCIGemStoneTestReporterFile.class/instance/filePath.st
@@ -0,0 +1,3 @@
+accessing
+filePath
+ ^ filePath
\ No newline at end of file
diff --git a/repository/SmalltalkCI-GemStone-Core.package/SCIGemStoneTestReporterFile.class/instance/newLine.st b/repository/SmalltalkCI-GemStone-Core.package/SCIGemStoneTestReporterFile.class/instance/newLine.st
new file mode 100644
index 00000000..5cc933aa
--- /dev/null
+++ b/repository/SmalltalkCI-GemStone-Core.package/SCIGemStoneTestReporterFile.class/instance/newLine.st
@@ -0,0 +1,3 @@
+helpers
+newLine
+ stream lf
\ No newline at end of file
diff --git a/repository/SmalltalkCI-GemStone-Core.package/SCIGemStoneTestReporterFile.class/methodProperties.json b/repository/SmalltalkCI-GemStone-Core.package/SCIGemStoneTestReporterFile.class/methodProperties.json
new file mode 100644
index 00000000..21d2d18c
--- /dev/null
+++ b/repository/SmalltalkCI-GemStone-Core.package/SCIGemStoneTestReporterFile.class/methodProperties.json
@@ -0,0 +1,7 @@
+{
+ "class" : {
+ },
+ "instance" : {
+ "filePath" : "dkh 03/24/2023 11:00",
+ "filePath:" : "dkh 03/24/2023 11:00",
+ "newLine" : "dkh 03/24/2023 10:54" } }
diff --git a/repository/SmalltalkCI-GemStone-Core.package/SCIGemStoneTestReporterFile.class/properties.json b/repository/SmalltalkCI-GemStone-Core.package/SCIGemStoneTestReporterFile.class/properties.json
new file mode 100644
index 00000000..63006827
--- /dev/null
+++ b/repository/SmalltalkCI-GemStone-Core.package/SCIGemStoneTestReporterFile.class/properties.json
@@ -0,0 +1,14 @@
+{
+ "category" : "SmalltalkCI-GemStone-Core",
+ "classinstvars" : [
+ ],
+ "classvars" : [
+ ],
+ "commentStamp" : "",
+ "instvars" : [
+ "filePath" ],
+ "name" : "SCIGemStoneTestReporterFile",
+ "pools" : [
+ ],
+ "super" : "SCITestReporterStdout",
+ "type" : "normal" }
diff --git a/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/class/stdout.st b/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/class/stdout.st
index f26c86bc..688a506a 100644
--- a/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/class/stdout.st
+++ b/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/class/stdout.st
@@ -1,3 +1,3 @@
compatibility
stdout
- ^ (Smalltalk at: #GsFile) stdoutServer
\ No newline at end of file
+ ^ (Smalltalk at: #'GsFile') stdout
\ No newline at end of file
diff --git a/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/instance/reportFilePath..st b/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/instance/reportFilePath..st
new file mode 100644
index 00000000..3889d561
--- /dev/null
+++ b/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/instance/reportFilePath..st
@@ -0,0 +1,3 @@
+accessing
+reportFilePath: filePath
+ reportFilePath := filePath
\ No newline at end of file
diff --git a/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/instance/reportFilePath.st b/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/instance/reportFilePath.st
new file mode 100644
index 00000000..ad43be3e
--- /dev/null
+++ b/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/instance/reportFilePath.st
@@ -0,0 +1,3 @@
+accessing
+reportFilePath
+ ^ reportFilePath
\ No newline at end of file
diff --git a/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/instance/reportResults..st b/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/instance/reportResults..st
index 1519509e..d1cc6d4a 100644
--- a/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/instance/reportResults..st
+++ b/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/instance/reportResults..st
@@ -1,5 +1,21 @@
executing
reportResults: aTestRunner
- SCIGemStoneTestReporterStdout report: aTestRunner spec: self spec.
- produceXMLLog ifTrue: [
- SCIGemStoneTestReporterXML report: aTestRunner spec: self spec xmlLogDirPath: xmlLogDirPath ]
\ No newline at end of file
+ self reportFilePath
+ ifNil: [ SCIGemStoneTestReporterStdout report: aTestRunner spec: self spec ]
+ ifNotNil: [ :filePath |
+ | stream |
+ stream := GsFile openWriteOnServer: filePath.
+ GsFile stdout nextPutAll: '===== opened file ' , filePath printString.
+ stream
+ nextPutAll: '--- opened file';
+ flush.
+ SCIGemStoneTestReporterFile report: aTestRunner spec: self spec on: stream.
+ stream
+ flush;
+ close ].
+ produceXMLLog
+ ifTrue: [
+ SCIGemStoneTestReporterXML
+ report: aTestRunner
+ spec: self spec
+ xmlLogDirPath: xmlLogDirPath ]
diff --git a/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/methodProperties.json b/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/methodProperties.json
index 01c88aa5..9d2905c5 100644
--- a/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/methodProperties.json
+++ b/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/methodProperties.json
@@ -28,7 +28,7 @@
"quitImage" : "fn 10/11/2016 18:44",
"readOnlyFileNamed:do:" : "fn 11/20/2017 14:19",
"saveImage" : "dkh 12/07/2016 16:20",
- "stdout" : "fn 9/27/2016 20:25",
+ "stdout" : "dkh 03/24/2023 13:15",
"stringFor:maxDecimalPlaces:" : "fn 9/28/2016 12:52",
"test:xmlLogDirPath:" : "fn 11/20/2017 13:47",
"testRunnerClass" : "fn 9/27/2016 15:15",
@@ -39,5 +39,7 @@
"performMetacelloLoad:" : "dkh 04/11/2016 09:56",
"produceXMLLog:" : "fn 10/4/2016 13:59",
"readSTONSpec:" : "fn 11/20/2017 13:49",
- "reportResults:" : "fn 11/21/2017 12:16",
+ "reportFilePath" : "dkh 03/24/2023 11:03",
+ "reportFilePath:" : "dkh 03/24/2023 11:03",
+ "reportResults:" : "dkh 03/24/2023 13:45",
"xmlLogDirPath:" : "fn 10/4/2016 13:26" } }
diff --git a/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/properties.json b/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/properties.json
index 8b082137..3e07f787 100644
--- a/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/properties.json
+++ b/repository/SmalltalkCI-GemStone-Core.package/SmalltalkCIGemstone.class/properties.json
@@ -7,7 +7,8 @@
"commentStamp" : "",
"instvars" : [
"produceXMLLog",
- "xmlLogDirPath" ],
+ "xmlLogDirPath",
+ "reportFilePath" ],
"name" : "SmalltalkCIGemstone",
"pools" : [
],
diff --git a/repository/SmalltalkCI-GemStone-Core.package/monticello.meta/version b/repository/SmalltalkCI-GemStone-Core.package/monticello.meta/version
index 9f016475..a53c6235 100644
--- a/repository/SmalltalkCI-GemStone-Core.package/monticello.meta/version
+++ b/repository/SmalltalkCI-GemStone-Core.package/monticello.meta/version
@@ -1 +1 @@
-(name 'SmalltalkCI-GemStone-Core-fn.74' message 'Override repositorySchemeIn: in SCIGemStoneMetacelloLoadSpec' id '3a20cb1b-7578-4a0d-9d45-97229d928041' date '12 January 2021' time '2:31:05.38607 pm' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.73' message 'Remove nonImplementedSelectorsSmalltalkCI' id 'c744d159-05ea-4cb0-a8f1-c6baf81d17d5' date '30 November 2017' time '1:54:55.132 pm' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.72' message 'Ignore run:spec:in: in SentButNotImplementedTest' id '05d97507-d279-4ab2-b043-0ce0f8d073d3' date '22 November 2017' time '7:02:36.895 pm' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.71' message 'Use forceNewFileNamed:do: in favor of forceNewFileNamed: and update reporter subclasses.' id 'a71feebc-4a1a-4d0b-bfac-b82921ae5995' date '21 November 2017' time '12:33:16.54 pm' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.70' message 'Improve SmalltalkCISpec loading.' id '5720ff38-12b3-40f0-8845-bbc6ee202fd1' date '20 November 2017' time '2:23:17.35 pm' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.69' message 'Restore side effect on which GsDevKit_home still depends on.' id 'cd3af1bd-9322-4611-9475-2480037fd736' date '10 November 2017' time '7:14:48.236 pm' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.68' message 'Adjust for #failOnDeprecationWarnings option' id 'a7b5d027-90a5-47f9-9e58-e38b0f84390b' date '10 November 2017' time '2:57:38.16 pm' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.67' message 'Implement SmalltalkCI class>>deprecated in a platform-specific way.' id '2a3159cd-5840-427a-830a-29ced9c8fbc4' date '7 November 2017' time '4:12:48.305 pm' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.66' message 'Make project directory globally available (e.g. for custom scripts).' id '0e67d951-5b96-47c8-ab4a-0d6726c3bfaa' date '4 November 2017' time '8:45:53.387 pm' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.65' message 'Implement missing file operation helpers.' id '6c4faa87-cdd6-487b-a073-97c17a46f927' date '1 November 2017' time '3:36:09.006 pm' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.64' message 'Add support for pre/post loading/testing scripts (#259).' id '715dea09-f734-4791-a0fa-eb8b26906085' date '1 November 2017' time '2:54:49.053 pm' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-MaxLeske.63' message '* added platform specific subclasses of SCIMetacelloLoadSpec' id 'b08d2a34-7210-0d00-a065-42460b1cb8d4' date '11 July 2017' time '10:23:04.759022 pm' author 'MaxLeske' ancestors ((name 'SmalltalkCI-GemStone-Core-dkh.62' message '#237 ... commit error message should be red' id '76bd80fc-292b-4728-88e7-9a0af36bca7d' date '7 December 2016' time '5:13:07 pm' author 'dkh' ancestors ((name 'SmalltalkCI-GemStone-Core-dkh.61' message '#237 proposed fix. Handle Errors when doing commits and don''t serialize stack when running on Travis --- committed continuations not accessible to developer' id 'd0ab5a49-2468-4678-87bb-f4b48b848063' date '7 December 2016' time '4:50:38 pm' author 'dkh' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.60' message 'Move explicitTestKeys to class side' id 'f70a63f9-bb7c-4a7c-a92a-466572c6b019' date '13 November 2016' time '10:45:25 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.59' message 'Add SmalltalkCIGemstone>>imageInfo' id 'ada6c9d1-bc18-4741-a765-163d1cef373b' date '21 October 2016' time '4:31:06 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.58' message 'Use truncateTo: instead of first: to avoid out of bounds errors.' id 'e364ce7a-cce9-4f4f-b32c-23c7b410b22a' date '16 October 2016' time '5:29 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.57' message 'Add SmalltalkCIGemstone class>>workingDirectory' id 'de900542-3c3b-4410-8e76-402713266bd0' date '16 October 2016' time '4:56:11 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.56' message 'Remove platform-specific platformClass implementation again' id '62a2e08a-23f5-4042-a08a-601b3893792b' date '14 October 2016' time '9:14:20 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.55' message 'Overwride SmalltalkCI class>>platformClass in platform-specific subclasses to avoid lookup problems.' id '31a014d2-72a7-4b84-8375-39a01d96b42b' date '14 October 2016' time '11:00:47 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.54' message 'Implement platform-specific hash:length' id '6264cfd7-df70-4f19-b21f-186d6f828e4b' date '11 October 2016' time '11:06:57 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.53' message 'Move test:projectDirectory: back to Core package' id '58f02646-f530-4dba-9198-803f111c4bab' date '11 October 2016' time '8:57:44 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.52' message 'Clean up image operations' id '64e1971f-66e4-414d-88b2-d83d882d8c14' date '11 October 2016' time '6:48:33 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.51' message 'Use SCITestRunner>>suiteName' id '5893ad09-e39b-404f-b57c-72feb46cf4a1' date '10 October 2016' time '12:51:24 pm' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.50' message 'Add getEnv: and update public-api' id '31f2eb3d-f6fa-4692-ab2a-305efef1c573' date '9 October 2016' time '9:48:28 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.49' message 'Add load:env:projectDirectory:' id '5c6caf16-ef0d-4542-a838-bf1e9ecf7676' date '9 October 2016' time '7:26 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.48' message 'Add GemStone-specific entry points' id '22435836-4de9-42d6-95bf-73953b379002' date '9 October 2016' time '6:36:20 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.47' message 'Add codeCoverageClass again' id 'f8f06ba3-1660-4353-8cb2-01120f4b42dd' date '8 October 2016' time '6:21:12 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.46' message 'Remove codeCoverageClass (not implemented)' id '95207b0c-dd37-4daa-8cfa-2085477ec383' date '8 October 2016' time '6:08:45 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.45' message 'Add dummy codeCoverageClass' id '4838b73f-4253-4208-b43d-c7d615bb2671' date '8 October 2016' time '4:54:15 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.44' message 'Add platform-specific forceNewFileNamed:' id 'baa548fa-36d1-474e-9ee9-9323961ff546' date '4 October 2016' time '6:04:27 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.43' message 'Fixes for SentButNotImplementedTest' id '4d40f728-0913-4d67-8df5-119e967207e8' date '4 October 2016' time '5:28:30 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.42' message 'Bugfix' id '8480489d-1231-44e1-8279-16469184ca3b' date '4 October 2016' time '4:53:10 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.41' message 'Do not close image when resuming' id '551c8558-59a4-4238-b02f-b2488f908908' date '4 October 2016' time '4:43:50 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.40' message 'Clean up entry methods for GemStone' id 'ec22412f-9f07-463f-b885-4ed07d026248' date '4 October 2016' time '2:52:53 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.39' message 'Make xml log optional again' id '0e63864c-113f-48e1-be73-c8ea519c4035' date '4 October 2016' time '2:05:04 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.38' message 'Restore and use xmlFilePath' id 'd481b139-af75-4a3d-a52a-12563752b5eb' date '4 October 2016' time '1:47:38 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.37' message 'Restore GemStone-specific executing methods' id '4bd15dc3-ebe2-407f-9a47-7c2bb2352726' date '4 October 2016' time '1:32:26 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.36' message 'Use crlfs for Travis folds in GemStone' id 'd7eb63b9-e1c6-4a61-812e-b53ef9d8e5ce' date '29 September 2016' time '4:35:28 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.35' message 'Use crlf in stdout reporter in GemStone' id '3afba75e-6613-415f-a145-ae5f2a48217d' date '29 September 2016' time '4:27:15 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.34' message 'Utf-8 fixes for GemStone' id '0525dbc4-7010-447c-a066-24467b7b9523' date '29 September 2016' time '4:14:47 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.33' message 'Add and use SCIGemStoneTestReporterStdout' id '72fec242-a556-48ab-9446-dbe150971c06' date '28 September 2016' time '2:13:28 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.32' message 'Remove SCIGemStoneTestReport in favor of SCIGemStoneTestRunner' id 'aab6fe46-0561-430b-b05c-568b8271875c' date '28 September 2016' time '1:09:59 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.31' message 'Bugfix' id '3682e13b-ff60-4f5d-970a-52c680ac9808' date '28 September 2016' time '12:52:13 pm' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.30' message 'Make sure the aNumber is a float' id '99c24dfd-da8e-477d-a640-57a1e1a032af' date '28 September 2016' time '12:08:09 pm' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.29' message 'Add platform-specific stringFor:maxDecimalPlaces:' id '400babf4-3618-4392-85c2-c53b3b862b7e' date '28 September 2016' time '11:58:40 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.28' message 'stdout-related cleanup' id 'ffe915c3-a8c2-4a07-ad0c-aebd8e3ad11b' date '27 September 2016' time '8:40:55 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.27' message 'Use stdoutServer' id '4b402dd4-4719-4659-882c-73df467b2097' date '27 September 2016' time '8:25:51 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.26' message 'Add platform-specific imagePath' id '42d2dc65-b4ac-4429-a045-94ad87354912' date '27 September 2016' time '8:14:38 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.25' message 'Implement closeImageWithExitCode:' id '3e5c55c1-3c75-40c4-a6eb-b5d1afc28538' date '27 September 2016' time '4:58:13 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.24' message 'Add missing methods' id '6bf67ea4-df26-4b9b-93ae-1696f90dc3d4' date '27 September 2016' time '4:24:25 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.23' message 'Another fix' id '7dc13ac9-916c-4ece-8f41-64f39e6d9126' date '27 September 2016' time '4:03:04 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.22' message 'Another bugfix' id 'f38e358a-fea7-4200-a4c3-4a4ab04cf892' date '27 September 2016' time '3:49:35 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.21' message 'Another bugfix for GemStone' id '60f55b49-eaf9-4ed4-9938-f6b9a4e462cb' date '27 September 2016' time '3:41:59 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.20' message 'Another bugfix' id '5111c15e-02d6-4a62-81dc-db7b731e9301' date '27 September 2016' time '3:35:51 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.19' message 'Bugfixes' id 'e6577af9-62c0-4ef4-bd6e-a6c4d975f05b' date '27 September 2016' time '3:29:14 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.18' message 'Use platform-specific SCIGemStoneTestRunner' id '07146cb2-b120-4968-9d55-e5d46b92910c' date '27 September 2016' time '3:17:11 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.17' message 'Use new SCITestRunner' id '5a6eb4e8-e000-43a0-bfc9-af28807a576c' date '26 September 2016' time '9:43:44 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.16' message 'Update for Windows compatibility' id '13fb406a-2781-43f0-b8fc-6f919d7c9a82' date '24 June 2016' time '11:11:24 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.15' message 'Project support now available for all platforms' id '58c1fe20-798b-4775-a243-8d0bd725ff76' date '24 June 2016' time '7:41:21 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.14' message 'Use GsFile stdout' id '05517038-515c-484e-8ebd-acecb9748000' date '24 June 2016' time '4:00:13 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.13' message 'Add SmalltalkCIGemstone class>>stdout' id '1a0faee2-a9dc-4b56-a820-532daad33684' date '24 June 2016' time '3:08:09 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.12' message 'Remove #''*'' option (support for allTestCases has been added for all platforms).' id '7d6b6589-acd2-4f25-92ae-4da1f6fb3665' date '22 June 2016' time '1:22:45 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.11' message 'classesToTest is supposed to return all classes rather than just TestCases' id 'acf69024-cee4-4ced-b096-8138015608fb' date '22 June 2016' time '11:49:48 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.10' message 'Add GemStone-specific classesInPackage:' id '02a2db82-f0bd-437c-90fe-c6e5690fa90d' date '22 June 2016' time '9:28:20 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.9' message 'Update classFrom logic' id '29ce2ead-0ff2-42e0-b72a-9e62a072e390' date '22 June 2016' time '12:49:30 pm' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.8' message 'Clean up SCIGemStoneTestReport and extension methods #163' id '9bcb475c-dfd3-4ec6-89ac-2188ec364210' date '14 June 2016' time '10:35:57 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.7' message 'Add convenience methods to SmalltalkCIGemstone' id '1702bbae-fd8d-4386-bfe1-a021d36f7f2f' date '14 June 2016' time '7:40:38 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.6' message 'Move deprecated SmalltalkCI>>testCI to SmalltalkCI-Core package' id '621171de-708f-4fa8-b46c-357ee1b84dad' date '13 June 2016' time '6:00:37 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.5' message 'Move methods back' id 'd98989d5-a853-4aa5-aa60-a300326028fd' date '13 June 2016' time '4:57:56 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.4' message 'Move runCIFor:projectDirectory: to SmalltalkCI-GemStone-Core (it is now deprecated)' id '5f433fb4-ec6e-4655-9313-6320da9dd5ef' date '13 June 2016' time '2:52:39 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.3' message 'Re-add deprecated methods for compatibility' id '947f4ee7-5175-431a-8ef1-f7d7b7891c4e' date '13 June 2016' time '2:32:22 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.2' message 'Cleanup GemStone extensions' id 'e7020cc2-c804-41c6-b04b-fe3c2ca20c50' date '13 June 2016' time '1:58:47 am' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.1' message 'Merge GemStone-specific packages into -Core, so that it is similar organized than others' id 'de98bae3-eba2-4ae7-9a8e-bec75f8c4c67' date '13 June 2016' time '9:55:33 am' author 'fn' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())
\ No newline at end of file
+(name 'SmalltalkCI-GemStone-Core-dkh.80' message 'dalehenrich/superDoit#63: debugging ...drat' id '35d8c7a0-671b-40cf-955a-43a162830734' date '03/24/2023' time '13:46:52' author 'dkh' ancestors ((name 'SmalltalkCI-GemStone-Core-dkh.79' message 'dalehenrich/superDoit#63: use GsFile class>>stdout' id '4ed0e58c-e2bf-49fb-94d2-a678a9333106' date '03/24/2023' time '13:16:13' author 'dkh' ancestors ((name 'SmalltalkCI-GemStone-Core-dkh.78' message 'dalehenrich/superDoit#63: eliminate double file write ... logging' id 'b7827148-bf52-4b6d-96e6-a3802d6aadd2' date '03/24/2023' time '12:57:45' author 'dkh' ancestors ((name 'SmalltalkCI-GemStone-Core-dkh.77' message 'dalehenrich/superDoit#63: only write report to stdout, if a report file is NOT specified' id 'a3f2b834-30cd-4cea-8c8d-7067d40d68fc' date '03/24/2023' time '12:33:33' author 'dkh' ancestors ((name 'SmalltalkCI-GemStone-Core-dkh.76' message 'dalehenrich/superDoit#63: checkpoint ... control flow logging' id 'b3f6be0c-a39a-46d3-9518-8bcea8256059' date '03/24/2023' time '12:28:21' author 'dkh' ancestors ((name 'SmalltalkCI-GemStone-Core-dkh.75' message 'dalehenrich/superDoit#63: add SCIGemStoneTestReporterFile for generating file-based reports' id '5cfbae05-fde1-4aad-9f3f-6be608bfd271' date '03/24/2023' time '11:07:47' author 'dkh' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.74' message 'Override repositorySchemeIn: in SCIGemStoneMetacelloLoadSpec' id '3a20cb1b-7578-4a0d-9d45-97229d928041' date '01/12/2021' time '02:31:05' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.73' message 'Remove nonImplementedSelectorsSmalltalkCI' id 'c744d159-05ea-4cb0-a8f1-c6baf81d17d5' date '11/30/2017' time '01:54:55' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.72' message 'Ignore run:spec:in: in SentButNotImplementedTest' id '05d97507-d279-4ab2-b043-0ce0f8d073d3' date '11/22/2017' time '07:02:36' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.71' message 'Use forceNewFileNamed:do: in favor of forceNewFileNamed: and update reporter subclasses.' id 'a71feebc-4a1a-4d0b-bfac-b82921ae5995' date '11/21/2017' time '12:33:16' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.70' message 'Improve SmalltalkCISpec loading.' id '5720ff38-12b3-40f0-8845-bbc6ee202fd1' date '11/20/2017' time '02:23:17' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.69' message 'Restore side effect on which GsDevKit_home still depends on.' id 'cd3af1bd-9322-4611-9475-2480037fd736' date '11/10/2017' time '07:14:48' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.68' message 'Adjust for #failOnDeprecationWarnings option' id 'a7b5d027-90a5-47f9-9e58-e38b0f84390b' date '11/10/2017' time '02:57:38' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.67' message 'Implement SmalltalkCI class>>deprecated in a platform-specific way.' id '2a3159cd-5840-427a-830a-29ced9c8fbc4' date '11/07/2017' time '04:12:48' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.66' message 'Make project directory globally available (e.g. for custom scripts).' id '0e67d951-5b96-47c8-ab4a-0d6726c3bfaa' date '11/04/2017' time '08:45:53' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.65' message 'Implement missing file operation helpers.' id '6c4faa87-cdd6-487b-a073-97c17a46f927' date '11/01/2017' time '03:36:09' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.64' message 'Add support for pre/post loading/testing scripts (#259).' id '715dea09-f734-4791-a0fa-eb8b26906085' date '11/01/2017' time '02:54:49' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-MaxLeske.63' message '* added platform specific subclasses of SCIMetacelloLoadSpec' id 'b08d2a34-7210-0d00-a065-42460b1cb8d4' date '07/11/2017' time '10:23:04' author 'MaxLeske' ancestors ((name 'SmalltalkCI-GemStone-Core-dkh.62' message '#237 ... commit error message should be red' id '76bd80fc-292b-4728-88e7-9a0af36bca7d' date '12/07/2016' time '17:13:07' author 'dkh' ancestors ((name 'SmalltalkCI-GemStone-Core-dkh.61' message '#237 proposed fix. Handle Errors when doing commits and don''t serialize stack when running on Travis --- committed continuations not accessible to developer' id 'd0ab5a49-2468-4678-87bb-f4b48b848063' date '12/07/2016' time '16:50:38' author 'dkh' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.60' message 'Move explicitTestKeys to class side' id 'f70a63f9-bb7c-4a7c-a92a-466572c6b019' date '11/13/2016' time '10:45:25' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.59' message 'Add SmalltalkCIGemstone>>imageInfo' id 'ada6c9d1-bc18-4741-a765-163d1cef373b' date '10/21/2016' time '04:31:06' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.58' message 'Use truncateTo: instead of first: to avoid out of bounds errors.' id 'e364ce7a-cce9-4f4f-b32c-23c7b410b22a' date '10/16/2016' time '05:29:00' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.57' message 'Add SmalltalkCIGemstone class>>workingDirectory' id 'de900542-3c3b-4410-8e76-402713266bd0' date '10/16/2016' time '04:56:11' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.56' message 'Remove platform-specific platformClass implementation again' id '62a2e08a-23f5-4042-a08a-601b3893792b' date '10/14/2016' time '09:14:20' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.55' message 'Overwride SmalltalkCI class>>platformClass in platform-specific subclasses to avoid lookup problems.' id '31a014d2-72a7-4b84-8375-39a01d96b42b' date '10/14/2016' time '11:00:47' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.54' message 'Implement platform-specific hash:length' id '6264cfd7-df70-4f19-b21f-186d6f828e4b' date '10/11/2016' time '11:06:57' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.53' message 'Move test:projectDirectory: back to Core package' id '58f02646-f530-4dba-9198-803f111c4bab' date '10/11/2016' time '08:57:44' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.52' message 'Clean up image operations' id '64e1971f-66e4-414d-88b2-d83d882d8c14' date '10/11/2016' time '06:48:33' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.51' message 'Use SCITestRunner>>suiteName' id '5893ad09-e39b-404f-b57c-72feb46cf4a1' date '10/10/2016' time '12:51:24' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.50' message 'Add getEnv: and update public-api' id '31f2eb3d-f6fa-4692-ab2a-305efef1c573' date '10/09/2016' time '09:48:28' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.49' message 'Add load:env:projectDirectory:' id '5c6caf16-ef0d-4542-a838-bf1e9ecf7676' date '10/09/2016' time '07:26:00' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.48' message 'Add GemStone-specific entry points' id '22435836-4de9-42d6-95bf-73953b379002' date '10/09/2016' time '06:36:20' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.47' message 'Add codeCoverageClass again' id 'f8f06ba3-1660-4353-8cb2-01120f4b42dd' date '10/08/2016' time '06:21:12' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.46' message 'Remove codeCoverageClass (not implemented)' id '95207b0c-dd37-4daa-8cfa-2085477ec383' date '10/08/2016' time '06:08:45' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.45' message 'Add dummy codeCoverageClass' id '4838b73f-4253-4208-b43d-c7d615bb2671' date '10/08/2016' time '04:54:15' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.44' message 'Add platform-specific forceNewFileNamed:' id 'baa548fa-36d1-474e-9ee9-9323961ff546' date '10/04/2016' time '06:04:27' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.43' message 'Fixes for SentButNotImplementedTest' id '4d40f728-0913-4d67-8df5-119e967207e8' date '10/04/2016' time '05:28:30' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.42' message 'Bugfix' id '8480489d-1231-44e1-8279-16469184ca3b' date '10/04/2016' time '04:53:10' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.41' message 'Do not close image when resuming' id '551c8558-59a4-4238-b02f-b2488f908908' date '10/04/2016' time '04:43:50' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.40' message 'Clean up entry methods for GemStone' id 'ec22412f-9f07-463f-b885-4ed07d026248' date '10/04/2016' time '02:52:53' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.39' message 'Make xml log optional again' id '0e63864c-113f-48e1-be73-c8ea519c4035' date '10/04/2016' time '02:05:04' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.38' message 'Restore and use xmlFilePath' id 'd481b139-af75-4a3d-a52a-12563752b5eb' date '10/04/2016' time '01:47:38' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.37' message 'Restore GemStone-specific executing methods' id '4bd15dc3-ebe2-407f-9a47-7c2bb2352726' date '10/04/2016' time '01:32:26' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.36' message 'Use crlfs for Travis folds in GemStone' id 'd7eb63b9-e1c6-4a61-812e-b53ef9d8e5ce' date '09/29/2016' time '04:35:28' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.35' message 'Use crlf in stdout reporter in GemStone' id '3afba75e-6613-415f-a145-ae5f2a48217d' date '09/29/2016' time '04:27:15' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.34' message 'Utf-8 fixes for GemStone' id '0525dbc4-7010-447c-a066-24467b7b9523' date '09/29/2016' time '04:14:47' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.33' message 'Add and use SCIGemStoneTestReporterStdout' id '72fec242-a556-48ab-9446-dbe150971c06' date '09/28/2016' time '02:13:28' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.32' message 'Remove SCIGemStoneTestReport in favor of SCIGemStoneTestRunner' id 'aab6fe46-0561-430b-b05c-568b8271875c' date '09/28/2016' time '01:09:59' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.31' message 'Bugfix' id '3682e13b-ff60-4f5d-970a-52c680ac9808' date '09/28/2016' time '12:52:13' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.30' message 'Make sure the aNumber is a float' id '99c24dfd-da8e-477d-a640-57a1e1a032af' date '09/28/2016' time '12:08:09' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.29' message 'Add platform-specific stringFor:maxDecimalPlaces:' id '400babf4-3618-4392-85c2-c53b3b862b7e' date '09/28/2016' time '11:58:40' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.28' message 'stdout-related cleanup' id 'ffe915c3-a8c2-4a07-ad0c-aebd8e3ad11b' date '09/27/2016' time '08:40:55' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.27' message 'Use stdoutServer' id '4b402dd4-4719-4659-882c-73df467b2097' date '09/27/2016' time '08:25:51' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.26' message 'Add platform-specific imagePath' id '42d2dc65-b4ac-4429-a045-94ad87354912' date '09/27/2016' time '08:14:38' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.25' message 'Implement closeImageWithExitCode:' id '3e5c55c1-3c75-40c4-a6eb-b5d1afc28538' date '09/27/2016' time '04:58:13' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.24' message 'Add missing methods' id '6bf67ea4-df26-4b9b-93ae-1696f90dc3d4' date '09/27/2016' time '04:24:25' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.23' message 'Another fix' id '7dc13ac9-916c-4ece-8f41-64f39e6d9126' date '09/27/2016' time '04:03:04' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.22' message 'Another bugfix' id 'f38e358a-fea7-4200-a4c3-4a4ab04cf892' date '09/27/2016' time '03:49:35' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.21' message 'Another bugfix for GemStone' id '60f55b49-eaf9-4ed4-9938-f6b9a4e462cb' date '09/27/2016' time '03:41:59' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.20' message 'Another bugfix' id '5111c15e-02d6-4a62-81dc-db7b731e9301' date '09/27/2016' time '03:35:51' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.19' message 'Bugfixes' id 'e6577af9-62c0-4ef4-bd6e-a6c4d975f05b' date '09/27/2016' time '03:29:14' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.18' message 'Use platform-specific SCIGemStoneTestRunner' id '07146cb2-b120-4968-9d55-e5d46b92910c' date '09/27/2016' time '03:17:11' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.17' message 'Use new SCITestRunner' id '5a6eb4e8-e000-43a0-bfc9-af28807a576c' date '09/26/2016' time '09:43:44' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.16' message 'Update for Windows compatibility' id '13fb406a-2781-43f0-b8fc-6f919d7c9a82' date '06/24/2016' time '11:11:24' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.15' message 'Project support now available for all platforms' id '58c1fe20-798b-4775-a243-8d0bd725ff76' date '06/24/2016' time '07:41:21' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.14' message 'Use GsFile stdout' id '05517038-515c-484e-8ebd-acecb9748000' date '06/24/2016' time '04:00:13' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.13' message 'Add SmalltalkCIGemstone class>>stdout' id '1a0faee2-a9dc-4b56-a820-532daad33684' date '06/24/2016' time '03:08:09' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.12' message 'Remove #''*'' option (support for allTestCases has been added for all platforms).' id '7d6b6589-acd2-4f25-92ae-4da1f6fb3665' date '06/22/2016' time '01:22:45' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.11' message 'classesToTest is supposed to return all classes rather than just TestCases' id 'acf69024-cee4-4ced-b096-8138015608fb' date '06/22/2016' time '11:49:48' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.10' message 'Add GemStone-specific classesInPackage:' id '02a2db82-f0bd-437c-90fe-c6e5690fa90d' date '06/22/2016' time '09:28:20' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.9' message 'Update classFrom logic' id '29ce2ead-0ff2-42e0-b72a-9e62a072e390' date '06/22/2016' time '12:49:30' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.8' message 'Clean up SCIGemStoneTestReport and extension methods #163' id '9bcb475c-dfd3-4ec6-89ac-2188ec364210' date '06/14/2016' time '10:35:57' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.7' message 'Add convenience methods to SmalltalkCIGemstone' id '1702bbae-fd8d-4386-bfe1-a021d36f7f2f' date '06/14/2016' time '07:40:38' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.6' message 'Move deprecated SmalltalkCI>>testCI to SmalltalkCI-Core package' id '621171de-708f-4fa8-b46c-357ee1b84dad' date '06/13/2016' time '06:00:37' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.5' message 'Move methods back' id 'd98989d5-a853-4aa5-aa60-a300326028fd' date '06/13/2016' time '04:57:56' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.4' message 'Move runCIFor:projectDirectory: to SmalltalkCI-GemStone-Core (it is now deprecated)' id '5f433fb4-ec6e-4655-9313-6320da9dd5ef' date '06/13/2016' time '02:52:39' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.3' message 'Re-add deprecated methods for compatibility' id '947f4ee7-5175-431a-8ef1-f7d7b7891c4e' date '06/13/2016' time '02:32:22' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.2' message 'Cleanup GemStone extensions' id 'e7020cc2-c804-41c6-b04b-fe3c2ca20c50' date '06/13/2016' time '01:58:47' author 'fn' ancestors ((name 'SmalltalkCI-GemStone-Core-fn.1' message 'Merge GemStone-specific packages into -Core, so that it is similar organized than others' id 'de98bae3-eba2-4ae7-9a8e-bec75f8c4c67' date '06/13/2016' time '09:55:33' author 'fn' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())
\ No newline at end of file
diff --git a/repository/SmalltalkCI-GemStone-Tests.package/SCIGemStoneMonticelloLoadSpecTest.class/README.md b/repository/SmalltalkCI-GemStone-Tests.package/SCIGemStoneMonticelloLoadSpecTest.class/README.md
new file mode 100644
index 00000000..e69de29b
diff --git a/repository/SmalltalkCI-Tests.package/SCIMonticelloLoadSpecTest.class/instance/testAddLoadedClassesFrom.st b/repository/SmalltalkCI-GemStone-Tests.package/SCIGemStoneMonticelloLoadSpecTest.class/instance/testAddLoadedClassesFrom.st
similarity index 99%
rename from repository/SmalltalkCI-Tests.package/SCIMonticelloLoadSpecTest.class/instance/testAddLoadedClassesFrom.st
rename to repository/SmalltalkCI-GemStone-Tests.package/SCIGemStoneMonticelloLoadSpecTest.class/instance/testAddLoadedClassesFrom.st
index 9a6f319b..26490414 100644
--- a/repository/SmalltalkCI-Tests.package/SCIMonticelloLoadSpecTest.class/instance/testAddLoadedClassesFrom.st
+++ b/repository/SmalltalkCI-GemStone-Tests.package/SCIGemStoneMonticelloLoadSpecTest.class/instance/testAddLoadedClassesFrom.st
@@ -2,9 +2,10 @@ testing
testAddLoadedClassesFrom
| mcOrganization |
self assert: true equals: (self spec loadedClasses isEmpty).
-
+
mcOrganization := MCOrganizationDefinition categories: #('SmalltalkCI-Core' 'SmalltalkCI-Tests').
+
self spec addLoadedClassesFrom: {mcOrganization}.
self deny: (self spec loadedClasses isEmpty).
self assert: (self spec loadedClasses includes: SmalltalkCI).
- self assert: (self spec loadedClasses includes: SmalltalkCITest).
\ No newline at end of file
+ self assert: (self spec loadedClasses includes: SmalltalkCITest)
diff --git a/repository/SmalltalkCI-GemStone-Tests.package/SCIGemStoneMonticelloLoadSpecTest.class/properties.json b/repository/SmalltalkCI-GemStone-Tests.package/SCIGemStoneMonticelloLoadSpecTest.class/properties.json
new file mode 100644
index 00000000..0201b37e
--- /dev/null
+++ b/repository/SmalltalkCI-GemStone-Tests.package/SCIGemStoneMonticelloLoadSpecTest.class/properties.json
@@ -0,0 +1,11 @@
+{
+ "commentStamp" : "",
+ "super" : "SCIMonticelloLoadSpecTest",
+ "category" : "SmalltalkCI-GemStone-Tests",
+ "classinstvars" : [ ],
+ "pools" : [ ],
+ "classvars" : [ ],
+ "instvars" : [ ],
+ "name" : "SCIGemStoneMonticelloLoadSpecTest",
+ "type" : "normal"
+}
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunner.class/instance/selectorIn..st b/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunner.class/instance/selectorIn..st
new file mode 100644
index 00000000..7e3fb1f6
--- /dev/null
+++ b/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunner.class/instance/selectorIn..st
@@ -0,0 +1,4 @@
+private
+selectorIn: context
+
+ ^ context methodSelector
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunner.class/instance/serializeError.of..st b/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunner.class/instance/serializeError.of..st
index b53703ca..d5050105 100644
--- a/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunner.class/instance/serializeError.of..st
+++ b/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunner.class/instance/serializeError.of..st
@@ -1,14 +1,18 @@
private
serializeError: error of: aTestCase
"We got an error from a test, let's serialize it so we can properly debug it later on..."
- | context testCaseMethodContext |
+ | context testCaseMethodContext |
context := error signalerContext.
testCaseMethodContext := context findContextSuchThat: [ :ctx |
- ctx receiver == aTestCase and: [ ctx methodSelector == #performTest ]].
+ ctx receiver == aTestCase and: [
+ (self selectorIn: ctx) == #performTest ] ].
context := context copyTo: testCaseMethodContext.
- [ Smalltalk at: #FuelOutStackDebugAction ifPresent: [ :fosda |
+ [
+ Smalltalk
+ at: #FuelOutStackDebugAction
+ ifPresent: [ :fosda |
fosda serializeStackFromContext: context sender ] ]
- on: Error
- do: [ :err | "simply continue..." ]
\ No newline at end of file
+ on: Error
+ do: [ :err | "simply continue..." ]
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunner.class/instance/stackTraceString.of..st b/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunner.class/instance/stackTraceString.of..st
index ab81bba3..ffdb256a 100644
--- a/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunner.class/instance/stackTraceString.of..st
+++ b/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunner.class/instance/stackTraceString.of..st
@@ -1,14 +1,22 @@
private
stackTraceString: err of: aTestCase
+
^ String streamContents: [ :str |
- | context |
- context := err signalerContext.
- [ context isNil or: [ context receiver == aTestCase and: [ context methodSelector == #runCase ] ] ] whileFalse: [
- str print: context.
- (self class isTestMethod: context method)
- ifTrue: [ | pcRange code |
- pcRange := context debuggerMap rangeForPC: context pc contextIsActiveContext: false.
- code := context method sourceCode asString copyFrom: pcRange first to: pcRange last.
- str nextPutAll: ' ...', code ].
- str cr.
- context := context sender ] ]
\ No newline at end of file
+ | context |
+ context := err signalerContext.
+ [
+ context isNil or: [
+ context receiver == aTestCase and: [
+ (self selectorIn: context) == #runCase ] ] ] whileFalse: [
+ str print: context.
+ (self class isTestMethod: context method) ifTrue: [
+ | pcRange code |
+ pcRange := context debuggerMap
+ rangeForPC: context pc
+ contextIsActiveContext: false.
+ code := context method sourceCode asString
+ copyFrom: pcRange first
+ to: pcRange last.
+ str nextPutAll: ' ...' , code ].
+ str cr.
+ context := context sender ] ]
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunner.class/methodProperties.json b/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunner.class/methodProperties.json
index 68d87efa..2ef503f5 100644
--- a/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunner.class/methodProperties.json
+++ b/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunner.class/methodProperties.json
@@ -1,9 +1,13 @@
{
- "class" : {
- "runClasses:spec:" : "maxmattone 4/14/2021 17:11",
- "skipExceptions" : "EstebanLorenzano 5/27/2021 21:51" },
"instance" : {
+ "selectorIn:" : "GOC 5/22/2023 17:51",
"basicRunCase:" : "7/17/2017 19:03:43",
+ "serializeError:of:" : "GOC 5/22/2023 17:51",
"runAll" : "MaxLeske 7/17/2017 19:05",
- "serializeError:of:" : "MaxLeske 5/17/2021 14:06",
- "stackTraceString:of:" : "smalltalkCI 7/4/2017 09:58" } }
+ "stackTraceString:of:" : "GOC 5/22/2023 17:51"
+ },
+ "class" : {
+ "runClasses:spec:" : "maxmattone 4/14/2021 17:11",
+ "skipExceptions" : "EstebanLorenzano 5/27/2021 21:51"
+ }
+}
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunnerPharo10.class/instance/selectorIn..st b/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunnerPharo10.class/instance/selectorIn..st
new file mode 100644
index 00000000..e2197b1e
--- /dev/null
+++ b/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunnerPharo10.class/instance/selectorIn..st
@@ -0,0 +1,4 @@
+private
+selectorIn: context
+
+ ^ context selector
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunnerPharo10.class/methodProperties.json b/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunnerPharo10.class/methodProperties.json
index 0e4a6622..19939230 100644
--- a/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunnerPharo10.class/methodProperties.json
+++ b/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunnerPharo10.class/methodProperties.json
@@ -1,5 +1,6 @@
{
- "class" : {
- },
"instance" : {
- } }
+ "selectorIn:" : "GOC 5/22/2023 17:52"
+ },
+ "class" : { }
+}
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunnerPharo9.class/instance/stackTraceString.of..st b/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunnerPharo9.class/instance/stackTraceString.of..st
index a484888d..c78831e3 100644
--- a/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunnerPharo9.class/instance/stackTraceString.of..st
+++ b/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunnerPharo9.class/instance/stackTraceString.of..st
@@ -1,14 +1,20 @@
private
stackTraceString: err of: aTestCase
+
^ String streamContents: [ :str |
- | context |
- context := err signalerContext.
- [ context isNil or: [ context receiver == aTestCase and: [ context methodSelector == #runCase ] ] ] whileFalse: [
- str print: context.
- (self class isTestMethod: context method)
- ifTrue: [ | pcRange code |
- pcRange := context pcRangeContextIsActive: false.
- code := context method sourceCode asString copyFrom: pcRange first to: pcRange last.
- str nextPutAll: ' ...', code ].
- str cr.
- context := context sender ] ]
\ No newline at end of file
+ | context |
+ context := err signalerContext.
+ [
+ context isNil or: [
+ context receiver == aTestCase and: [
+ (self selectorIn: context) == #runCase ] ] ] whileFalse: [
+ str print: context.
+ (self class isTestMethod: context method) ifTrue: [
+ | pcRange code |
+ pcRange := context pcRangeContextIsActive: false.
+ code := context method sourceCode asString
+ copyFrom: pcRange first
+ to: pcRange last.
+ str nextPutAll: ' ...' , code ].
+ str cr.
+ context := context sender ] ]
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunnerPharo9.class/methodProperties.json b/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunnerPharo9.class/methodProperties.json
index 91d850da..7351022c 100644
--- a/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunnerPharo9.class/methodProperties.json
+++ b/repository/SmalltalkCI-Pharo-Core.package/SCIPharoTestRunnerPharo9.class/methodProperties.json
@@ -1,6 +1,8 @@
{
- "class" : {
- "skipExceptions:" : "BenoitVerhaeghe 12/15/2020 10:00" },
"instance" : {
- "stackTraceString:of:" : "MaxLeske 5/17/2021 14:06"
- } }
+ "stackTraceString:of:" : "GOC 5/22/2023 17:51"
+ },
+ "class" : {
+ "skipExceptions" : "CompatibleUserName 5/12/2023 06:02:08"
+ }
+}
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/README.md b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/README.md
new file mode 100644
index 00000000..e69de29b
diff --git a/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/class/allCategoryNames.st b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/class/allCategoryNames.st
new file mode 100644
index 00000000..7cc3450b
--- /dev/null
+++ b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/class/allCategoryNames.st
@@ -0,0 +1,11 @@
+class organization
+allCategoryNames
+ | packages |
+ packages := Smalltalk organization packages.
+ ^ (OrderedCollection
+ new: packages size
+ streamContents: [ :stream |
+ packages do: [ :package |
+ stream nextPut: package name asString.
+ package classTags do: [ :tag |
+ stream nextPut: tag categoryName asString ] ] ]) asSet asArray
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/class/classesInCategory..st b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/class/classesInCategory..st
new file mode 100644
index 00000000..f220e0ee
--- /dev/null
+++ b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/class/classesInCategory..st
@@ -0,0 +1,6 @@
+class organization
+classesInCategory: aCategory
+ ^ (Smalltalk organization tagForCategory: aCategory)
+ ifNotNil: [ :tag |
+ tag classNames collect: [ :className | Smalltalk at: className ] ]
+ ifNil: [ #() ]
diff --git a/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/class/codeCoverageClass.st b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/class/codeCoverageClass.st
new file mode 100644
index 00000000..4fc677aa
--- /dev/null
+++ b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/class/codeCoverageClass.st
@@ -0,0 +1,4 @@
+compatibility
+codeCoverageClass
+
+ ^ Smalltalk at: #SCIPharo12CodeCoverage
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/class/isPlatformCompatible.st b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/class/isPlatformCompatible.st
new file mode 100644
index 00000000..3154d1cc
--- /dev/null
+++ b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/class/isPlatformCompatible.st
@@ -0,0 +1,4 @@
+compatibility
+isPlatformCompatible
+
+ ^ self platformNameBeginsWith: 'Pharo12'
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/methodProperties.json b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/methodProperties.json
new file mode 100644
index 00000000..6101aa51
--- /dev/null
+++ b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/methodProperties.json
@@ -0,0 +1,5 @@
+{
+ "class" : {
+ "isPlatformCompatible" : "CyrilFerlicot 4/17/2023 13:59" },
+ "instance" : {
+ } }
diff --git a/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/properties.json b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/properties.json
new file mode 100644
index 00000000..73f9b4a0
--- /dev/null
+++ b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo12.class/properties.json
@@ -0,0 +1,14 @@
+{
+ "category" : "SmalltalkCI-Pharo-Core",
+ "classinstvars" : [
+ ],
+ "classvars" : [
+ ],
+ "commentStamp" : "",
+ "instvars" : [
+ ],
+ "name" : "SmalltalkCIPharo12",
+ "pools" : [
+ ],
+ "super" : "SmalltalkCIPharo11",
+ "type" : "normal" }
diff --git a/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo9.class/instance/preLoad.st b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo78.class/instance/preLoad.st
similarity index 100%
rename from repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo9.class/instance/preLoad.st
rename to repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo78.class/instance/preLoad.st
diff --git a/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo78.class/methodProperties.json b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo78.class/methodProperties.json
index f9612da2..f811795a 100644
--- a/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo78.class/methodProperties.json
+++ b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo78.class/methodProperties.json
@@ -3,6 +3,7 @@
"forceNewFileNamed:do:" : "maxmattone 4/14/2021 17:14:21",
"getEnv:" : "fn 12/22/2018 14:20",
"isPlatformCompatible" : "fn 4/24/2019 22:00",
- "stdout" : "GuillermoPolito 10/4/2017 17:56" },
+ "stdout" : "GuillermoPolito 10/4/2017 17:56",
+ "preLoad" : "CyrilFerlicot 02/22/2023 11:23" },
"instance" : {
} }
diff --git a/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo9.class/class/isHeadless.st b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo9.class/class/isHeadless.st
new file mode 100644
index 00000000..a6dc6011
--- /dev/null
+++ b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo9.class/class/isHeadless.st
@@ -0,0 +1,3 @@
+helpers
+isHeadless
+ ^ Smalltalk isInteractiveGraphic not
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo9.class/methodProperties.json b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo9.class/methodProperties.json
index 32daa4d2..f52d2610 100644
--- a/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo9.class/methodProperties.json
+++ b/repository/SmalltalkCI-Pharo-Core.package/SmalltalkCIPharo9.class/methodProperties.json
@@ -1,6 +1,7 @@
{
"class" : {
+ "isHeadless" : "JonathanVanAlteren 5/5/2023 16:16",
"isPlatformCompatible" : "BenoitVerhaeghe 12/15/2020 10:00",
"testRunnerClass" : "BenoitVerhaeghe 12/15/2020 10:00" },
"instance" : {
diff --git a/repository/SmalltalkCI-Pharo-Core.package/monticello.meta/version b/repository/SmalltalkCI-Pharo-Core.package/monticello.meta/version
index ffa09315..4e1ad245 100644
--- a/repository/SmalltalkCI-Pharo-Core.package/monticello.meta/version
+++ b/repository/SmalltalkCI-Pharo-Core.package/monticello.meta/version
@@ -1,3 +1,2 @@
-(name 'SmalltalkCI-Pharo-Core-ct.1665761777' message 'Fixes gathering of extension methods for coverage testing. Closes #576. Thanks to Gabriel (GOC) for the recommendation!' id '156c0960-bcc8-654a-abaf-692693ce1a73' date '14 October 2022' time '5:41:23.395223 pm' author 'ct' ancestors ((name 'SmalltalkCI-Pharo-Core-ct.1664463567' message 'Complements SmalltalkCI-Coverage-Core-ct.34 (extension methods for coverage testing).' id '7873ac8e-944d-1141-ac61-026e8d1c4b2a' date '29 September 2022' time '5:00:50.401693 pm' author 'ct' ancestors ((name 'SmalltalkCI-Pharo-Core-ct.1664439708' message 'Complements SmalltalkCI-Coverage-Core-ct.33 (fixes file paths for coverage reports).' id '8d989861-7688-d545-9792-c6a3f58be21f' date '29 September 2022' time '12:22:39.826693 pm' author 'ct' ancestors ((name 'SmalltalkCI-Pharo-Core-fn.1570035225' message 'Add classes for Pharo 10 support.' id '8e8da347-2fb2-41fc-b05c-0f2226ec6dd3' date '22 July 2021' time '12:12:55.712035 pm' author 'fn' ancestors ((name 'SmalltalkCI-Pharo-Core-EstebanLorenzano.1570035224' message '- use Smalltalk dictionary to access classes that may not be in the system
-- remove shadowed variables
-' id '5c2ffc1d-b77f-0d00-9501-5f3600cb1d42' date '27 May 2021' time '10:12:36.047886 pm' author 'EstebanLorenzano' ancestors ((name 'SmalltalkCI-Pharo-Core-maxmattone.1570035223' message 'update json meta data' id '84bd31f0-517c-0d00-9176-f72709b43601' date '14 April 2021' time '5:14:21.225527 pm' author 'maxmattone' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())
\ No newline at end of file
+(name 'SmalltalkCI-Pharo-Core-GOC.1683882129' message 'Fix deprecated messages in Pharo 10/11' id 'b9ca235c-bcb8-0d00-8a02-52740b2d30c2' date '23 May 2023' time '8:23:56.450782 am' author 'GOC' ancestors ((name 'SmalltalkCI-Pharo-Core-CompatibleUserName.1683882128' message 'Override isHeadless as mentioned in issue #561.
+' id '61a4d773-e6dd-5997-b177-27b70e42f224' date '12 May 2023' time '6:02:08 am' author 'CompatibleUserName' ancestors () stepChildren ())) stepChildren ())
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Coverage-Core.package/SCIPharo12CodeCoverage.class/README.md b/repository/SmalltalkCI-Pharo-Coverage-Core.package/SCIPharo12CodeCoverage.class/README.md
new file mode 100644
index 00000000..e69de29b
diff --git a/repository/SmalltalkCI-Pharo-Coverage-Core.package/SCIPharo12CodeCoverage.class/class/packageNameForClass..st b/repository/SmalltalkCI-Pharo-Coverage-Core.package/SCIPharo12CodeCoverage.class/class/packageNameForClass..st
new file mode 100644
index 00000000..d20608d7
--- /dev/null
+++ b/repository/SmalltalkCI-Pharo-Coverage-Core.package/SCIPharo12CodeCoverage.class/class/packageNameForClass..st
@@ -0,0 +1,3 @@
+compatibility
+packageNameForClass: aClass
+ ^ ((Smalltalk at: #RPackageOrganizer) default packageOf: aClass) name
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Coverage-Core.package/SCIPharo12CodeCoverage.class/class/packageNameForMethod..st b/repository/SmalltalkCI-Pharo-Coverage-Core.package/SCIPharo12CodeCoverage.class/class/packageNameForMethod..st
new file mode 100644
index 00000000..c62a6c55
--- /dev/null
+++ b/repository/SmalltalkCI-Pharo-Coverage-Core.package/SCIPharo12CodeCoverage.class/class/packageNameForMethod..st
@@ -0,0 +1,5 @@
+compatibility
+packageNameForMethod: aMethodReference
+ | aClass |
+ aClass := aMethodReference compiledMethod methodClass.
+ ^ (aClass packages detect: [:each | each includesSelector: aMethodReference compiledMethod selector ofClass: aClass ]) name
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Coverage-Core.package/SCIPharo12CodeCoverage.class/properties.json b/repository/SmalltalkCI-Pharo-Coverage-Core.package/SCIPharo12CodeCoverage.class/properties.json
new file mode 100644
index 00000000..e1681fbf
--- /dev/null
+++ b/repository/SmalltalkCI-Pharo-Coverage-Core.package/SCIPharo12CodeCoverage.class/properties.json
@@ -0,0 +1,11 @@
+{
+ "commentStamp" : "",
+ "super" : "SCIPharoCodeCoverage",
+ "category" : "SmalltalkCI-Pharo-Coverage-Core",
+ "classinstvars" : [ ],
+ "pools" : [ ],
+ "classvars" : [ ],
+ "instvars" : [ ],
+ "name" : "SCIPharo12CodeCoverage",
+ "type" : "normal"
+}
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Coverage-Core.package/SCIPharoCodeCoverage.class/class/packageNameForMethod..st b/repository/SmalltalkCI-Pharo-Coverage-Core.package/SCIPharoCodeCoverage.class/class/packageNameForMethod..st
index 9b5e114e..af6c5852 100644
--- a/repository/SmalltalkCI-Pharo-Coverage-Core.package/SCIPharoCodeCoverage.class/class/packageNameForMethod..st
+++ b/repository/SmalltalkCI-Pharo-Coverage-Core.package/SCIPharoCodeCoverage.class/class/packageNameForMethod..st
@@ -1,3 +1,5 @@
compatibility
packageNameForMethod: aMethodReference
- ^ ((Smalltalk at: #RPackageOrganizer) default packageDefiningOrExtendingMethod: aMethodReference compiledMethod) packageName
\ No newline at end of file
+ | aClass |
+ aClass := aMethodReference compiledMethod methodClass.
+ ^ (aClass packages detect: [:each | each includesSelector: aMethodReference compiledMethod selector ofClass: aClass ]) packageName
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Tests.package/SCIPharoMonticelloLoadSpecTest.class/README.md b/repository/SmalltalkCI-Pharo-Tests.package/SCIPharoMonticelloLoadSpecTest.class/README.md
new file mode 100644
index 00000000..e69de29b
diff --git a/repository/SmalltalkCI-Pharo-Tests.package/SCIPharoMonticelloLoadSpecTest.class/instance/testAddLoadedClassesFrom.st b/repository/SmalltalkCI-Pharo-Tests.package/SCIPharoMonticelloLoadSpecTest.class/instance/testAddLoadedClassesFrom.st
new file mode 100644
index 00000000..b9c3936d
--- /dev/null
+++ b/repository/SmalltalkCI-Pharo-Tests.package/SCIPharoMonticelloLoadSpecTest.class/instance/testAddLoadedClassesFrom.st
@@ -0,0 +1,17 @@
+testing
+testAddLoadedClassesFrom
+ | mcOrganization |
+ self assert: true equals: (self spec loadedClasses isEmpty).
+
+ mcOrganization := (MCOrganizationDefinition canUnderstand: #categories:)
+ ifTrue: [
+ "Squeak, Pharo < 12"
+ MCOrganizationDefinition categories: #('SmalltalkCI-Core' 'SmalltalkCI-Tests') ]
+ ifFalse: [
+ MCOrganizationDefinition
+ packageName: 'SmalltalkCI'
+ tagNames: #(Core Tests) ].
+
+ self spec addLoadedClassesFrom: {mcOrganization}.
+ self deny: (self spec loadedClasses isEmpty).
+ self assert: (self spec loadedClasses includes: SmalltalkCI)
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Tests.package/SCIPharoMonticelloLoadSpecTest.class/properties.json b/repository/SmalltalkCI-Pharo-Tests.package/SCIPharoMonticelloLoadSpecTest.class/properties.json
new file mode 100644
index 00000000..cec2eed9
--- /dev/null
+++ b/repository/SmalltalkCI-Pharo-Tests.package/SCIPharoMonticelloLoadSpecTest.class/properties.json
@@ -0,0 +1,11 @@
+{
+ "commentStamp" : "",
+ "super" : "SCIMonticelloLoadSpecTest",
+ "category" : "SmalltalkCI-Pharo-Tests",
+ "classinstvars" : [ ],
+ "pools" : [ ],
+ "classvars" : [ ],
+ "instvars" : [ ],
+ "name" : "SCIPharoMonticelloLoadSpecTest",
+ "type" : "normal"
+}
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Pharo-Tests.package/SmalltalkCIPharoTest.class/instance/testPromptToProceed.st b/repository/SmalltalkCI-Pharo-Tests.package/SmalltalkCIPharoTest.class/instance/testPromptToProceed.st
index 705205f5..4880bbcc 100644
--- a/repository/SmalltalkCI-Pharo-Tests.package/SmalltalkCIPharoTest.class/instance/testPromptToProceed.st
+++ b/repository/SmalltalkCI-Pharo-Tests.package/SmalltalkCIPharoTest.class/instance/testPromptToProceed.st
@@ -5,6 +5,10 @@ testPromptToProceed
requests like confirm: . As promptToProceed only really makes sense in an interactive context,
always test with the MorphicUIManager"
|oldUIManager|
+
+ "Skip this test on GToolkit"
+ (Smalltalk hasClassNamed: 'GtImageSetup') ifTrue: [ ^ self ].
+
oldUIManager := UIManager default.
UIManager default: MorphicUIManager new.
diff --git a/repository/SmalltalkCI-Squeak-Tests.package/SCISqueakMonticelloLoadSpecTest.class/README.md b/repository/SmalltalkCI-Squeak-Tests.package/SCISqueakMonticelloLoadSpecTest.class/README.md
new file mode 100644
index 00000000..e69de29b
diff --git a/repository/SmalltalkCI-Squeak-Tests.package/SCISqueakMonticelloLoadSpecTest.class/instance/testAddLoadedClassesFrom.st b/repository/SmalltalkCI-Squeak-Tests.package/SCISqueakMonticelloLoadSpecTest.class/instance/testAddLoadedClassesFrom.st
new file mode 100644
index 00000000..26490414
--- /dev/null
+++ b/repository/SmalltalkCI-Squeak-Tests.package/SCISqueakMonticelloLoadSpecTest.class/instance/testAddLoadedClassesFrom.st
@@ -0,0 +1,11 @@
+testing
+testAddLoadedClassesFrom
+ | mcOrganization |
+ self assert: true equals: (self spec loadedClasses isEmpty).
+
+ mcOrganization := MCOrganizationDefinition categories: #('SmalltalkCI-Core' 'SmalltalkCI-Tests').
+
+ self spec addLoadedClassesFrom: {mcOrganization}.
+ self deny: (self spec loadedClasses isEmpty).
+ self assert: (self spec loadedClasses includes: SmalltalkCI).
+ self assert: (self spec loadedClasses includes: SmalltalkCITest)
diff --git a/repository/SmalltalkCI-Squeak-Tests.package/SCISqueakMonticelloLoadSpecTest.class/properties.json b/repository/SmalltalkCI-Squeak-Tests.package/SCISqueakMonticelloLoadSpecTest.class/properties.json
new file mode 100644
index 00000000..24aa4cc5
--- /dev/null
+++ b/repository/SmalltalkCI-Squeak-Tests.package/SCISqueakMonticelloLoadSpecTest.class/properties.json
@@ -0,0 +1,11 @@
+{
+ "commentStamp" : "",
+ "super" : "SCIMonticelloLoadSpecTest",
+ "category" : "SmalltalkCI-Squeak-Tests",
+ "classinstvars" : [ ],
+ "pools" : [ ],
+ "classvars" : [ ],
+ "instvars" : [ ],
+ "name" : "SCISqueakMonticelloLoadSpecTest",
+ "type" : "normal"
+}
\ No newline at end of file
diff --git a/repository/SmalltalkCI-Tests.package/SCIMonticelloLoadSpecTest.class/methodProperties.json b/repository/SmalltalkCI-Tests.package/SCIMonticelloLoadSpecTest.class/methodProperties.json
index da5bfadc..6c1c86ec 100644
--- a/repository/SmalltalkCI-Tests.package/SCIMonticelloLoadSpecTest.class/methodProperties.json
+++ b/repository/SmalltalkCI-Tests.package/SCIMonticelloLoadSpecTest.class/methodProperties.json
@@ -3,7 +3,6 @@
},
"instance" : {
"setUp" : "fn 6/9/2016 09:53",
- "testAddLoadedClassesFrom" : "fn 6/22/2016 10:50",
"testIsComplete" : "fn 6/9/2016 10:00",
"testRepository" : "fn 6/9/2016 15:23",
"testSimple" : "ct 5/15/2021 18:17" } }
diff --git a/run.sh b/run.sh
index 3e1eef2f..1c933d16 100755
--- a/run.sh
+++ b/run.sh
@@ -223,12 +223,11 @@ select_smalltalk() {
local images="Squeak64-trunk Squeak64-6.0 Squeak64-5.3 Squeak64-5.2 Squeak64-5.1
Squeak32-trunk Squeak32-6.0 Squeak32-5.3 Squeak32-5.2 Squeak32-5.1 Squeak32-5.0
Squeak32-4.6 Squeak32-4.5
- Pharo64-stable Pharo64-alpha Pharo64-11 Pharo64-10 Pharo64-9.0 Pharo64-8.0 Pharo64-7.0 Pharo64-6.1 Pharo64-6.0
- Pharo32-stable Pharo32-alpha Pharo32-9.0 Pharo32-8.0 Pharo32-7.0 Pharo32-6.0 Pharo32-5.0
+ Pharo64-stable Pharo64-alpha Pharo64-12 Pharo64-11 Pharo64-10 Pharo64-9.0 Pharo64-8.0 Pharo64-7.0 Pharo64-6.1 Pharo64-6.0
+ Pharo32-stable Pharo32-alpha Pharo32-12 Pharo32-9.0 Pharo32-8.0 Pharo32-7.0 Pharo32-6.0 Pharo32-5.0
Pharo32-4.0 Pharo32-3.0
- GemStone64-3.5.0 GemStone64-3.4.3 GemStone64-3.3.9
- GemStone64-3.3.2 GemStone64-3.3.0 GemStone64-3.2.12
- GemStone64-3.1.0.6
+ GemStone64-3.6.5 GemStone64-3.6.0 GemStone64-3.5.8 GemStone64-3.5.3
+ GToolkit64-release
Moose64-trunk Moose64-10 Moose64-9.0 Moose64-8.0 Moose64-7.0
Moose32-trunk Moose32-8.0 Moose32-7.0 Moose32-6.1 Moose32-6.0"
@@ -247,7 +246,7 @@ select_smalltalk() {
set -o posix # fixes SIGINT during select
select selection in $images; do
case "${selection}" in
- Squeak*|Pharo*|GemStone*|Moose*)
+ Squeak*|Pharo*|GemStone*|GToolkit*|Moose*)
config_smalltalk="${selection}"
break
;;
@@ -501,6 +500,10 @@ run() {
print_info "Starting GemStone build..."
source "${SMALLTALK_CI_HOME}/gemstone/run.sh"
;;
+ GToolkit*)
+ print_info "Starting GToolkit build..."
+ source "${SMALLTALK_CI_HOME}/gtoolkit/run.sh"
+ ;;
*)
print_error_and_exit "Unknown Smalltalk image '${config_smalltalk}'."
;;
diff --git a/squeak/run.sh b/squeak/run.sh
index c0ea36b0..e0bcd114 100755
--- a/squeak/run.sh
+++ b/squeak/run.sh
@@ -99,8 +99,8 @@ squeak::download_prepared_image() {
squeak::download_trunk_image() {
local target
local download_name
- local git_tag="v2.9.8" # 32bit/64bit are kept in sync
- local update_level="21469" # 32bit/64bit are kept in sync
+ local git_tag="v3.0.3" # 32bit/64bit are kept in sync
+ local update_level="22664" # 32bit/64bit are kept in sync
if is_64bit; then
download_name="Squeak64-trunk-${update_level}.tar.gz"
diff --git a/tests/pharo_tests.sh b/tests/pharo_tests.sh
index e2d4cebf..64ffbf2f 100755
--- a/tests/pharo_tests.sh
+++ b/tests/pharo_tests.sh
@@ -13,6 +13,15 @@ test_get_image_url() {
image_url="$(pharo::get_image_url "Pharo32-stable")"
assertEquals "get.pharo.org/stable" "${image_url}"
+ image_url="$(pharo::get_image_url "Pharo64-alpha")"
+ assertEquals "get.pharo.org/64/alpha" "${image_url}"
+
+ image_url="$(pharo::get_image_url "Pharo64-stable")"
+ assertEquals "get.pharo.org/64/stable" "${image_url}"
+
+ image_url="$(pharo::get_image_url "Pharo64-12")"
+ assertEquals "get.pharo.org/64/120" "${image_url}"
+
image_url="$(pharo::get_image_url "Pharo64-11")"
assertEquals "get.pharo.org/64/110" "${image_url}"
@@ -54,16 +63,19 @@ test_get_vm_url() {
local vm_url
vm_url="$(pharo::get_vm_url "Pharo32-alpha")"
- assertEquals "get.pharo.org/vmLatest110" "${vm_url}"
+ assertEquals "get.pharo.org/vmLatest120" "${vm_url}"
vm_url="$(pharo::get_vm_url "Pharo64-alpha")"
- assertEquals "get.pharo.org/64/vmLatest110" "${vm_url}"
+ assertEquals "get.pharo.org/64/vmLatest120" "${vm_url}"
vm_url="$(pharo::get_vm_url "Pharo32-stable")"
- assertEquals "get.pharo.org/vm100" "${vm_url}"
+ assertEquals "get.pharo.org/vm110" "${vm_url}"
vm_url="$(pharo::get_vm_url "Pharo64-stable")"
- assertEquals "get.pharo.org/64/vm100" "${vm_url}"
+ assertEquals "get.pharo.org/64/vm110" "${vm_url}"
+
+ vm_url="$(pharo::get_vm_url "Pharo32-12")"
+ assertEquals "get.pharo.org/vm120" "${vm_url}"
vm_url="$(pharo::get_vm_url "Pharo32-11")"
assertEquals "get.pharo.org/vm110" "${vm_url}"