Repository: NixOS/nixpkgs
Pull request #400349: fish: 4.0.1 -> 4.0.2
Author: login: r-vdp
Labels: name: 10.rebuild-linux: 11-100
description: This PR causes between 11 and 100 packages to rebuild on Linux.
name: 10.rebuild-darwin: 11-100
description: This PR causes between 11 and 100 packages to rebuild on Darwin.
name: 12.approvals: 1
description: This PR was reviewed and approved by one person.
Created: 2025-04-20T15:23:57Z | Merged: 2025-04-21T14:40:58Z


<!--
^ Please summarise the changes you have done and explain why they are necessary here ^

For package updates please link to a changelog or describe changes, this helps your fellow maintainers discover breaking updates.
For new packages please briefly describe the package or provide a link to its homepage.
-->

## Things done

https://github.com/fish-shell/fish-shell/releases/tag/4.0.2

<!-- Please check what applies. Note that these are not hard requirements but merely serve as information for reviewers. -->

- Built on platform(s)
  - [ ] x86_64-linux
  - [ ] aarch64-linux
  - [ ] x86_64-darwin
  - [ ] aarch64-darwin
- For non-Linux: Is sandboxing enabled in `nix.conf`? (See [Nix manual](https://nixos.org/manual/nix/stable/command-ref/conf-file.html))
  - [ ] `sandbox = relaxed`
  - [ ] `sandbox = true`
- [ ] Tested, as applicable:
  - [NixOS test(s)](https://nixos.org/manual/nixos/unstable/index.html#sec-nixos-tests) (look inside [nixos/tests](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests))
  - and/or [package tests](https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#package-tests)
  - or, for functions and "core" functionality, tests in [lib/tests](https://github.com/NixOS/nixpkgs/blob/master/lib/tests) or [pkgs/test](https://github.com/NixOS/nixpkgs/blob/master/pkgs/test)
  - made sure NixOS tests are [linked](https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#linking-nixos-module-tests-to-a-package) to the relevant packages
- [ ] Tested compilation of all packages that depend on this change using `nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD"`. Note: all changes have to be committed, also see [nixpkgs-review usage](https://github.com/Mic92/nixpkgs-review#usage)
- [ ] Tested basic functionality of all binary files (usually in `./result/bin/`)
- [25.05 Release Notes](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2505.section.md) (or backporting [24.11](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2411.section.md) and [25.05](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2505.section.md) Release notes)
  - [ ] (Package updates) Added a release notes entry if the change is major or breaking
  - [ ] (Module updates) Added a release notes entry if the change is significant
  - [ ] (Module addition) Added a release notes entry if adding a new NixOS module
- [ ] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md).

<!--
To help with the large amounts of pull requests, we would appreciate your
reviews of other pull requests, especially simple package updates. Just leave a
comment describing what you have tested in the relevant package/service.
Reviewing helps to reduce the average time-to-merge for everyone.
Thanks a lot if you do!

List of open PRs: https://github.com/NixOS/nixpkgs/pulls
Reviewing guidelines: https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md#reviewing-contributions
-->

---

Add a :+1: [reaction] to [pull requests you find important].

[reaction]: https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/
[pull requests you find important]: https://github.com/NixOS/nixpkgs/pulls?q=is%3Aopen+sort%3Areactions-%2B1-desc



Diff:
diff --git a/pkgs/by-name/fi/fish/1d78c8bd4295262a3118f478e6b3a7c7536fa282.patch b/pkgs/by-name/fi/fish/1d78c8bd4295262a3118f478e6b3a7c7536fa282.patch
deleted file mode 100644
index 873b112d864e4..0000000000000
--- a/pkgs/by-name/fi/fish/1d78c8bd4295262a3118f478e6b3a7c7536fa282.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 1d78c8bd4295262a3118f478e6b3a7c7536fa282 Mon Sep 17 00:00:00 2001
-From: Johannes Altmanninger <aclopte@gmail.com>
-Date: Wed, 19 Mar 2025 09:39:04 +0100
-Subject: [PATCH] Fix concurrent setlocale() in string escape tests
-
-In our C++ implementation, these tests were run serially.  As pointed out in
-https://github.com/fish-shell/fish-shell/issues/11254#issuecomment-2735623229
-we run them in parallel now, which means that one test could be changing
-the global locale used by another.
-
-In theory this could be fine because all tests are setting setting the
-global locale to the same thing but the existence of a lock suggests that
-setlocale() is not guaranteed to be atomic, so it's possible that another
-thread uses a temporarily-invalid locale.
-
-Fixes #11254
----
- src/tests/string_escape.rs | 14 ++++++++------
- 1 file changed, 8 insertions(+), 6 deletions(-)
-
-diff --git a/src/tests/string_escape.rs b/src/tests/string_escape.rs
-index ba8ee7534ebf..4428d679cd35 100644
---- a/src/tests/string_escape.rs
-+++ b/src/tests/string_escape.rs
-@@ -1,3 +1,5 @@
-+use std::sync::MutexGuard;
-+
- use crate::common::{
-     escape_string, str2wcstring, unescape_string, wcs2string, EscapeFlags, EscapeStringStyle,
-     UnescapeStringStyle, ENCODE_DIRECT_BASE, ENCODE_DIRECT_END,
-@@ -10,21 +12,21 @@ use rand::{Rng, RngCore};
- 
- /// wcs2string is locale-dependent, so ensure we have a multibyte locale
- /// before using it in a test.
--fn setlocale() {
--    let _guard = LOCALE_LOCK.lock().unwrap();
-+fn setlocale() -> MutexGuard<'static, ()> {
-+    let guard = LOCALE_LOCK.lock().unwrap();
- 
-     #[rustfmt::skip]
-     const UTF8_LOCALES: &[&str] = &[
-         "C.UTF-8", "en_US.UTF-8", "en_GB.UTF-8", "de_DE.UTF-8", "C.utf8", "UTF-8",
-     ];
-     if crate::libc::MB_CUR_MAX() > 1 {
--        return;
-+        return guard;
-     }
-     for locale in UTF8_LOCALES {
-         let locale = std::ffi::CString::new(locale.to_owned()).unwrap();
-         unsafe { libc::setlocale(libc::LC_CTYPE, locale.as_ptr()) };
-         if crate::libc::MB_CUR_MAX() > 1 {
--            return;
-+            return guard;
-         }
-     }
-     panic!("No UTF-8 locale found");
-@@ -100,7 +102,7 @@ fn test_escape_var() {
- }
- 
- fn escape_test(escape_style: EscapeStringStyle, unescape_style: UnescapeStringStyle) {
--    setlocale();
-+    let _locale_guard = setlocale();
-     let seed: u128 = 92348567983274852905629743984572;
-     let mut rng = get_seeded_rng(seed);
- 
-@@ -174,7 +176,7 @@ fn str2hex(input: &[u8]) -> String {
- /// string comes back through double conversion.
- #[test]
- fn test_convert() {
--    setlocale();
-+    let _locale_guard = setlocale();
-     let seed = get_rng_seed();
-     let mut rng = get_seeded_rng(seed);
-     let mut origin = Vec::new();
diff --git a/pkgs/by-name/fi/fish/package.nix b/pkgs/by-name/fi/fish/package.nix
index e61a9134f602c..1b4c0b375201d 100644
--- a/pkgs/by-name/fi/fish/package.nix
+++ b/pkgs/by-name/fi/fish/package.nix
@@ -152,13 +152,13 @@ let
 in
 stdenv.mkDerivation (finalAttrs: {
   pname = "fish";
-  version = "4.0.1";
+  version = "4.0.2";
 
   src = fetchFromGitHub {
     owner = "fish-shell";
     repo = "fish-shell";
     tag = finalAttrs.version;
-    hash = "sha256-Mj4v2ubYr4ufs7aU/1AdY239byiCJHKXam64af/VO3U=";
+    hash = "sha256-UpoZPipXZbzLWCOXzDjfyTDrsKyXGbh3Rkwj5IeWeY4=";
   };
 
   env = {
@@ -169,7 +169,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   cargoDeps = rustPlatform.fetchCargoVendor {
     inherit (finalAttrs) src patches;
-    hash = "sha256-4kqBrpeneCpF0WohP1ZArKrV3duHAE01XA5+GT9f56w=";
+    hash = "sha256-FkJB33vVVz7Kh23kfmjQDn61X2VkKLG9mUt8f3TrCHg=";
   };
 
   patches = [
@@ -188,10 +188,6 @@ stdenv.mkDerivation (finalAttrs: {
     # * <https://github.com/LnL7/nix-darwin/issues/122>
     # * <https://github.com/fish-shell/fish-shell/issues/7142>
     ./nix-darwin-path.patch
-
-    # remove 4.0.2
-    # https://github.com/fish-shell/fish-shell/issues/11254
-    ./1d78c8bd4295262a3118f478e6b3a7c7536fa282.patch
   ];
 
   # Fix FHS paths in tests


Reviews:
user: login: drupol
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-20T22:16:15Z
user: login: SigmaSquadron
body: ```console
$ ./results/fish-x86_64-linux/bin/fish --version
fish, version 4.0.2
```

## `nixpkgs-review` result

Generated using [`nixpkgs-review`](https://github.com/Mic92/nixpkgs-review).

Command: `nixpkgs-review pr 400349`

---
### `x86_64-linux`
<details>
  <summary>:x: 1 package failed to build:</summary>
  <ul>
    <li><details><summary>fishPlugins.pure</summary>

```
pure> Running phase: checkPhase
pure> TAP version 13
pure> # /build/source/tests/_pure.test.fish
pure> ok 1 configure: pure_version
pure> ok 2 configure: pure_symbol_prompt
pure> ok 3 configure: pure_symbol_reverse_prompt
pure> ok 4 configure: pure_reverse_prompt_symbol_in_vimode
pure> ok 5 configure: pure_enable_git
pure> ok 6 configure: pure_symbol_git_unpulled_commits
pure> ok 7 configure: pure_symbol_git_unpushed_commits
pure> ok 8 configure: pure_symbol_git_dirty
pure> ok 9 configure: pure_symbol_git_stash
pure> ok 10 configure: pure_symbol_title_bar_separator
pure> ok 11 configure: pure_color_primary
pure> ok 12 configure: pure_color_info
pure> ok 13 configure: pure_color_mute
pure> ok 14 configure: pure_color_success
pure> ok 15 configure: pure_color_normal
pure> ok 16 configure: pure_color_danger
pure> ok 17 configure: pure_color_light
pure> ok 18 configure: pure_color_warning
pure> ok 19 configure: pure_color_command_duration
pure> ok 20 configure: pure_color_current_directory
pure> ok 21 configure: pure_color_git_unpushed_commits
pure> ok 22 configure: pure_color_git_unpulled_commits
pure> ok 23 configure: pure_color_git_branch
pure> ok 24 configure: pure_color_git_dirty
pure> ok 25 configure: pure_color_git_stash
pure> ok 26 configure: pure_color_hostname
pure> ok 27 configure: pure_color_at_sign
pure> ok 28 configure: pure_color_username_normal
pure> ok 29 configure: pure_color_username_root
pure> ok 30 configure: pure_color_prompt_on_error
pure> ok 31 configure: pure_color_prompt_on_success
pure> ok 32 configure: pure_show_jobs
pure> ok 33 configure: pure_color_jobs
pure> ok 34 configure: pure_show_system_time
pure> ok 35 configure: pure_color_system_time
pure> ok 36 configure: pure_enable_virtualenv
pure> ok 37 configure: pure_symbol_virtualenv_prefix
pure> ok 38 configure: pure_color_virtualenv
pure> ok 39 configure: pure_enable_aws_profile
pure> ok 40 configure: pure_symbol_aws_profile_prefix
pure> ok 41 configure: pure_color_aws_profile
pure> ok 42 configure: pure_begin_prompt_with_current_directory
pure> ok 43 configure: pure_separate_prompt_on_error
pure> ok 44 configure: pure_threshold_command_duration
pure> ok 45 configure: pure_show_subsecond_command_duration
pure> ok 46 configure: pure_color_command_duration
pure> ok 47 configure: pure_check_for_new_release
pure> ok 48 configure: pure_show_prefix_root_prompt
pure> ok 49 configure: pure_symbol_prefix_root_prompt
pure> ok 50 configure: pure_color_prefix_root_prompt
pure> ok 51 configure: pure_enable_single_line_prompt
pure> ok 52 configure: pure_enable_container_detection
pure> ok 53 configure: pure_symbol_container_prefix
pure> ok 54 configure: pure_symbol_ssh_prefix
pure> ok 55 configure: pure_enable_k8s
pure> ok 56 configure: pure_symbol_k8s_prefix
pure> ok 57 configure: pure_color_k8s_prefix
pure> ok 58 configure: pure_color_k8s_context
pure> ok 59 configure: pure_color_k8s_namespace
pure> ok 60 configure: pure_truncate_prompt_current_directory_keeps
pure> ok 61 configure: pure_truncate_window_title_current_directory_keeps
pure> ok 62 configure: pure_enable_nixdevshell
pure> ok 63 configure: pure_symbol_nixdevshell_prefix
pure> ok 64 configure: pure_color_nixdevshell_prefix
pure> ok 65 configure: pure_color_nixdevshell_symbol
pure> # /build/source/tests/_pure_check_availability.test.fish
pure> ok 66 _pure_check_availability: output help message when command is missing
pure> ok 67 _pure_check_availability: exit with failure when command is missing
pure> ok 68 _pure_check_availability: exit with success when command is available
pure> # /build/source/tests/_pure_check_for_new_release.test.fish
pure> ok 69 _pure_check_for_new_release: is disabled
pure> ok 70 _pure_check_for_new_release: nothing when same as latest
pure> ok 71 _pure_check_for_new_release: show fisher command to install when enable
pure> ok 72 _pure_check_for_new_release: extract release version from JSON
pure> # /build/source/tests/_pure_detect_container_by_cgroup_method.test.fish
pure> ok 73 _pure_detect_container_by_cgroup_method: false for host OS
pure> ok 74 _pure_detect_container_by_cgroup_method: true for Docker's container
pure> ok 75 _pure_detect_container_by_cgroup_method: true for LXC/LXD's container (using namespace detail)
pure> ok 76 _pure_detect_container_by_cgroup_method: true for LXC/LXD's container (using environment variable)
pure> # /build/source/tests/_pure_detect_container_by_pid_method.test.fish
pure> ok 77 _pure_detect_container_by_pid_method: ignored when /proc/*/scheg is missing
pure> ok 78 _pure_detect_container_by_pid_method: when /proc/*/scheg exists
pure> ok 79 _pure_detect_container_by_pid_method: false when detecting init in /proc/1/sched
pure> ok 80 _pure_detect_container_by_pid_method: false when detecting systemd in /proc/1/sched
pure> ok 81 _pure_detect_container_by_pid_method: true when 1st process is neither systemd nor init in /proc/1/sched
pure> # /build/source/tests/_pure_format_time.test.fish
pure> ok 82 _pure_format_time: throws error on negative time
pure> ok 83 _pure_format_time: returns nothing if duration is below thresold time
pure> ok 84 _pure_format_time: format 1s to human
pure> ok 85 _pure_format_time: format 1050ms to human (show milliseconds)
pure> ok 86 _pure_format_time: format 60s as a minutes to human
pure> ok 87 _pure_format_time: format 59 minutes to human
pure> ok 88 _pure_format_time: format 60min as an hour to human
pure> ok 89 _pure_format_time: format 23 hours to human
pure> ok 90 _pure_format_time: format 24 hours as a day to human
pure> ok 91 _pure_format_time: format days to human
pure> ok 92 _pure_format_time: format complex duration to human
pure> ok 93 _pure_format_time_subseconds: empty when below threshold
pure> ok 94 _pure_format_time_subseconds: show subsecond when above threshold
pure> ok 95 _pure_format_time_subseconds: keep precision with zero-ending
pure> # /build/source/tests/_pure_get_prompt_symbol.test.fish
pure> ok 96 _pure_get_prompt_symbol: get default symbol ❯
pure> ok 97 _pure_get_prompt_symbol: get default symbol ❯ when key binding is default
pure> ok 98 _pure_get_prompt_symbol: get default symbol ❯ when bind mode is default
pure> ok 99 _pure_get_prompt_symbol: get default symbol ❯ when VI key binding and in insert mode
pure> ok 100 _pure_get_prompt_symbol: get default symbol ❯ when VI key binding and in replace mode
pure> ok 101 _pure_get_prompt_symbol: get reverse symbol ❮ when VI key binding and not in insert mode or replace mode
pure> ok 102 _pure_get_prompt_symbol: get reverse symbol ❮ when hybrid key binding and not in insert mode or replace mode
pure> # /build/source/tests/_pure_init.test.fish
pure> ok 103 init: _pure_fresh_session
pure> ok 104 init: VIRTUAL_ENV_DISABLE_PROMPT
pure> ok 105 pure_enable_container_detection: feature is disabled
pure> ok 106 pure_enable_container_detection: feature is enabled
pure> ok 107 _pure_is_inside_container: true for Github Action on Ubuntu
pure> ok 108 _pure_is_inside_container: detect with  variable
pure> ok 109 _pure_is_inside_container: returns false as default behavior
pure> ok 110 _pure_is_inside_container: detect with pid method
pure> ok 111 _pure_is_inside_container: detect with cgroup method
pure> # /build/source/tests/_pure_is_single_line_prompt.test.fish
pure> ok 112 _pure_is_single_line_prompt: fail when unset
pure> ok 113 _pure_is_single_line_prompt: fail when not disable
pure> ok 114 _pure_is_single_line_prompt: succeed when enable
pure> # /build/source/tests/_pure_k8s_context.test.fish
pure> ok 115 _pure_k8s_context: return context
pure> ok 116 _pure_k8s_context: call `kubectl config current-context`
pure> # /build/source/tests/_pure_k8s_namespace.test.fish
pure> ok 117 _pure_k8s_namespace: return context
pure> ok 118 _pure_k8s_namespace: call `kubectl config view…`
pure> ok 119 _pure_k8s_namespace: return default when no namespace is set
pure> # /build/source/tests/_pure_parse_directory.test.fish
pure> ok 120 _pure_parse_directory: returns current directory
pure> ok 121 _pure_parse_directory: replaces $HOME by ~
pure> ok 122 _pure_parse_directory: shortens directory in prompt
pure> ok 123 _pure_parse_directory: shorten current directory
pure> ok 124 _pure_parse_directory: truncate 1, keeps only last directory name from current directory path
pure> ok 125 _pure_parse_directory: truncate n last component from current directory path
pure> ok 126 _pure_parse_directory: truncate 0, keeps full current directory path
pure> # /build/source/tests/_pure_parse_git_branch.test.fish
pure> ok 127 _pure_parse_git_branch: returns current branch
pure> ok 128 _pure_parse_git_branch: returns number of commits behind current branch
pure> # /build/source/tests/_pure_place_iterm2_prompt_mark.test.fish
pure> ok 129 _pure_place_iterm2_prompt_mark: no iterm2 prompt mark when NOT in iTerm
pure> ok 130 _pure_place_iterm2_prompt_mark: shows iterm2 prompt mark in iTerm
pure> # /build/source/tests/_pure_prefix_root_prompt.test.fish
pure> ok 131 _pure_prefix_root_prompt: is empty for unprivileged user
pure> ok 132 _pure_prefix_root_prompt: is shown for `root` user
pure> ok 133 _pure_prefix_root_prompt: colorize root prefix symbol
pure> ok 134 _pure_prefix_root_prompt: require flag
pure> # /build/source/tests/_pure_print_prompt.test.fish
pure> ok 135 _pure_print_prompt: returns nothing when no argument provided
pure> ok 136 _pure_print_prompt: trims prompt left side
pure> ok 137 _pure_print_prompt: ignores color change argument
pure> ok 138 _pure_print_prompt: allow colored argument
pure> ok 139 _pure_print_prompt: multiple arguments
pure> ok 140 _pure_print_prompt: multiple arguments with colors
pure> # /build/source/tests/_pure_print_prompt_rows.test.fish
pure> ok 141 _pure_print_prompt_rows: end with newline by default
pure> ok 142 _pure_print_prompt_rows: end WITHOUT newline when compact-prompt is enable
pure> # /build/source/tests/_pure_prompt.test.fish
pure> ok 143 _pure_prompt: print prompt after succeeding command
pure> ok 144 _pure_prompt: print prompt after failing command
pure> ok 145 _pure_prompt: print root prefix
pure> ok 146 _pure_prompt: no space before symbol in 2-lines prompt
pure> ok 147 _pure_prompt: space before symbol in 1-line prompt
pure> # /build/source/tests/_pure_prompt_aws_profile.test.fish
pure> ok 148 _pure_prompt_aws_profile: ensure default behaviour has no error
pure> ok 149 _pure_prompt_aws_profile: ensure default behaviour print nothing when no AWS variables
pure> ok 150 _pure_prompt_aws_profile: print AWS_VAULT when present
pure> ok 151 _pure_prompt_aws_profile: print AWS_PROFILE when present
pure> ok 152 _pure_prompt_aws_profile: print only AWS_VAULT when vault and profile are present
pure> # /build/source/tests/_pure_prompt_beginning.test.fish
pure> ok 153 _pure_prompt_beginning: clear line before printing prompt
pure> # /build/source/tests/_pure_prompt_command_duration.test.fish
pure> ok 154 _pure_prompt_command_duration: hide command duration when it's zero
pure> ok 155 _pure_prompt_command_duration: displays command duration when non-zero
pure> ok 156 _pure_prompt_command_duration: displays command duration with ms when non-zero
pure> # /build/source/tests/_pure_prompt_container.test.fish
pure> ok 157 _pure_prompt_container: print nothing when outside a container
pure> ok 158 _pure_prompt_container: check is inside a container
pure> # /build/source/tests/_pure_prompt_current_folder.test.fish
pure> ok 159 _pure_prompt_current_folder: fails if no argument given
pure> ok 160 _pure_prompt_current_folder: returns current folder
pure> # /build/source/tests/_pure_prompt_ending.test.fish
pure> ok 161 _pure_prompt_ending: reset color to normal
pure> # /build/source/tests/_pure_prompt_first_line.test.fish
pure> ok 162 _pure_prompt_first_line: print current directory, git, user@hostname (ssh-only), command duration
pure> ok 163 _pure_prompt_first_line: print user@hostname (ssh-only), current directory, git, command duration
pure> ok 164 _pure_prompt_first_line: show kubernetes context and namespace
pure> # /build/source/tests/_pure_prompt_git.test.fish
pure> ok 165 _pure_prompt_git: fails when git is missing
pure> ok 166 _pure_prompt_git: ignores directory that are not git repository
pure> ok 167 _pure_prompt_git: activates on git repository
pure> ok 168 _pure_prompt_git: activates on dirty repository
pure> ok 169 _pure_prompt_git: activates on repository with upstream changes
pure> ok 170 _pure_prompt_git: returns an  string when pure_enable_git is false
pure> # /build/source/tests/_pure_prompt_git_branch.test.fish
pure> ok 171 _pure_prompt_git_branch: show branch name
pure> ok 172 _pure_prompt_git_branch: colorize branch name
pure> # /build/source/tests/_pure_prompt_git_dirty.test.fish
pure> ok 173 _pure_prompt_git_dirty: empty repo is not marked as dirty
pure> ok 174 _pure_prompt_git_dirty: untracked files in empty repo marked as dirty
pure> ok 175 _pure_prompt_git_dirty: staged files in empty repo marked as dirty
pure> ok 176 _pure_prompt_git_dirty: clean is not marked as dirty
pure> ok 177 _pure_prompt_git_dirty: untracked files mark git repo as dirty
pure> ok 178 _pure_prompt_git_dirty: staged files mark git repo as dirty
pure> ok 179 _pure_prompt_git_dirty: symbol is colorized
pure> # /build/source/tests/_pure_prompt_git_pending_commits.test.fish
pure> ok 180 _pure_prompt_git_pending_commits: print nothing when no upstream repo
pure> ok 181 _pure_prompt_git_pending_commits: show arrow UP when branch is AHEAD of upstream (need git push)
pure> ok 182 _pure_prompt_git_pending_commits: show arrow DOWN when branch is BEHIND upstream (need git pull)
pure> warning: You appear to have cloned an empty repository.
pure> ok 183 _pure_prompt_git_pending_commits: empty repo don't throw error
pure> ok 184 _pure_prompt_git_pending_commits: symbol is colorized
pure> # /build/source/tests/_pure_prompt_git_stash.test.fish
pure> ok 185 _pure_prompt_git_stash: no indicator when no stash
pure> ok 186 _pure_prompt_git_stash: stashing file shows indicator
pure> ok 187 _pure_prompt_git_stash: symbol is colorized
pure> # /build/source/tests/_pure_prompt_jobs.test.fish
pure> ok 188 _pure_prompt_jobs: no jobs indicator when there are no jobs
pure> ok 189 _pure_prompt_jobs: displays number of jobs in prompt
pure> ok 190 _pure_prompt_jobs: colorize jobs
pure> # /build/source/tests/_pure_prompt_k8s.test.fish
pure> ok 191 _pure_prompt_k8s: ensure default behaviour has no error
pure> ok 192 _pure_prompt_k8s: ensure default behaviour print nothing
pure> ok 193 _pure_prompt_k8s: print kubernetes context and namespace when present
pure> ok 194 _pure_prompt_k8s: print nothing when context is not set
pure> ok 195 _pure_prompt_k8s: print default when namespace is not set
pure> # /build/source/tests/_pure_prompt_new_line.test.fish
pure> ok 196 _pure_prompt_new_line: print prompt with newline for existing session
pure> ok 197 _pure_prompt_new_line: print prompt without newline for new session
pure> ok 198 _pure_prompt_new_line: print prompt without newline when single line prompt is enabled
pure> ok 199 _pure_prompt_new_line: print prompt with newline for existing session
pure> ok 200 _pure_prompt_new_line: clean prompt and print prompt with newline for existing session
pure> ok 201 _pure_prompt_new_line: clean prompt and print prompt with newline for existing session
pure> # /build/source/tests/_pure_prompt_nixdevshell.test.fish
pure> ok 202 _pure_prompt_nixdevshell: ensure default behaviour has no error
pure> ok 203 _pure_prompt_nixdevshell: ensure default behaviour print nothing
pure> ok 204 _pure_prompt_nixdevshell: hide prompt outside nix dev shell
pure> ok 205 _pure_prompt_nixdevshell: show prompt and status inside nix dev shell
pure> # /build/source/tests/_pure_prompt_ssh.test.fish
pure> ok 206 _pure_prompt_ssh: hide 'user@hostname' when working locally
pure> ok 207 _pure_prompt_ssh: displays 'user@hostname' when on SSH connection (based on $hostname variable)
pure> ok 208 _pure_prompt_ssh: displays ssh prefix when SSH connection detected
pure> # /build/source/tests/_pure_prompt_symbol.test.fish
pure> ok 209 _pure_prompt_symbol: colorizes prompt in green when last command succeed
pure> ok 210 _pure_prompt_symbol: colorizes prompt in red when last command failed
pure> ok 211 _pure_prompt_symbol: add a magenta prompt when pure_separate_prompt_on_error is enable and last command failed
pure> # /build/source/tests/_pure_prompt_system_time.test.fish
pure> ok 212 _pure_prompt_system_time: no system time when disable
pure> ok 213 _pure_prompt_system_time: displays system time when enable
pure> # /build/source/tests/_pure_prompt_vimode.test.fish
pure> ok 214 _pure_prompt_vimode: hides vimode prompt by default
pure> ok 215 _pure_prompt_vimode: show reverse prompt symbol when enable
pure> ok 216 _pure_prompt_vimode: show vi_mode when reverse prompt symbol is disable (for ≥v3.3.0)
pure> # /build/source/tests/_pure_prompt_virtualenv.test.fish
pure> ok 217 _pure_prompt_virtualenv: hide virtualenv prompt when not activated
pure> ok 218 _pure_prompt_virtualenv: hide virtualenv prompt when env variable is absent
pure> ok 219 _pure_prompt_virtualenv: displays virtualenv directory prompt
pure> ok 220 _pure_prompt_virtualenv: displays virtualenv symbol prefix
pure> ok 221 _pure_prompt_virtualenv: hides Conda virtualenv prompt when not activated
pure> ok 222 _pure_prompt_virtualenv: displays Conda virtualenv directory prompt
pure> ok 223 _pure_prompt_virtualenv: displays virtualenv symbol prefix
pure> # /build/source/tests/_pure_set_color.test.fish
pure> ok 224 _pure_set_color: set using a named color
pure> ok 225 _pure_set_color: empty value do not colorize
pure> ok 226 _pure_set_color: resolve variable value
pure> # /build/source/tests/_pure_set_default.test.fish
pure> ok 227 _pure_set_default: set value when variable doesn't exist on any scope
pure> ok 228 _pure_set_default: ignore value when variable already declared on UNIVERSAL scope
pure> ok 229 _pure_set_default: set value when declared on UNIVERSAL scope but is an empty string (i.e. prevent empty colors)
pure> ok 230 _pure_set_default: ignore value when variable already declared on GLOBAL scope
pure> ok 231 _pure_set_default: ignore value when declared on GLOBAL scope but is an empty string (i.e. prevent empty colors)
pure> # /build/source/tests/_pure_string_width.test.fish
pure> ok 232 _pure_string_width: measure empty string
pure> ok 233 _pure_string_width: measure raw string
pure> ok 234 _pure_string_width: measure ANSI-colored string
pure> ok 235 _pure_string_width: measure raw UTF-8 string
pure> ok 236 _pure_string_width: measure ANSI-colored UTF-8 string
pure> ok 237 _pure_string_width: accept double dash in string
pure> # /build/source/tests/_pure_user_at_host.test.fish
pure> ok 238 _pure_user_at_host: standard user
pure> ok 239 _pure_user_at_host: root user
pure> ok 240 _pure_user_at_host: colorize for normal user
pure> ok 241 _pure_user_at_host: colorize for root user
pure> # /build/source/tests/fish_greeting.test.fish
pure> ok 242 fish_greeting: succeeds
pure> ok 243 fish_greeting: returns nothing
pure> # /build/source/tests/fish_mode_prompt.test.fish
pure> ok 244 fish_mode_prompt: succeed
pure> ok 245 fish_mode_prompt: returns nothing
pure> # /build/source/tests/fish_prompt.test.fish
pure> ok 246 fish_prompt: succeed
pure> ok 247 fish_prompt: print segments
pure> ok 248 fish_prompt: change with exit status
pure> ok 249 fish_prompt: disable _pure_fresh_session
pure> ok 250 fish_prompt: use 2-lines prompt by default
pure> ok 251 fish_prompt: use 1-line compact-prompt
pure> # /build/source/tests/fish_title.test.fish
pure> not ok 252 fish_title: contains current directory and previous command
pure>   ---
pure>     operator: =
pure>     expected: '/tmp/current/directory: last-command - fish'
pure>     actual: '/tmp/current/directory: last-command - fish '
pure>     at: /build/source/tests/fish_title.test.fish:13
pure>   ...
pure> not ok 253 fish_title: contains current directory with an *empty* previous command
pure>   ---
pure>     operator: =
pure>     expected: '/tmp/current/directory - fish'
pure>     actual: '/tmp/current/directory - fish '
pure>     at: /build/source/tests/fish_title.test.fish:18
pure>   ...
pure> not ok 254 fish_title: contains current path without a previous command
pure>   ---
pure>     operator: =
pure>     expected: '/tmp/current/directory - fish'
pure>     actual: '/tmp/current/directory - fish '
pure>     at: /build/source/tests/fish_title.test.fish:22
pure>   ...
pure> not ok 255 fish_title: contains shorten (1) current path
pure>   ---
pure>     operator: =
pure>     expected: '/t/c/directory - fish'
pure>     actual: '/t/c/directory - fish '
pure>     at: /build/source/tests/fish_title.test.fish:27
pure>   ...
pure> not ok 256 fish_title: contains shorten (2) current path
pure>   ---
pure>     operator: =
pure>     expected: '/tm/cu/directory - fish'
pure>     actual: '/tm/cu/directory - fish '
pure>     at: /build/source/tests/fish_title.test.fish:32
pure>   ...
pure> # /build/source/tests/migration-to-4.0.0.test.fish
pure> ok 257 migrate all variables
pure> # /build/source/tests/pure_tools_versions-compare.test.fish
pure> ok 258 fish_version_below: fails on itself
pure> ok 259 fish_version_below: succeed when FISH_VERSION is lower
pure> ok 260 fish_version_below: fails when FISH_VERSION is higher
pure> ok 261 fish_version_at_least: succeed on itself
pure> ok 262 fish_version_at_least: fails when FISH_VERSION is lower
pure> ok 263 fish_version_at_least: succeed when FISH_VERSION is higher
pure> 
pure> 1..263
pure> # pass 258
pure> # fail 5
```

  </details></li>
</ul>
</details>
<details>
  <summary>:white_check_mark: 27 packages built:</summary>
  <ul>
    <li>bat-extras.batdiff</li>
    <li>bat-extras.batgrep</li>
    <li>bat-extras.batman</li>
    <li>bat-extras.batpipe</li>
    <li>bat-extras.batwatch</li>
    <li>bat-extras.prettybat</li>
    <li>direnv</li>
    <li>fish</li>
    <li>fish-lsp</li>
    <li>fish.doc</li>
    <li>fishMinimal</li>
    <li>fishMinimal.doc</li>
    <li>fishPlugins.bass</li>
    <li>fishPlugins.done</li>
    <li>fishPlugins.fishtape</li>
    <li>fishPlugins.fishtape_3</li>
    <li>fishPlugins.fzf-fish</li>
    <li>fishPlugins.humantime-fish</li>
    <li>kitty</li>
    <li>kitty.kitten</li>
    <li>kitty.shell_integration</li>
    <li>kitty.terminfo</li>
    <li>mise</li>
    <li>oh-my-fish</li>
    <li>swaynotificationcenter</li>
    <li>tests.writers.bin.fish</li>
    <li>tests.writers.simple.fish</li>
  </ul>
</details>
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-21T02:05:59Z
user: login: adamcstephens
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-21T02:18:57Z
user: login: drupol
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-21T05:13:42Z
user: login: r-vdp
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-21T08:49:29Z
user: login: drupol
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-21T08:52:30Z
user: login: adamcstephens
body: aarch64-linux tests
/nix/store/pr40kgrm4wwlif0c4cnkvkffwkbc2gdy-test-web-config
/nix/store/zm7dfm0sln0cnzvfrzf072nc43cx33wf-vm-test-run-fish
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-21T14:40:53Z

Review comments:
diff_hunk: @@ -188,10 +188,6 @@ stdenv.mkDerivation (finalAttrs: {
     # * <https://github.com/LnL7/nix-darwin/issues/122>
     # * <https://github.com/fish-shell/fish-shell/issues/7142>
     ./nix-darwin-path.patch
-
-    # remove 4.0.2
-    # https://github.com/fish-shell/fish-shell/issues/11254
-    ./1d78c8bd4295262a3118f478e6b3a7c7536fa282.patch
path: pkgs/by-name/fi/fish/package.nix
user: login: adamcstephens
body: You should delete this file too :)
created_at: 2025-04-21T02:18:57Z
author_association: CONTRIBUTOR
diff_hunk: @@ -188,10 +188,6 @@ stdenv.mkDerivation (finalAttrs: {
     # * <https://github.com/LnL7/nix-darwin/issues/122>
     # * <https://github.com/fish-shell/fish-shell/issues/7142>
     ./nix-darwin-path.patch
-
-    # remove 4.0.2
-    # https://github.com/fish-shell/fish-shell/issues/11254
-    ./1d78c8bd4295262a3118f478e6b3a7c7536fa282.patch
path: pkgs/by-name/fi/fish/package.nix
user: login: drupol
body: argh ! Nice catch !!!
created_at: 2025-04-21T05:13:42Z
author_association: CONTRIBUTOR
diff_hunk: @@ -188,10 +188,6 @@ stdenv.mkDerivation (finalAttrs: {
     # * <https://github.com/LnL7/nix-darwin/issues/122>
     # * <https://github.com/fish-shell/fish-shell/issues/7142>
     ./nix-darwin-path.patch
-
-    # remove 4.0.2
-    # https://github.com/fish-shell/fish-shell/issues/11254
-    ./1d78c8bd4295262a3118f478e6b3a7c7536fa282.patch
path: pkgs/by-name/fi/fish/package.nix
user: login: r-vdp
body: Right, done! 
created_at: 2025-04-21T08:49:29Z
author_association: CONTRIBUTOR

PR comments:
user: login: winterqt
created_at: 2025-04-21T02:12:32Z
body: Looks like `fishPlugins.pure` has been broken since the 4.0.0 bump, so that looks alright to ignore.

Will test this further later today, thanks @r-vdp!
author_association: MEMBER
user: login: adamcstephens
created_at: 2025-04-21T14:41:24Z
body: You may want to consider PR'ing from your own fork. :)
author_association: CONTRIBUTOR