| # Copyright 2025-2026 Free Software Foundation, Inc. |
| # This program is free software; you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; either version 3 of the License, or |
| # (at your option) any later version. |
| # |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program. If not, see <http://www.gnu.org/licenses/>. |
| |
| # Check version_compare proc. |
| |
| proc eq { a b } { |
| with_test_prefix "$a == $b" { |
| gdb_assert { [version_compare $a == $b] } |
| gdb_assert { [version_compare $a <= $b] } |
| gdb_assert { [version_compare $a >= $b] } |
| gdb_assert { ![version_compare $a < $b] } |
| gdb_assert { ![version_compare $a > $b] } |
| } |
| } |
| |
| proc lt { a b } { |
| with_test_prefix "$a < $b" { |
| gdb_assert { [version_compare $a < $b] } |
| gdb_assert { [version_compare $a <= $b] } |
| gdb_assert { [version_compare $b > $a] } |
| gdb_assert { [version_compare $b >= $a] } |
| gdb_assert { ![version_compare $a == $b] } |
| gdb_assert { ![version_compare $b == $a] } |
| gdb_assert { ![version_compare $a > $b] } |
| gdb_assert { ![version_compare $a >= $b] } |
| gdb_assert { ![version_compare $b < $a] } |
| gdb_assert { ![version_compare $b <= $a] } |
| } |
| } |
| |
| # Equal, same length. |
| eq {1 0} {1 0} |
| |
| # Smaller than, same length. |
| lt {1 0} {1 1} |
| lt {1 1} {2 0} |
| |
| # Smaller than, different length. |
| lt {1 3} {2} |
| lt {1} {2 0} |
| |
| # The question how v1 and v1.0 relate to each other is not a trivial one. |
| # |
| # For instance, Python considers v1 == v1.0: |
| # $ test.py |
| # #!/usr/bin/python3 |
| # from packaging.version import parse |
| # v1_0 = parse("1.0") |
| # v1 = parse("1") |
| # print (v1 == v1_0) |
| # $ ./test.py |
| # True |
| # |
| # OTOH, version sort from coreutils considers v1 < v1.0: |
| # $ cat bla.txt |
| # 1.0 |
| # 1 |
| # $ sort -V bla.txt |
| # 1 |
| # 1.0 |
| # |
| # Proc version_compare seems to have taken the latter approach. |
| lt {1} {1 0} |