(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"test date parsing and printing">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TEST_DATE_NOW) op: Equal rhs: {(1251660000)} spids: [17] ) ] spids: [17] ) terminator: <Op_Semi ";"> ) (C {(export)} {(TEST_DATE_NOW)}) (FuncDef name: check_relative body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:t) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name "$TEST_DATE_NOW")}) right: (ArithWord w:{($ VSub_Number "$1")}) ) spids: [34 41] ) } spids: [33] ) ] spids: [33] ) (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name "$t") (" -> ") ($ VSub_Number "$2"))}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[52])] ) (C {(test_expect_) (BracedVarSub token: <VSub_Number 3> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(success)}) spids: [57 61] ) } {(DQ ("relative date (") ($ VSub_Number "$2") (")"))} { (DQ ("\n") ("\ttest-date relative ") ($ VSub_Name "$t") (" >actual &&\n") ("\ttest_i18ncmp expect actual\n") ("\t") ) } ) ] spids: [30] ) spids: [26 29] ) (C {(check_relative)} {(5)} {(SQ <"5 seconds ago">)}) (C {(check_relative)} {(300)} {(SQ <"5 minutes ago">)}) (C {(check_relative)} {(18000)} {(SQ <"5 hours ago">)}) (C {(check_relative)} {(432000)} {(SQ <"5 days ago">)}) (C {(check_relative)} {(1728000)} {(SQ <"3 weeks ago">)}) (C {(check_relative)} {(13000000)} {(SQ <"5 months ago">)}) (C {(check_relative)} {(37500000)} {(SQ <"1 year, 2 months ago">)}) (C {(check_relative)} {(55188000)} {(SQ <"1 year, 9 months ago">)}) (C {(check_relative)} {(630000000)} {(SQ <"20 years ago">)}) (C {(check_relative)} {(31449600)} {(SQ <"12 months ago">)}) (C {(check_relative)} {(62985600)} {(SQ <"2 years ago">)}) (FuncDef name: check_show body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:format) op: Equal rhs: {($ VSub_Number "$1")} spids: [178] ) ] spids: [178] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:time) op: Equal rhs: {($ VSub_Number "$2")} spids: [182] ) ] spids: [182] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:expect) op: Equal rhs: {($ VSub_Number "$3")} spids: [186] ) ] spids: [186] ) (C {(test_expect_success)} {($ VSub_Number "$4")} {(DQ ("show date (") ($ VSub_Name "$format") (":") ($ VSub_Name "$time") (")"))} { (SQ <"\n"> <"\t\techo \"$time -> $expect\" >expect &&\n"> <"\t\ttest-date show:$format \"$time\" >actual &&\n"> <"\t\ttest_cmp expect actual\n"> <"\t"> ) } ) ] spids: [175] ) spids: [170 174] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TIME) op: Equal rhs: {(SQ <"1466000000 +0200">)} spids: [216] ) ] spids: [216] ) (C {(check_show)} {(iso8601)} {(DQ ($ VSub_Name "$TIME"))} {(SQ <"2016-06-15 16:13:20 +0200">)}) (C {(check_show)} {(iso8601-strict)} {(DQ ($ VSub_Name "$TIME"))} {(SQ <"2016-06-15T16:13:20+02:00">)}) (C {(check_show)} {(rfc2822)} {(DQ ($ VSub_Name "$TIME"))} {(SQ <"Wed, 15 Jun 2016 16:13:20 +0200">)}) (C {(check_show)} {(short)} {(DQ ($ VSub_Name "$TIME"))} {(SQ <2016-06-15>)}) (C {(check_show)} {(default)} {(DQ ($ VSub_Name "$TIME"))} {(SQ <"Wed Jun 15 16:13:20 2016 +0200">)}) (C {(check_show)} {(raw)} {(DQ ($ VSub_Name "$TIME"))} {(SQ <"1466000000 +0200">)}) (C {(check_show)} {(unix)} {(DQ ($ VSub_Name "$TIME"))} {(SQ <1466000000>)}) (C {(check_show)} {(iso-local)} {(DQ ($ VSub_Name "$TIME"))} {(SQ <"2016-06-15 14:13:20 +0000">)}) (C {(check_show)} {(raw-local)} {(DQ ($ VSub_Name "$TIME"))} {(SQ <"1466000000 +0000">)}) (C {(check_show)} {(unix-local)} {(DQ ($ VSub_Name "$TIME"))} {(SQ <1466000000>)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FUTURE) op: Equal rhs: {(DQ ("5758122296 -0400"))} spids: [345] ) ] spids: [345] ) (C {(check_show)} {(iso)} {(DQ ($ VSub_Name "$FUTURE"))} {(DQ ("2152-06-19 18:24:56 -0400"))} {(LONG_IS_64BIT)} ) (C {(check_show)} {(iso-local)} {(DQ ($ VSub_Name "$FUTURE"))} {(DQ ("2152-06-19 22:24:56 +0000"))} {(LONG_IS_64BIT)} ) (FuncDef name: check_parse body: (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Number "$1") (" -> ") ($ VSub_Number "$2"))}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[394])] ) (C {(test_expect_) (BracedVarSub token: <VSub_Number 4> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(success)}) spids: [399 403] ) } { (DQ ("parse date (") ($ VSub_Number "$1") (BracedVarSub token: <VSub_Number 3> suffix_op: (StringUnary op_id: VTest_ColonPlus arg_word: {(" TZ=") ($ VSub_Number "$3")} ) spids: [408 413] ) (")") ) } { (DQ ("\n") ("\tTZ=") (BracedVarSub token: <VSub_Number 3> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{($ VSub_Name "$TZ")}) spids: [420 424] ) (" test-date parse '") ($ VSub_Number "$1") ("' >actual &&\n") ("\ttest_cmp expect actual\n") ("\t") ) } ) ] spids: [383] ) spids: [379 382] ) (C {(check_parse)} {(2008)} {(bad)}) (C {(check_parse)} {(2008-02)} {(bad)}) (C {(check_parse)} {(2008-02-14)} {(bad)}) (C {(check_parse)} {(SQ <"2008-02-14 20:30:45">)} {(SQ <"2008-02-14 20:30:45 +0000">)}) (C {(check_parse)} {(SQ <"2008-02-14 20:30:45 -0500">)} {(SQ <"2008-02-14 20:30:45 -0500">)}) (C {(check_parse)} {(SQ <"2008-02-14 20:30:45 -0015">)} {(SQ <"2008-02-14 20:30:45 -0015">)}) (C {(check_parse)} {(SQ <"2008-02-14 20:30:45 -5">)} {(SQ <"2008-02-14 20:30:45 +0000">)}) (C {(check_parse)} {(SQ <"2008-02-14 20:30:45 -5:">)} {(SQ <"2008-02-14 20:30:45 +0000">)}) (C {(check_parse)} {(SQ <"2008-02-14 20:30:45 -05">)} {(SQ <"2008-02-14 20:30:45 -0500">)}) (C {(check_parse)} {(SQ <"2008-02-14 20:30:45 -:30">)} {(SQ <"2008-02-14 20:30:45 +0000">)}) (C {(check_parse)} {(SQ <"2008-02-14 20:30:45 -05:00">)} {(SQ <"2008-02-14 20:30:45 -0500">)}) (C {(check_parse)} {(SQ <"2008-02-14 20:30:45">)} {(SQ <"2008-02-14 20:30:45 -0500">)} {(EST5)}) (FuncDef name: check_approxidate body: (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Number "$1") (" -> ") ($ VSub_Number "$2") (" +0000"))}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[562])] ) (C {(test_expect_) (BracedVarSub token: <VSub_Number 3> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(success)}) spids: [567 571] ) } {(DQ ("parse approxidate (") ($ VSub_Number "$1") (")"))} { (DQ ("\n") ("\ttest-date approxidate '") ($ VSub_Number "$1") ("' >actual &&\n") ("\ttest_cmp expect actual\n") ("\t") ) } ) ] spids: [550] ) spids: [546 549] ) (C {(check_approxidate)} {(now)} {(SQ <"2009-08-30 19:20:00">)}) (C {(check_approxidate)} {(SQ <"5 seconds ago">)} {(SQ <"2009-08-30 19:19:55">)}) (C {(check_approxidate)} {(5.seconds.ago)} {(SQ <"2009-08-30 19:19:55">)}) (C {(check_approxidate)} {(10.minutes.ago)} {(SQ <"2009-08-30 19:10:00">)}) (C {(check_approxidate)} {(yesterday)} {(SQ <"2009-08-29 19:20:00">)}) (C {(check_approxidate)} {(3.days.ago)} {(SQ <"2009-08-27 19:20:00">)}) (C {(check_approxidate)} {(3.weeks.ago)} {(SQ <"2009-08-09 19:20:00">)}) (C {(check_approxidate)} {(3.months.ago)} {(SQ <"2009-05-30 19:20:00">)}) (C {(check_approxidate)} {(2.years.3.months.ago)} {(SQ <"2007-05-30 19:20:00">)}) (C {(check_approxidate)} {(SQ <"6am yesterday">)} {(SQ <"2009-08-29 06:00:00">)}) (C {(check_approxidate)} {(SQ <"6pm yesterday">)} {(SQ <"2009-08-29 18:00:00">)}) (C {(check_approxidate)} {(SQ <"3:00">)} {(SQ <"2009-08-30 03:00:00">)}) (C {(check_approxidate)} {(SQ <"15:00">)} {(SQ <"2009-08-30 15:00:00">)}) (C {(check_approxidate)} {(SQ <"noon today">)} {(SQ <"2009-08-30 12:00:00">)}) (C {(check_approxidate)} {(SQ <"noon yesterday">)} {(SQ <"2009-08-29 12:00:00">)}) (C {(check_approxidate)} {(SQ <"last tuesday">)} {(SQ <"2009-08-25 19:20:00">)}) (C {(check_approxidate)} {(SQ <"July 5th">)} {(SQ <"2009-07-05 19:20:00">)}) (C {(check_approxidate)} {(SQ <06/05/2009>)} {(SQ <"2009-06-05 19:20:00">)}) (C {(check_approxidate)} {(SQ <06.05.2009>)} {(SQ <"2009-05-06 19:20:00">)}) (C {(check_approxidate)} {(SQ <"Jun 6, 5AM">)} {(SQ <"2009-06-06 05:00:00">)}) (C {(check_approxidate)} {(SQ <"5AM Jun 6">)} {(SQ <"2009-06-06 05:00:00">)}) (C {(check_approxidate)} {(SQ <"6AM, June 7, 2009">)} {(SQ <"2009-06-07 06:00:00">)}) (C {(check_approxidate)} {(SQ <2008-12-01>)} {(SQ <"2008-12-01 19:20:00">)}) (C {(check_approxidate)} {(SQ <2009-12-01>)} {(SQ <"2009-12-01 19:20:00">)}) (C {(test_done)}) ] )