gitea源码

vercmp_test.go 789B

12345678910111213141516171819202122232425262728
  1. // Copyright 2025 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package arch
  4. import (
  5. "testing"
  6. "github.com/stretchr/testify/require"
  7. )
  8. func TestCompareVersions(t *testing.T) {
  9. // https://man.archlinux.org/man/vercmp.8.en
  10. checks := [][]string{
  11. {"1.0a", "1.0b", "1.0beta", "1.0p", "1.0pre", "1.0rc", "1.0", "1.0.a", "1.0.1"},
  12. {"1", "1.0", "1.1", "1.1.1", "1.2", "2.0", "3.0.0"},
  13. }
  14. for _, check := range checks {
  15. for i := 0; i < len(check)-1; i++ {
  16. require.Equal(t, -1, compareVersions(check[i], check[i+1]))
  17. require.Equal(t, 1, compareVersions(check[i+1], check[i]))
  18. }
  19. }
  20. require.Equal(t, 1, compareVersions("1.0-2", "1.0"))
  21. require.Equal(t, 0, compareVersions("0:1.0-1", "1.0"))
  22. require.Equal(t, 1, compareVersions("1:1.0-1", "2.0"))
  23. }