Skip to content

Commit b3bb807

Browse files
committed
add cmi test steps in matrix
macos-13 shell script support Use personal diffpy.utils tests source temporaly properly pass exit code for install cmd
1 parent 2bd2acf commit b3bb807

File tree

7 files changed

+59
-17
lines changed

7 files changed

+59
-17
lines changed

.github/workflows/matrix-and-codecov-on-merge-to-main.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,23 @@ jobs:
1717
project: diffpy.cmi
1818
c_extension: false
1919
headless: false
20+
run: |
21+
set -Eeuo pipefail
22+
echo "Test cmds"
23+
cmi -h
24+
cmi env
25+
cmi pack list
26+
cmi profile list
27+
cmi install plotting
28+
if [ "${RUNNER_OS}" != "Windows" ]; then
29+
conda list | grep -i ipympl
30+
else
31+
source "$(cygpath -u "$CONDA")/etc/profile.d/conda.sh"
32+
conda activate test
33+
conda list | grep -i ipympl
34+
fi
35+
36+
echo "Running tests for diffpy.cmi dependencies"
37+
cmi install _tests
2038
secrets:
2139
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

.github/workflows/tests-on-pr.yml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,22 @@ jobs:
1212
c_extension: false
1313
headless: false
1414
run: |
15-
echo "Running tests for diffpy.cmi"
15+
set -Eeuo pipefail
16+
echo "Test cmds"
17+
cmi -h
18+
cmi env
19+
cmi pack list
20+
cmi profile list
21+
cmi install plotting
22+
if [ "${RUNNER_OS}" != "Windows" ]; then
23+
conda list | grep -i ipympl
24+
else
25+
source "$(cygpath -u "$CONDA")/etc/profile.d/conda.sh"
26+
conda activate test
27+
conda list | grep -i ipympl
28+
fi
29+
30+
echo "Running tests for diffpy.cmi dependencies"
1631
cmi install _tests
1732
secrets:
1833
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

requirements/packs/scripts/_pytest.sh

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,42 +19,45 @@ else
1919
fi
2020

2121
START_DIR="$PWD"
22-
TMPROOT="$(mktemp -d -p "$START_DIR" ".tmp_remote_tests.XXXXXX")"
22+
TMPROOT="$(TMPDIR="$START_DIR" mktemp -d -t .tmp_remote_tests.XXXXXXXX)"
2323
trap 'cd "$START_DIR" 2>/dev/null || true; rm -rf -- "$TMPROOT"' EXIT
2424
cd "$TMPROOT"
2525

2626
overall_ec=0
2727
i=0
2828
for url in "${URLS[@]}"; do
2929
((++i))
30-
echo -e "\n==> [$i] $url"
30+
printf '\n==> [%d] %s\n' "$i" "$url"
3131

32-
tarball="$(mktemp -p "$TMPROOT" "dl_${i}.XXXXXX.tar.gz")"
32+
tfile="$(TMPDIR="$TMPROOT" mktemp -t "dl_${i}.XXXXXXXX")"
33+
tarball="${tfile}.tar.gz"
3334
curl -L --fail -o "$tarball" "$url"
3435

3536
pkgdir="$TMPROOT/pkg_${i}"
3637
mkdir -p "$pkgdir"
37-
tar -xzf "$tarball" -C "$pkgdir"
38+
tar -xzf "$tarball" -C "$pkgdir" 2>/dev/null || tar -xf "$tarball" -C "$pkgdir"
39+
40+
first_entry="$(tar -tzf "$tarball" 2>/dev/null | head -1 || true)"
41+
if [ -z "$first_entry" ]; then
42+
first_entry="$(tar -tf "$tarball" 2>/dev/null | head -1 || true)"
43+
fi
3844

39-
first_entry="$(tar -tzf "$tarball" | head -1 || true)"
4045
top="${first_entry%%/*}"
4146
if [ -n "$top" ] && [ -d "$pkgdir/$top" ]; then
4247
projroot="$pkgdir/$top"
4348
else
4449
projroot="$pkgdir"
4550
fi
4651

47-
if [ -d "$projroot/src" ]; then
48-
rm -rf -- "$projroot/src"
49-
fi
52+
[ -d "$projroot/src" ] && rm -rf -- "$projroot/src"
5053

5154
if [ -d "$projroot/tests" ]; then
5255
( cd "$projroot" && PYTHONPATH="$PWD:tests:${PYTHONPATH:-}" pytest ) || overall_ec=1
5356
else
5457
( cd "$projroot" && PYTHONPATH="$PWD:${PYTHONPATH:-}" pytest ) || overall_ec=1
5558
fi
5659

57-
rm -f -- "$tarball"
60+
rm -f -- "$tarball" "$tfile"
5861
rm -rf -- "$pkgdir"
5962
done
6063

requirements/packs/scripts/tar_url.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ https://github.com/diffpy/diffpy.srreal/archive/refs/tags/1.4.0.tar.gz
22
https://github.com/diffpy/diffpy.srfit/archive/refs/tags/3.2.0.tar.gz
33
https://github.com/diffpy/pyobjcryst/archive/refs/tags/2025.1.0.tar.gz
44
https://github.com/diffpy/diffpy.structure/archive/refs/tags/3.3.1.tar.gz
5-
https://github.com/diffpy/diffpy.utils/archive/refs/tags/3.6.1.tar.gz
5+
https://github.com/Tieqiong/diffpy.utils/archive/refs/tags/3.6.2-rc.0.tar.gz

requirements/profiles/_tests.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
packs:
55
- core
66
- pdf
7-
- plotting
87
- tests
98

109
extras:

src/diffpy/cmi/cli.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -464,16 +464,20 @@ def _cmd_install(ns: argparse.Namespace) -> int:
464464
try:
465465
kind, path = _resolve_target_for_install(tgt)
466466
if kind == "pack":
467-
mgr.install_pack(path.stem)
467+
r = mgr.install_pack(path.stem)
468468
else:
469-
pm.install(path if path.is_absolute() else path.stem)
469+
r = pm.install(path if path.is_absolute() else path.stem)
470+
if isinstance(r, bool):
471+
if not r: rc = max(rc, 1)
472+
elif isinstance(r, int):
473+
rc = max(rc, r)
470474
except (ValueError, FileNotFoundError) as e:
471475
plog.error("%s", e)
472476
ns._parser.print_help()
473-
rc = 1
477+
rc = max(rc, 1)
474478
except Exception as e:
475479
plog.error("%s", e)
476-
rc = 1
480+
rc = max(rc, 1)
477481
return rc
478482

479483

src/diffpy/cmi/profilesmanager.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,10 @@ def install(self, identifier: Union[str, Path]) -> None:
191191
scripts_root = self.packs_mgr.packs_dir / "scripts"
192192

193193
plog.info("Installing profile: %s", prof.name)
194-
if install_requirements(reqs, scripts_root=scripts_root) == 0:
194+
exit_code = install_requirements(reqs, scripts_root=scripts_root)
195+
if exit_code == 0:
195196
plog.info("Profile '%s' installation complete.", prof.name)
196197
else:
197198
plog.error("Profile '%s' installation failed.", prof.name)
199+
200+
return exit_code

0 commit comments

Comments
 (0)