# Copyright 2025 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 . # 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}