From 2e071a5c9e3d3c9b94777ff2ff306723d6b717a5 Mon Sep 17 00:00:00 2001 From: "Sean T. Allen" Date: Wed, 14 Oct 2026 20:52:58 -0400 Subject: [PATCH] Update to work with Pony 0.77.0 Pony 0.77.0 uses forward slash as the path separator on all platforms. KnownFolders returns raw Windows API paths, so user_home_dir() now normalizes via Path.clean to stay consistent with the other methods that already go through Path.join. Switch CI workflows to nightly until 0.77.0 is released. --- .github/workflows/pony-lint.yml | 2 +- .github/workflows/pr.yml | 8 +- .release-notes/update-for-pony-0.77.0.md | 3 + README.md | 1 + appdirs/_test.pony | 130 +++++++++++------------ appdirs/appdirs.pony | 2 +- 6 files changed, 75 insertions(+), 71 deletions(-) create mode 100644 .release-notes/update-for-pony-0.77.0.md diff --git a/.github/workflows/pony-lint.yml b/.github/workflows/pony-lint.yml index 5e4e20b..8ddec33 100644 --- a/.github/workflows/pony-lint.yml +++ b/.github/workflows/pony-lint.yml @@ -17,7 +17,7 @@ jobs: name: Lint Pony source runs-on: ubuntu-latest container: - image: ghcr.io/ponylang/shared-docker-ci-standard-builder:release + image: ghcr.io/ponylang/shared-docker-ci-standard-builder:nightly steps: - uses: actions/checkout@v6.0.2 - name: Lint diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 028667d..a26b8b4 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -21,7 +21,7 @@ jobs: name: Test against recent ponyc release on Linux runs-on: ubuntu-latest container: - image: ghcr.io/ponylang/shared-docker-ci-standard-builder:release + image: ghcr.io/ponylang/shared-docker-ci-standard-builder:nightly steps: - uses: actions/checkout@v6.0.2 - name: Test @@ -33,7 +33,7 @@ jobs: steps: - uses: actions/checkout@v6.0.2 - name: Install dependencies - run: bash .ci-scripts/macOS-install-pony-tools.bash release + run: bash .ci-scripts/macOS-install-pony-tools.bash nightly - name: Test run: | export PATH="$HOME/.local/share/ponyup/bin/:$PATH" @@ -46,10 +46,10 @@ jobs: - uses: actions/checkout@v6.0.2 - name: Test with most recent ponyc release run: | - Invoke-WebRequest https://dl.cloudsmith.io/public/ponylang/releases/raw/versions/latest/ponyc-x86-64-pc-windows-msvc.zip -OutFile C:\ponyc.zip; + Invoke-WebRequest https://dl.cloudsmith.io/public/ponylang/nightlies/raw/versions/latest/ponyc-x86-64-pc-windows-msvc.zip -OutFile C:\ponyc.zip; Expand-Archive -Path C:\ponyc.zip -DestinationPath C:\ponyc; $env:PATH = 'C:\ponyc\bin;' + $env:PATH; - Invoke-WebRequest https://dl.cloudsmith.io/public/ponylang/releases/raw/versions/latest/corral-x86-64-pc-windows-msvc.zip -OutFile C:\corral.zip; + Invoke-WebRequest https://dl.cloudsmith.io/public/ponylang/nightlies/raw/versions/latest/corral-x86-64-pc-windows-msvc.zip -OutFile C:\corral.zip; Expand-Archive -Path C:\corral.zip -DestinationPath C:\corral; $env:PATH = 'C:\corral\bin;' + $env:PATH; .\make.ps1 test diff --git a/.release-notes/update-for-pony-0.77.0.md b/.release-notes/update-for-pony-0.77.0.md new file mode 100644 index 0000000..ea2c676 --- /dev/null +++ b/.release-notes/update-for-pony-0.77.0.md @@ -0,0 +1,3 @@ +## Update to work with Pony 0.77.0 + +Pony 0.77.0 is the new minimum required version. diff --git a/README.md b/README.md index 973831d..0f3b3c7 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ Appdirs is an beta-level package. ## Installation +* Requires ponyc 0.77.0 or later. * Install [corral](https://github.com/ponylang/corral) * `corral add github.com/ponylang/appdirs.git --version 0.1.5` * `corral fetch` to fetch your dependencies diff --git a/appdirs/_test.pony b/appdirs/_test.pony index dcdd8fa..f0156c6 100644 --- a/appdirs/_test.pony +++ b/appdirs/_test.pony @@ -194,26 +194,26 @@ class \nodoc\ _AppDirsDefaultsTest is UnitTest EnvVars(h.env.vars)("USERNAME")? // TODO: only tested on windows 10 let u: String val = - "C:\\Users\\" + user_name + "C:/Users/" + user_name _ExpectedAppDirs( where home_dir' = u, user_data_dir' = - u + "\\AppData\\Local\\appdirs", + u + "/AppData/Local/appdirs", site_data_dirs' = - ["C:\\ProgramData\\appdirs"], + ["C:/ProgramData/appdirs"], user_config_dir' = - u + "\\AppData\\Local\\appdirs", + u + "/AppData/Local/appdirs", site_config_dirs' = - ["C:\\ProgramData\\appdirs"], + ["C:/ProgramData/appdirs"], user_cache_dir' = u + - "\\AppData\\Local" + - "\\appdirs\\Cache", + "/AppData/Local" + + "/appdirs/Cache", user_state_dir' = - u + "\\AppData\\Local\\appdirs", + u + "/AppData/Local/appdirs", user_log_dir' = - u + "\\AppData\\Local\\appdirs") + u + "/AppData/Local/appdirs") else _ExpectedAppDirs( where @@ -286,34 +286,34 @@ class \nodoc\ _AppDirsVersionTest is UnitTest let user_name = EnvVars(h.env.vars)("USERNAME")? let u: String val = - "C:\\Users\\" + user_name + "C:/Users/" + user_name _ExpectedAppDirs( where home_dir' = u, user_data_dir' = u + - "\\AppData\\Local" + - "\\appdirs\\0.4", + "/AppData/Local" + + "/appdirs/0.4", site_data_dirs' = - ["C:\\ProgramData\\appdirs\\0.4"], + ["C:/ProgramData/appdirs/0.4"], user_config_dir' = u + - "\\AppData\\Local" + - "\\appdirs\\0.4", + "/AppData/Local" + + "/appdirs/0.4", site_config_dirs' = - ["C:\\ProgramData\\appdirs\\0.4"], + ["C:/ProgramData/appdirs/0.4"], user_cache_dir' = u + - "\\AppData\\Local" + - "\\appdirs\\Cache\\0.4", + "/AppData/Local" + + "/appdirs/Cache/0.4", user_state_dir' = u + - "\\AppData\\Local" + - "\\appdirs\\0.4", + "/AppData/Local" + + "/appdirs/0.4", user_log_dir' = u + - "\\AppData\\Local" + - "\\appdirs\\0.4") + "/AppData/Local" + + "/appdirs/0.4") else _ExpectedAppDirs( where @@ -367,26 +367,26 @@ class \nodoc\ _AppDirsNoHomeTest is UnitTest let user_name = EnvVars(h.env.vars)("USERNAME")? let u: String val = - "C:\\Users\\" + user_name + "C:/Users/" + user_name _ExpectedAppDirs( where home_dir' = u, user_data_dir' = - u + "\\AppData\\Local\\appdirs", + u + "/AppData/Local/appdirs", site_data_dirs' = - ["C:\\ProgramData\\appdirs"], + ["C:/ProgramData/appdirs"], user_config_dir' = - u + "\\AppData\\Local\\appdirs", + u + "/AppData/Local/appdirs", site_config_dirs' = - ["C:\\ProgramData\\appdirs"], + ["C:/ProgramData/appdirs"], user_cache_dir' = u + - "\\AppData\\Local" + - "\\appdirs\\Cache", + "/AppData/Local" + + "/appdirs/Cache", user_state_dir' = - u + "\\AppData\\Local\\appdirs", + u + "/AppData/Local/appdirs", user_log_dir' = - u + "\\AppData\\Local\\appdirs") + u + "/AppData/Local/appdirs") else _ExpectedAppDirs( where @@ -445,39 +445,39 @@ class \nodoc\ _AppDirsAppAuthorTest is UnitTest let user_name = EnvVars(h.env.vars)("USERNAME")? let u: String val = - "C:\\Users\\" + user_name + "C:/Users/" + user_name _ExpectedAppDirs( where home_dir' = u, user_data_dir' = u + - "\\AppData\\Local" + - "\\Matthias Wahl\\appdirs", + "/AppData/Local" + + "/Matthias Wahl/appdirs", site_data_dirs' = - [ "C:\\ProgramData" + - "\\Matthias Wahl\\appdirs" + [ "C:/ProgramData" + + "/Matthias Wahl/appdirs" ], user_config_dir' = u + - "\\AppData\\Local" + - "\\Matthias Wahl\\appdirs", + "/AppData/Local" + + "/Matthias Wahl/appdirs", site_config_dirs' = - [ "C:\\ProgramData" + - "\\Matthias Wahl\\appdirs" + [ "C:/ProgramData" + + "/Matthias Wahl/appdirs" ], user_cache_dir' = u + - "\\AppData\\Local" + - "\\Matthias Wahl" + - "\\appdirs\\Cache", + "/AppData/Local" + + "/Matthias Wahl" + + "/appdirs/Cache", user_state_dir' = u + - "\\AppData\\Local" + - "\\Matthias Wahl\\appdirs", + "/AppData/Local" + + "/Matthias Wahl/appdirs", user_log_dir' = u + - "\\AppData\\Local" + - "\\Matthias Wahl\\appdirs") + "/AppData/Local" + + "/Matthias Wahl/appdirs") else _ExpectedAppDirs( where @@ -545,26 +545,26 @@ class \nodoc\ _AppDirsWindowsRoamingTest is UnitTest let user_name = EnvVars(h.env.vars)("USERNAME")? let u: String val = - "C:\\Users\\" + user_name + "C:/Users/" + user_name _ExpectedAppDirs( where home_dir' = u, user_data_dir' = - u + "\\AppData\\Roaming\\appdirs", + u + "/AppData/Roaming/appdirs", site_data_dirs' = - ["C:\\ProgramData\\appdirs"], + ["C:/ProgramData/appdirs"], user_config_dir' = - u + "\\AppData\\Roaming\\appdirs", + u + "/AppData/Roaming/appdirs", site_config_dirs' = - ["C:\\ProgramData\\appdirs"], + ["C:/ProgramData/appdirs"], user_cache_dir' = u + - "\\AppData\\Local" + - "\\appdirs\\Cache", + "/AppData/Local" + + "/appdirs/Cache", user_state_dir' = - u + "\\AppData\\Roaming\\appdirs", + u + "/AppData/Roaming/appdirs", user_log_dir' = - u + "\\AppData\\Roaming\\appdirs") + u + "/AppData/Roaming/appdirs") else _ExpectedAppDirs( where @@ -634,26 +634,26 @@ class \nodoc\ _AppDirsUnixXDGVarsTest is UnitTest let user_name = EnvVars(h.env.vars)("USERNAME")? let u: String val = - "C:\\Users\\" + user_name + "C:/Users/" + user_name _ExpectedAppDirs( where home_dir' = u, user_data_dir' = - u + "\\AppData\\Local\\appdirs", + u + "/AppData/Local/appdirs", site_data_dirs' = - ["C:\\ProgramData\\appdirs"], + ["C:/ProgramData/appdirs"], user_config_dir' = - u + "\\AppData\\Local\\appdirs", + u + "/AppData/Local/appdirs", site_config_dirs' = - ["C:\\ProgramData\\appdirs"], + ["C:/ProgramData/appdirs"], user_cache_dir' = u + - "\\AppData\\Local" + - "\\appdirs\\Cache", + "/AppData/Local" + + "/appdirs/Cache", user_state_dir' = - u + "\\AppData\\Local\\appdirs", + u + "/AppData/Local/appdirs", user_log_dir' = - u + "\\AppData\\Local\\appdirs") + u + "/AppData/Local/appdirs") else _ExpectedAppDirs( where diff --git a/appdirs/appdirs.pony b/appdirs/appdirs.pony index e9c629e..b03ec36 100644 --- a/appdirs/appdirs.pony +++ b/appdirs/appdirs.pony @@ -105,7 +105,7 @@ class AppDirs _home = ifdef windows then - try KnownFolders(KnownFolderIds.profile())? end + try Path.clean(KnownFolders(KnownFolderIds.profile())?) end else try _env_vars("HOME")? end end