1# 2# SPDX-License-Identifier: BSD-2-Clause 3# 4# Copyright (c) 2023 Christos Margiolis <christos@FreeBSD.org> 5# 6 7get_months_fmt() 8{ 9 rm -f in 10 for i in $(seq 12 1); do 11 printf "2000-%02d-01\n" ${i} | xargs -I{} \ 12 date -jf "%Y-%m-%d" {} "${1}" >>in 13 done 14} 15 16atf_test_case monthsort_english 17monthsort_english_head() 18{ 19 atf_set "descr" "Test the -M flag with English months" 20} 21monthsort_english_body() 22{ 23 export LC_TIME="en_US.UTF-8" 24 25 cat >expout <<EOF 26January 27February 28March 29April 30May 31June 32July 33August 34September 35October 36November 37December 38EOF 39 40 # No need to test the rest of the formats (%b and %OB) as %b is a 41 # substring of %B and %OB is the same as %B. 42 get_months_fmt '+%B' 43 atf_check -o file:expout sort -M in 44} 45 46atf_test_case monthsort_all_formats_greek 47monthsort_all_formats_greek_head() 48{ 49 atf_set "descr" "Test the -M flag with all possible Greek month formats" 50} 51monthsort_all_formats_greek_body() 52{ 53 # Test with the Greek locale, since, unlike English, the 54 # abbreviation/full-name and standalone formats are different. 55 export LC_TIME="el_GR.UTF-8" 56 57 # Abbreviation format (e.g Jan, ������) 58 cat >expout <<EOF 59������ 60������ 61������ 62������ 63������ 64�������� 65�������� 66������ 67������ 68������ 69������ 70������ 71EOF 72 get_months_fmt '+%b' 73 atf_check -o file:expout sort -M in 74 75 # Full-name format (e.g January, ��������������������) 76 cat >expout <<EOF 77�������������������� 78���������������������� 79�������������� 80���������������� 81���������� 82�������������� 83�������������� 84������������������ 85���������������������� 86������������������ 87������������������ 88�������������������� 89EOF 90 get_months_fmt '+%B' 91 atf_check -o file:expout sort -M in 92 93 # Standalone format (e.g January, ��������������������) 94 cat >expout <<EOF 95�������������������� 96���������������������� 97�������������� 98���������������� 99���������� 100�������������� 101�������������� 102������������������ 103���������������������� 104������������������ 105������������������ 106�������������������� 107EOF 108 get_months_fmt '+%OB' 109 atf_check -o file:expout sort -M in 110} 111 112atf_test_case monthsort_mixed_formats_greek 113monthsort_mixed_formats_greek_head() 114{ 115 atf_set "descr" "Test the -M flag with mixed Greek month formats" 116} 117monthsort_mixed_formats_greek_body() 118{ 119 export LC_TIME="el_GR.UTF-8" 120 121 cat >in <<EOF 122�������������������� 123������������������ 124������ 125������ 126������ 127�������������� 128�������������� 129���������� 130���������������� 131�������������� 132���������������������� 133�������������������� 134EOF 135 136 cat >expout <<EOF 137�������������������� 138���������������������� 139�������������� 140���������������� 141���������� 142�������������� 143�������������� 144������ 145������ 146������ 147������������������ 148�������������������� 149EOF 150 151 atf_check -o file:expout sort -M in 152} 153 154atf_init_test_cases() 155{ 156 atf_add_test_case monthsort_english 157 atf_add_test_case monthsort_all_formats_greek 158 atf_add_test_case monthsort_mixed_formats_greek 159} 160