all repos

clerk @ fc9cae1

missing tooling for ledger/hledger
50 files changed, 551 insertions(+), 112 deletions(-)
journal: refactor compatibility test runner
Author: Oleksandr Smirnov olexsmir@gmail.com
Committed at: 2026-05-23 17:52:23 +0300
Authored at: 2026-05-20 20:19:57 +0300
Change ID: lozuxzmqwurulskyzqqlmxnnnqxxrwot
Parent: cb14fd1
jump to
A journal/testdata/journals/actual-ledger-baseline-opt-lots-basis.dat
M tests/journal/actual-1ktxns-100accts.journal → journal/testdata/journals/actual-1ktxns-100accts.journal
M tests/journal/actual-accounttypes.journal → journal/testdata/journals/actual-accounttypes.journal
M tests/journal/actual-alias.journal → journal/testdata/journals/actual-alias.journal
M tests/journal/actual-borrowing.journal → journal/testdata/journals/actual-borrowing.journal
M tests/journal/actual-business.journal → journal/testdata/journals/actual-business.journal
M tests/journal/actual-goal-budget-1.journal → journal/testdata/journals/actual-goal-budget.journal
M tests/journal/actual-i18n-en.journal → journal/testdata/journals/actual-i18n-en.journal
M tests/journal/actual-ledger-input-divzero.dat → journal/testdata/journals/actual-ledger-input-divzero.dat
M tests/journal/actual-ledger-input-parsing.dat → journal/testdata/journals/actual-ledger-input-parsing.dat
M tests/journal/actual-ledger-input-sample.dat → journal/testdata/journals/actual-ledger-input-sample.dat
M tests/journal/actual-ledger-input-standard.dat → journal/testdata/journals/actual-ledger-input-standard.dat
M tests/journal/actual-ledger-input-transfer.dat → journal/testdata/journals/actual-ledger-input-transfer.dat
M tests/journal/actual-ledger-input-wow.dat → journal/testdata/journals/actual-ledger-input-wow.dat
M tests/journal/actual-multicurrency.journal → journal/testdata/journals/actual-multicurrency.journal
M tests/journal/actual-personal.journal → journal/testdata/journals/actual-personal.journal
M tests/journal/actual-quickstart.journal → journal/testdata/journals/actual-quickstart.journal
M tests/journal/actual-sample.journal → journal/testdata/journals/actual-sample.journal
M tests/journal/actual-sample2.journal → journal/testdata/journals/actual-sample2.journal
M tests/journal/actual-status.journal → journal/testdata/journals/actual-status.journal
M tests/journal/actual-templates.journal → journal/testdata/journals/actual-templates.journal
M tests/journal/actual-unicode.journal → journal/testdata/journals/actual-unicode.journal
M tests/journal/actual-vat.journal → journal/testdata/journals/actual-vat.journal
M tests/journal/apply-tag-block.dat → journal/testdata/journals/apply-tag-block.dat
M tests/journal/automated-posting-rule.dat → journal/testdata/journals/automated-posting-rule.dat
M tests/journal/basic-ledger.dat → journal/testdata/journals/basic-ledger.dat
M tests/journal/basic.journal → journal/testdata/journals/basic.journal
M tests/journal/broken-double-at.journal → journal/testdata/journals/broken-double-at.journal
M tests/journal/broken-rparen.journal → journal/testdata/journals/broken-rparen.journal
M tests/journal/broken-unknown-directive.journal → journal/testdata/journals/broken-unknown-directive.journal
M tests/journal/code-note.dat → journal/testdata/journals/code-note.dat
M tests/journal/commodity-space.dat → journal/testdata/journals/commodity-space.dat
M tests/journal/cost-balance-assertion.dat → journal/testdata/journals/cost-balance-assertion.dat
M tests/journal/directives-supported.journal → journal/testdata/journals/directives-supported.journal
M tests/journal/ext-hledger-i18n-no.journal → journal/testdata/journals/ext-hledger-i18n-no.journal
M tests/journal/ext-hledger-self-tracking-d.dat → journal/testdata/journals/ext-hledger-self-tracking-d.dat
M tests/journal/ext-hledger-status.journal → journal/testdata/journals/ext-hledger-status.journal
M tests/journal/ext-ledger-parsing.dat → journal/testdata/journals/ext-ledger-parsing.dat
M tests/journal/header-comments.journal → journal/testdata/journals/header-comments.journal
M tests/journal/inclusive-balance-star.journal → journal/testdata/journals/inclusive-balance-star.journal
M tests/journal/multicurrency-supported.journal → journal/testdata/journals/multicurrency-supported.journal
M tests/journal/periodic-basic.journal → journal/testdata/journals/periodic-basic.journal
M tests/journal/secondary-date-note.journal → journal/testdata/journals/secondary-date-note.journal
M tests/journal/status-basic.journal → journal/testdata/journals/status-basic.journal
M tests/journal/unicode-cjk-emoji.journal → journal/testdata/journals/unicode-cjk-emoji.journal
M tests/journal/unicode-cyrillic.journal → journal/testdata/journals/unicode-cyrillic.journal
M tests/journal/unicode-mixed-languages.journal → journal/testdata/journals/unicode-mixed-languages.journal
M tests/journal/validate.sh → journal/testdata/journals/validate.sh
M tests/journal/virtual-posting.dat → journal/testdata/journals/virtual-posting.dat
D tests/test.go
A journal/testdata/journals/actual-ledger-baseline-opt-lots-basis.dat
···
        
        1
        +; source: ledger/test/baseline/opt-lots_basis.test

      
        
        2
        +C 1.00s = 100c

      
        
        3
        +C 1.00G = 100s

      
        
        4
        +

      
        
        5
        +D 1.00G

      
        
        6
        +

      
        
        7
        +2006/03/14 Opening Balances

      
        
        8
        +    Assets:Tajer                1339829c

      
        
        9
        +    Assets:Gruulmorg             248720c

      
        
        10
        +    Equity:Gold

      
        
        11
        +

      
        
        12
        +2006/03/14 Auction House

      
        
        13
        +    Expenses:Fees:Auction          1428c

      
        
        14
        +    Expenses:Fees:Auction           768c

      
        
        15
        +    Expenses:Fees:Auction           612c

      
        
        16
        +    Expenses:Fees:Auction          4764c

      
        
        17
        +    Expenses:Fees:Auction          3372c

      
        
        18
        +    Expenses:Fees:Auction          1296c

      
        
        19
        +    Expenses:Fees:Auction          1332c

      
        
        20
        +    Expenses:Fees:Auction           660c

      
        
        21
        +    Expenses:Fees:Auction         10044c

      
        
        22
        +    Expenses:Fees:Auction          3588c

      
        
        23
        +    Expenses:Fees:Auction          1632c

      
        
        24
        +    Expenses:Fees:Auction          8388c

      
        
        25
        +    Expenses:Fees:Auction          9984c

      
        
        26
        +    Expenses:Fees:Auction          2316c

      
        
        27
        +    Assets:Tajer

      
        
        28
        +

      
        
        29
        +2006/03/14 Auction House

      
        
        30
        +    Assets:Tajer                 158860c

      
        
        31
        +    Equity:Gold

      
        
        32
        +

      
        
        33
        +2006/03/14 Auction House

      
        
        34
        +    Expenses:Fees:Auction          1320c

      
        
        35
        +    Assets:Tajer

      
        
        36
        +

      
        
        37
        +2006/03/14 Auction House

      
        
        38
        +    Assets:Tajer                  11496c

      
        
        39
        +    Equity:Gold

      
        
        40
        +

      
        
        41
        +2006/03/14 Auction House

      
        
        42
        +    Expenses:Fees:Auction          3216c

      
        
        43
        +    Assets:Tajer

      
        
        44
        +

      
        
        45
        +2006/03/14 Post

      
        
        46
        +    Expenses:Fees:Mail               30c

      
        
        47
        +    Assets:Gruulmorg

      
        
        48
        +

      
        
        49
        +2006/03/14 Auction House

      
        
        50
        +    Assets:Tajer                  34678c

      
        
        51
        +    Equity:Gold

      
        
        52
        +

      
        
        53
        +2006/03/14 Auction House

      
        
        54
        +    Expenses:Fees:Auction          2316c

      
        
        55
        +    Assets:Tajer

      
        
        56
        +

      
        
        57
        +2006/03/14 Auction House

      
        
        58
        +    Assets:Gruulmorg                  1G

      
        
        59
        +    Equity:Gold

      
        
        60
        +

      
        
        61
        +2006/03/14 Auction House

      
        
        62
        +    Assets:Tajer                  59389c

      
        
        63
        +    Equity:Gold

      
        
        64
        +

      
        
        65
        +2006/03/14 Post

      
        
        66
        +    Expenses:Fees:Mail              120c

      
        
        67
        +    Assets:Tajer

      
        
        68
        +

      
        
        69
        +2006/03/14 Player

      
        
        70
        +    Assets:Tajer                      3G

      
        
        71
        +    Equity:Gold

      
        
        72
        +

      
        
        73
        +2006/03/14 Player

      
        
        74
        +    Assets:Tajer                      6G

      
        
        75
        +    Equity:Gold

      
        
        76
        +

      
        
        77
        +2006/03/14 Auction House

      
        
        78
        +    Expenses:Items                   35s

      
        
        79
        +    Assets:Tajer

      
        
        80
        +

      
        
        81
        +2006/03/14 Auction House

      
        
        82
        +    Assets:Tajer:Items                  "Plans: Wildthorn Mail" 1 @ 125s

      
        
        83
        +    Assets:Tajer

      
        
        84
        +

      
        
        85
        +2006/03/14 Auction House

      
        
        86
        +    Assets:Bids                     259c

      
        
        87
        +    Assets:Bids                      45s

      
        
        88
        +    Assets:Bids                    4720c

      
        
        89
        +    Assets:Tajer

      
        
        90
        +

      
        
        91
        +2006/03/14 Post

      
        
        92
        +    Expenses:Fees:Mail              120c

      
        
        93
        +    Assets:Tajer

      
        
        94
        +

      
        
        95
        +2006/03/14 Auction House

      
        
        96
        +    Expenses:Items                    8G

      
        
        97
        +    Assets:Tajer

      
        
        98
        +

      
        
        99
        +2006/03/14 Post

      
        
        100
        +    Expenses:Fees:Mail              120c

      
        
        101
        +    Assets:Tajer

      
        
        102
        +

      
        
        103
        +2006/03/14 Puldoost

      
        
        104
        +    Assets:Tajer                      8G

      
        
        105
        +    Expenses:Items

      
        
        106
        +

      
        
        107
        +2006/03/14 Auction House

      
        
        108
        +    Assets:Wyshona:Items                "Plans: Wildthorn Mail" 1 {1.25G}

      
        
        109
        +    Assets:Tajer:Items

      
        
        110
        +

      
        
        111
        +2006/03/15 Auction House

      
        
        112
        +    Assets:Tajer                     45s

      
        
        113
        +    Assets:Tajer                    259c

      
        
        114
        +    Assets:Bids

      
        
        115
        +

      
        
        116
        +2006/03/15 Auction House

      
        
        117
        +    Assets:Tajer                   4720c

      
        
        118
        +    Assets:Bids

      
        
        119
        +

      
        
        120
        +2006/03/15 Auction House

      
        
        121
        +    Expenses:Fees:Auction         12542c  ; something got lost here

      
        
        122
        +    Assets:Tajer

      
        
        123
        +

      
        
        124
        +2006/03/15 Auction House

      
        
        125
        +    Expenses:Fees:Auction          2375c

      
        
        126
        +    Expenses:Fees:Auction         -2375c

      
        
        127
        +    Assets:Gruulmorg

      
        
        128
        +

      
        
        129
        +2006/03/15 Auction House

      
        
        130
        +    Assets:Danell                     4c

      
        
        131
        +    Equity:Gold

      
        
        132
        +

      
        
        133
        +2006/03/15 Transfer

      
        
        134
        +    Assets:Gruulmorg                  2c

      
        
        135
        +    Assets:Danell

      
        
        136
        +

      
        
        137
        +2006/03/15 Transfer

      
        
        138
        +    Assets:Danell                  4250c

      
        
        139
        +    Expenses:Fees:Auction           750c

      
        
        140
        +    Assets:Gruulmorg                -50s

      
        
        141
        +

      
        
        142
        +2006/03/15 Post

      
        
        143
        +    Expenses:Fees:Mail               60c

      
        
        144
        +    Assets:Danell

      
        
        145
        +

      
        
        146
        +2006/03/15 Player

      
        
        147
        +    Assets:Tajer                      3G

      
        
        148
        +    Equity:Gold

      
        
        149
        +

      
        
        150
        +2006/03/15 Post

      
        
        151
        +    Assets:Wyshona                   40s

      
        
        152
        +    Expenses:Fees:Mail               30c

      
        
        153
        +    Assets:Danell

      
        
        154
        +

      
        
        155
        +2006/03/15 Auction House

      
        
        156
        +    Expenses:Fees:Auction             8s

      
        
        157
        +    Expenses:Fees:Auction            11s

      
        
        158
        +    Assets:Wyshona

      
        
        159
        +

      
        
        160
        +2006/03/15 Auction House

      
        
        161
        +    Assets:Tajer:Items                  "Beaststalker's Belt" 1 @ 65G

      
        
        162
        +    Assets:Tajer

      
        
        163
        +

      
        
        164
        +2006/03/15 Post

      
        
        165
        +    Expenses:Fees:Mail               30c

      
        
        166
        +    Assets:Tajer

      
        
        167
        +

      
        
        168
        +2006/03/15 Auction House

      
        
        169
        +    Expenses:Fees:Auction          8268c

      
        
        170
        +    Assets:Tajer

      
        
        171
        +

      
        
        172
        +2006/03/15 Post

      
        
        173
        +    Expenses:Fees:Mail               30c

      
        
        174
        +    Assets:Tajer

      
        
        175
        +

      
        
        176
        +2006/03/15 Vendor

      
        
        177
        +    Assets:Tajer                  16744c

      
        
        178
        +    Assets:Tajer                  16640c

      
        
        179
        +    Equity:Gold

      
        
        180
        +

      
        
        181
        +2006/03/15 Post

      
        
        182
        +    Expenses:Fees:Mail               30c

      
        
        183
        +    Assets:Tajer

      
        
        184
        +

      
        
        185
        +2006/03/15 Auction House

      
        
        186
        +    Expenses:Fees:Auction           772c

      
        
        187
        +    Expenses:Fees:Auction           544c

      
        
        188
        +    Expenses:Fees:Auction           444c

      
        
        189
        +    Expenses:Fees:Auction           432c

      
        
        190
        +    Expenses:Fees:Auction           204c

      
        
        191
        +    Assets:Tajer

      
        
        192
        +

      
        
        193
        +2006/03/15 Player

      
        
        194
        +    Assets:Tajer                     12s

      
        
        195
        +    Equity:Gold

      
        
        196
        +

      
        
        197
        +2006/03/15 Vendor

      
        
        198
        +    Assets:Tajer                     22s

      
        
        199
        +    Equity:Gold

      
        
        200
        +

      
        
        201
        +2006/03/15 Auction House

      
        
        202
        +    Assets:Tajer:Items                  "Recipe: Elixir of Giant Growth" 1 @ 1G

      
        
        203
        +    Assets:Tajer

      
        
        204
        +

      
        
        205
        +2006/03/15 Post

      
        
        206
        +    Expenses:Fees:Mail               30c

      
        
        207
        +    Assets:Tajer

      
        
        208
        +

      
        
        209
        +2006/03/15 Auction House

      
        
        210
        +    Expenses:Fees:Auction          8268c

      
        
        211
        +    Assets:Tajer

      
        
        212
        +

      
        
        213
        +2006/03/15 Auction House

      
        
        214
        +    Assets:Tajer:Items                  "Plans: Mithril Shield Spike" 1 @ 21050c

      
        
        215
        +    Assets:Tajer

      
        
        216
        +

      
        
        217
        +2006/03/15 Auction House

      
        
        218
        +    Assets:Tajer:Items                  "Plans: Mithril Shield Spike" 1 @ 23000c

      
        
        219
        +    Assets:Tajer

      
        
        220
        +

      
        
        221
        +2006/03/15 Auction House

      
        
        222
        +    Assets:Tajer:Items                  "Recipe: Elixir of Giant Growth" 1 @ 150s

      
        
        223
        +    Assets:Tajer

      
        
        224
        +

      
        
        225
        +2006/03/16 Player

      
        
        226
        +    Assets:Tajer                      3G

      
        
        227
        +    Equity:Gold

      
        
        228
        +

      
        
        229
        +2006/03/16 Post

      
        
        230
        +    Expenses:Fees:Mail               90c

      
        
        231
        +    Assets:Tajer

      
        
        232
        +

      
        
        233
        +2006/03/16 Auction House

      
        
        234
        +    Assets:Tajer                1195768c

      
        
        235
        +    Assets:Tajer:Items                  "Beaststalker's Belt" -1 {65G} @ 1195768c

      
        
        236
        +    Income:Brokering            -545768c

      
        
        237
        +

      
        
        238
        +2006/03/16 Auction House

      
        
        239
        +    Assets:Wyshona:Items                "Plans: Mithril Shield Spike" 1 {21050c}

      
        
        240
        +    Assets:Wyshona:Items                "Plans: Mithril Shield Spike" 1 {2.3G}

      
        
        241
        +    Assets:Wyshona:Items                "Recipe: Elixir of Giant Growth" 1 {1G}

      
        
        242
        +    Assets:Wyshona:Items                "Recipe: Elixir of Giant Growth" 1 {1.5G}

      
        
        243
        +    Assets:Tajer:Items

      
        
        244
        +

      
        
        245
        +2006/03/16 Player

      
        
        246
        +    Assets:Tajer                      4G

      
        
        247
        +    Equity:Gold

      
        
        248
        +

      
        
        249
        +2006/03/16 Auction House

      
        
        250
        +    Assets:Wyshona                 1341s

      
        
        251
        +    Equity:Gold

      
        
        252
        +

      
        
        253
        +2006/03/16 Auction House

      
        
        254
        +    Assets:Gruulmorg                  4c

      
        
        255
        +    Assets:Danell

      
        
        256
        +

      
        
        257
        +2006/03/16 Auction House

      
        
        258
        +    Expenses:Fees:Auction             4c

      
        
        259
        +    Expenses:Fees:Mail              120c

      
        
        260
        +    Assets:Danell

      
        
        261
        +

      
        
        262
        +2006/03/16 Auction House

      
        
        263
        +    Expenses:Fees:Auction            24s

      
        
        264
        +    Expenses:Fees:Auction            12s

      
        
        265
        +    Expenses:Fees:Auction            12s

      
        
        266
        +    Expenses:Fees:Auction            84c

      
        
        267
        +    Expenses:Fees:Auction            84c

      
        
        268
        +    Assets:Wyshona

      
        
        269
        +

      
        
        270
        +2006/03/16 Crazy Cat Lady

      
        
        271
        +    Expenses:Items                   40s

      
        
        272
        +    Expenses:Items                   40s

      
        
        273
        +    Assets:Wyshona

      
        
        274
        +

      
        
        275
        +2006/03/16 Transfer

      
        
        276
        +    Expenses:Fees:Mail               60c

      
        
        277
        +    Assets:Danell                     5G

      
        
        278
        +    Assets:Wyshona

      
        
        279
        +

      
        
        280
        +2006/03/16 Transfer

      
        
        281
        +    Expenses:Fees:Mail               30c

      
        
        282
        +    Assets:Tajer                     20G

      
        
        283
        +    Assets:Gruulmorg

      
        
        284
        +

      
        
        285
        +2006/03/16 Auction House

      
        
        286
        +    Assets:Tajer:Items                  "Pulsating Hydra Heart" 1 @ 1G

      
        
        287
        +    Assets:Tajer

      
        
        288
        +

      
        
        289
        +2006/03/16 Auction House

      
        
        290
        +    Expenses:Fees:Auction           936c

      
        
        291
        +    Assets:Tajer

      
        
        292
        +

      
        
        293
        +2006/03/16 Transfer

      
        
        294
        +    Expenses:Fees:Mail               30c

      
        
        295
        +    Assets:Gruulmorg                 30G

      
        
        296
        +    Assets:Tajer

      
        
        297
        +

      
        
        298
        +2006/03/16 Auction House

      
        
        299
        +    Assets:Gruulmorg:Items              "Ace of Warlords" 2 @ 15G

      
        
        300
        +    Assets:Gruulmorg

      
        
        301
        +

      
        
        302
        +2006/03/16 Transfer

      
        
        303
        +    Assets:Tajer:Items                  "Ace of Warlords" 2 {15G}

      
        
        304
        +    Assets:Gruulmorg:Items

      
        
        305
        +

      
        
        306
        +2006/03/16 Post

      
        
        307
        +    Expenses:Fees:Mail               60c

      
        
        308
        +    Assets:Gruulmorg

      
        
        309
        +

      
        
        310
        +2006/03/16 Post

      
        
        311
        +    Expenses:Fees:Mail              120c

      
        
        312
        +    Assets:Tajer

      
        
        313
        +

      
        
        314
        +2006/03/16 Auction House

      
        
        315
        +    Assets:Tajer                   2104c

      
        
        316
        +    Equity:Gold

      
        
        317
        +

      
        
        318
        +2006/03/16 Auction House

      
        
        319
        +    Expenses:Fees:Auction            75s

      
        
        320
        +    Expenses:Fees:Auction            75s

      
        
        321
        +    Assets:Tajer

      
        
        322
        +

      
        
        323
        +2006/03/16 Transfer

      
        
        324
        +    Assets:Danell                     6c

      
        
        325
        +    Assets:Gruulmorg

      
        
        326
        +

      
        
        327
        +2006/03/16 Post

      
        
        328
        +    Expenses:Fees:Mail               60c

      
        
        329
        +    Assets:Gruulmorg

      
        
        330
        +

      
        
        331
        +2006/03/16 Post

      
        
        332
        +    Expenses:Fees:Mail               60c

      
        
        333
        +    Assets:Tajer

      
        
        334
        +

      
        
        335
        +2006/03/16 General Goods Vendor

      
        
        336
        +    Expenses:Items                   50c  ; wrapping paper

      
        
        337
        +    Assets:Tajer

      
        
        338
        +

      
        
        339
        +2006/03/16 Player

      
        
        340
        +    Assets:Tajer                      1G

      
        
        341
        +    Equity:Gold

      
        
        342
        +

      
        
        343
        +2006/03/17 Auction House

      
        
        344
        +    Assets:Wyshona               180584c

      
        
        345
        +    Assets:Wyshona:Items                "Recipe: Elixir of Giant Growth" -1 {1.5G} @ 180584c

      
        
        346
        +    Income:Brokering            -165584c

      
        
        347
        +

      
        
        348
        +2006/03/17 Auction House

      
        
        349
        +    Assets:Wyshona               180584c

      
        
        350
        +    Assets:Wyshona:Items                "Recipe: Elixir of Giant Growth" -1 {1G} @ 180584c

      
        
        351
        +    Income:Brokering            -170584c

      
        
        352
        +

      
        
        353
        +2006/03/17 Post

      
        
        354
        +    Expenses:Fees:Mail               30c

      
        
        355
        +    Assets:Tajer

      
        
        356
        +

      
        
        357
        +2006/03/17 Player: raev

      
        
        358
        +    Assets:Tajer:Items                  "Wildheart Belt" 1   @ 30G

      
        
        359
        +    Assets:Tajer:Items                  "Ace of Warlords" -2 @ 15G

      
        
        360
        +

      
        
        361
        +2006/03/17 Auction House

      
        
        362
        +    Expenses:Fees:Auction          7482c

      
        
        363
        +    Assets:Tajer

      
        
        364
        +

      
        
        365
        +2006/03/17 Post

      
        
        366
        +    Expenses:Fees:Mail              300c

      
        
        367
        +    Assets:Wyshona

      
        
        368
        +

      
        
        369
        +2006/03/17 Player

      
        
        370
        +    Assets:Wyshona                    1G

      
        
        371
        +    Assets:Wyshona:Items                "Plans: Wildthorn Mail" -1 {1.25G} @ 1G

      
        
        372
        +    Expenses:Capital Loss            25s

      
        
        373
        +

      
        
        374
        +2006/03/17 Auction House (implicit transfer)

      
        
        375
        +    Expenses:Items                  279s  ; Recipe: Swiftness Potion

      
        
        376
        +    Assets:Wyshona

      
        
        377
        +

      
        
        378
        +2006/03/17 Auction House (implicit transfer)

      
        
        379
        +    Assets:Danell:Items                 "Ace of Warlords" 1 @ 3G

      
        
        380
        +    Assets:Tajer:Items                  "Ace of Warlords" 1 @ 3.9G

      
        
        381
        +    Assets:Tajer:Items                  "Holy Bologna" 1 @ 2G

      
        
        382
        +    Assets:Tajer:Items                  "The Emerald Dream" 1 @ 4G

      
        
        383
        +    Assets:Tajer:Items                  "The Arcanist's Cookbook" 1 @ 4G

      
        
        384
        +    Assets:Tajer:Items                  "Harnessing Shadows" 1 @ 5G

      
        
        385
        +    Assets:Tajer:Items                  "Garona: Book on Treachery" 1 @ 4G

      
        
        386
        +    Assets:Tajer:Items                  "Preserved Holly" 5 @ 20s

      
        
        387
        +    Assets:Wyshona

      
        
        388
        +

      
        
        389
        +2006/03/17 Auction House

      
        
        390
        +    Assets:Tajer                      4G

      
        
        391
        +    Assets:Tajer:Items                  "Pulsating Hydra Heart" -1 {1G} @ 4G

      
        
        392
        +    Income:Brokering                 -3G

      
        
        393
        +

      
        
        394
        +2006/03/17 Auction House

      
        
        395
        +    Assets:Danell                  3171c

      
        
        396
        +    Assets:Danell:Items                 "Ace of Warlords" -1 {3G} @ 3171c

      
        
        397
        +    Expenses:Capital Loss         26829c

      
        
        398
        +

      
        
        399
        +2006/03/17 Auction House

      
        
        400
        +    Expenses:Fees:Auction         12537c

      
        
        401
        +    Assets:Danell

      
        
        402
        +

      
        
        403
        +2006/03/17 Transfer

      
        
        404
        +    Assets:Gruulmorg                 15G

      
        
        405
        +    Expenses:Fees:Mail               30c

      
        
        406
        +    Assets:Tajer

      
        
        407
        +

      
        
        408
        +2006/03/17 Auction House

      
        
        409
        +    Assets:Wyshona               362450c

      
        
        410
        +    Assets:Wyshona:Items                "Plans: Mithril Shield Spike" -1 {21050c} @ 181225c

      
        
        411
        +    Assets:Wyshona:Items                "Plans: Mithril Shield Spike" -1 {2.3G} @ 181225c

      
        
        412
        +    Income:Brokering            -318400c

      
        
        413
        +

      
        
        414
        +2006/03/17 Transfer

      
        
        415
        +    Assets:Danell                499560c

      
        
        416
        +    Expenses:Gifts                    1G

      
        
        417
        +    Expenses:Fees:Mail               30c

      
        
        418
        +    Assets:Wyshona

      
        
        419
        +

      
        
        420
        +2006/03/17 Post

      
        
        421
        +    Expenses:Fees:Mail               90c

      
        
        422
        +    Expenses:Fees:Auction           166c

      
        
        423
        +    Assets:Gruulmorg

      
        
        424
        +

      
        
        425
        +2006/03/17 Transfer

      
        
        426
        +    Assets:Gruulmorg             459211c

      
        
        427
        +    Expenses:Fees:Auction         81023c

      
        
        428
        +    Assets:Danell               -540234c

      
        
        429
        +

      
        
        430
        +2006/03/17 Transfer

      
        
        431
        +    Assets:Tajer                 662465c

      
        
        432
        +    Expenses:Fees:Mail               30c

      
        
        433
        +    Assets:Gruulmorg

      
        
        434
        +

      
        
        435
        +2006/03/17 Auction House

      
        
        436
        +    Expenses:Fees:Auction            75s

      
        
        437
        +    Expenses:Fees:Mail               30c

      
        
        438
        +    Assets:Tajer

      
        
        439
        +

      
        
        440
        +2006/03/18 Auction House

      
        
        441
        +    Assets:Tajer                     15G

      
        
        442
        +    Assets:Tajer:Items                  "Ace of Warlords" -1 {3.9G} @ 15G

      
        
        443
        +    Income:Brokering            -111000c

      
        
        444
        +

      
        
        445
        +2006/03/18 Auction House

      
        
        446
        +    Assets:Tajer                 434472c

      
        
        447
        +    Assets:Tajer:Items                  "Wildheart Belt" -1 {30G} @ 434472c

      
        
        448
        +    Income:Brokering            -134472c

      
        
        449
        +

      
        
        450
        +2006/03/18 Auction House

      
        
        451
        +    Assets:Tajer                   1995s

      
        
        452
        +    Assets:Tajer:Items                  "Harnessing Shadows" -1 {5G} @ 1995s

      
        
        453
        +    Income:Brokering              -1495s

      
        
        454
        +

      
        
        455
        +2006/03/19 Auction House

      
        
        456
        +    Assets:Tajer                   2850s

      
        
        457
        +    Assets:Tajer:Items                  "Garona: Book on Treachery" -1 {4G} @ 2850s

      
        
        458
        +    Income:Brokering              -2450s

      
        
        459
        +

      
        
        460
        +2006/03/19 Auction House

      
        
        461
        +    Assets:Tajer                   1710s

      
        
        462
        +    Assets:Tajer:Items                  "The Arcanist's Cookbook" -1 {4G} @ 1710s

      
        
        463
        +    Income:Brokering              -1310s

      
        
        464
        +

      
        
        465
        +2006/03/19 Auction House

      
        
        466
        +    Assets:Tajer                  46550c

      
        
        467
        +    Assets:Tajer:Items                  "Preserved Holly" -5 {20s} @ 9310c

      
        
        468
        +    Income:Brokering             -36550c

      
        
        469
        +

      
        
        470
        +2006/03/19 Auction House

      
        
        471
        +    Assets:Tajer:Items                  "Two of Portals" 1 @ 3G

      
        
        472
        +    Assets:Tajer:Items                  "Two of Portals" 1 @ 2.5G

      
        
        473
        +    Assets:Tajer

      
        
        474
        +

      
        
        475
        +2006/03/20 Auction House

      
        
        476
        +    Assets:Tajer                 163443c

      
        
        477
        +    Assets:Tajer:Items                  "Holy Bologna" -1 {2G} @ 163443c

      
        
        478
        +    Income:Brokering            -143443c

      
        
        479
        +

      
        
        480
        +2006/03/20 Auction House

      
        
        481
        +    Assets:Tajer                      5G

      
        
        482
        +    Assets:Tajer:Items                  "Two of Portals" -1 {3G} @ 5G

      
        
        483
        +    Income:Brokering                 -2G

      
        
        484
        +

      
        
        485
        +2006/03/20 Auction House

      
        
        486
        +    Assets:Tajer                     15G

      
        
        487
        +    Assets:Tajer:Items                  "The Emerald Dream" -1 {4G} @ 15G

      
        
        488
        +    Income:Brokering                -11G

      
        
        489
        +

      
        
        490
        +2006/03/20 Auction House

      
        
        491
        +    Expenses:Fees:Mail               60c

      
        
        492
        +    Assets:Tajer

      
        
        493
        +

      
        
        494
        +2006/03/21 Auction House

      
        
        495
        +    Assets:Tajer:Items                  "Orb of Deception" 1 @ 170G

      
        
        496
        +    Assets:Tajer

      
        
        497
        +

      
        
        498
        +2006/03/21 Auction House

      
        
        499
        +    Expenses:Fees:Auction          2760c

      
        
        500
        +    Expenses:Fees:Auction          2760c

      
        
        501
        +    Assets:Tajer

      
        
        502
        +

      
        
        503
        +2006/03/22 Auction House

      
        
        504
        +    Assets:Tajer:Items                  "Nightblade" 1 @ 200G

      
        
        505
        +    Assets:Tajer

      
        
        506
        +

      
        
        507
        +2006/03/22 Auction House

      
        
        508
        +    Expenses:Fees:Auction           177s

      
        
        509
        +    Expenses:Fees:Auction           177s

      
        
        510
        +    Expenses:Fees:Auction           177s

      
        
        511
        +    Expenses:Fees:Auction           177s

      
        
        512
        +    Expenses:Fees:Auction            75s

      
        
        513
        +    Assets:Tajer

      
        
        514
        +

      
        
        515
        +2006/03/23 Auction House

      
        
        516
        +    Assets:Tajer                1665260c

      
        
        517
        +    Assets:Tajer:Items                  "Orb of Deception" -1 {170G} @ 1665260c

      
        
        518
        +    Expenses:Capital Loss         34740c

      
        
        519
        +

      
        
        520
        +2006/03/26 Auction House

      
        
        521
        +    Assets:Tajer                  81980c

      
        
        522
        +    Assets:Tajer:Items                  "Two of Portals" -1 {2.5G} @ 81980c

      
        
        523
        +    Income:Brokering             -56980c

      
        
        524
        +

      
        
        525
        +2006/03/26 Player

      
        
        526
        +    Expenses:Items                  150s  ; Recipe: Elixir of Minor Agility

      
        
        527
        +    Expenses:Fees:Mail               30c

      
        
        528
        +    Expenses:Fees:Mail               30c

      
        
        529
        +    Assets:Tajer

      
        
        530
        +

      
        
        531
        +2006/03/27 Player

      
        
        532
        +    Assets:Tajer                    160G

      
        
        533
        +    Assets:Tajer:Items                  "Nightblade" -1 {200G} @ 160G

      
        
        534
        +    Expenses:Capital Loss            40G

      
        
        535
        +

      
        
        536
        +2006/03/27 Player

      
        
        537
        +    Expenses:Fees:Mail               30c

      
        
        538
        +    Assets:Tajer

      
        
        539
        +

      
        
        540
        +2006/03/26 Player

      
        
        541
        +    Expenses:Items                   (9G * 6)  ; Traveler's backpacks

      
        
        542
        +    Expenses:Items                   10G

      
        
        543
        +    Expenses:Fees:Bank               10G

      
        
        544
        +    Expenses:Fees:Mail              630c

      
        
        545
        +    Expenses:Fees:Mail              330c

      
        
        546
        +    Expenses:Fees:Mail               30c

      
        
        547
        +    Assets:Tajer

      
        
        548
        +

      
        
        549
        +2006/04/01 Auction House

      
        
        550
        +    Assets:Tajer:Items                  "Orb of Deception" 1 @ 155G

      
        
        551
        +    Assets:Tajer

      
D tests/test.go
···
        1
        
        -package main

      
        2
        
        -

      
        3
        
        -import (

      
        4
        
        -	"fmt"

      
        5
        
        -	"os"

      
        6
        
        -	"path/filepath"

      
        7
        
        -

      
        8
        
        -	"olexsmir.xyz/clerk/journal"

      
        9
        
        -)

      
        10
        
        -

      
        11
        
        -type test struct {

      
        12
        
        -	Desc   string

      
        13
        
        -	Broken bool

      
        14
        
        -}

      
        15
        
        -

      
        16
        
        -var testCases = map[string]test{

      
        17
        
        -	"actual-1ktxns-100accts.journal":   {Desc: "hledger stress test: 1000 transactions, 100 accounts, number-only account names"},

      
        18
        
        -	"actual-accounttypes.journal":      {Desc: "hledger: account type annotations (type:A, type:L) via comments"},

      
        19
        
        -	"actual-alias.journal":             {Desc: "hledger: account alias directives for renaming"},

      
        20
        
        -	"actual-borrowing.journal":         {Desc: "hledger: borrowing/lending example with liabilities"},

      
        21
        
        -	"actual-business.journal":          {Desc: "hledger: simple business transactions with commodities"},

      
        22
        
        -	"actual-goal-budget-1.journal":     {Desc: "hledger: goal budget using periodic transactions"},

      
        23
        
        -	"actual-i18n-en.journal":           {Desc: "hledger: internationalization with account types in English"},

      
        24
        
        -	"actual-ledger-input-divzero.dat":  {Desc: "ledger-cli: fuzz corpus, designed to cause divide-by-zero"},

      
        25
        
        -	"actual-ledger-input-parsing.dat":  {Desc: "ledger-cli: fuzz corpus, tests EOF without newline"},

      
        26
        
        -	"actual-ledger-input-sample.dat":   {Desc: "ledger-cli: fuzz corpus, default commodity directive"},

      
        27
        
        -	"actual-ledger-input-standard.dat": {Desc: "ledger-cli: fuzz corpus, standard ledger format"},

      
        28
        
        -	"actual-ledger-input-transfer.dat": {Desc: "ledger-cli: fuzz corpus, byte quantity (non-monetary)"},

      
        29
        
        -	"actual-ledger-input-wow.dat":      {Broken: true, Desc: "ledger-cli: fuzz corpus, World of Warcraft currency (1G=100s)"},

      
        30
        
        -	"actual-multicurrency.journal":     {Desc: "hledger: multi-currency transactions with HRK/EUR"},

      
        31
        
        -	"actual-personal.journal":          {Desc: "hledger: simple personal finance example"},

      
        32
        
        -	"actual-quickstart.journal":        {Desc: "hledger: quickstart guide with commodity directive"},

      
        33
        
        -	"actual-sample.journal":            {Desc: "hledger: comprehensive sample with account tree"},

      
        34
        
        -	"actual-sample2.journal":           {Desc: "hledger: sample2 with balance assertions and account directives"},

      
        35
        
        -	"actual-status.journal":            {Desc: "hledger: tests all transaction statuses (unmarked, pending, cleared)"},

      
        36
        
        -	"actual-templates.journal":         {Desc: "hledger: entry template examples with comments"},

      
        37
        
        -	"actual-unicode.journal":           {Desc: "hledger: unicode in descriptions, account names, currency"},

      
        38
        
        -	"actual-vat.journal":               {Desc: "hledger: VAT tracking example"},

      
        39
        
        -	"apply-tag-block.dat":              {Desc: "ledger-cli: apply-tag block directive"},

      
        40
        
        -	"automated-posting-rule.dat":       {Desc: "ledger-cli: automated posting rules (= /^Expenses/)"},

      
        41
        
        -	"basic-ledger.dat":                 {Desc: "ledger-cli: basic income/expense transaction"},

      
        42
        
        -	"basic.journal":                    {Desc: "hledger: minimal setup with account/commodity directives"},

      
        43
        
        -	"broken-double-at.journal":         {Broken: true, Desc: "synthetic: intentionally broken (@@) syntax"},

      
        44
        
        -	"broken-rparen.journal":            {Broken: true, Desc: "synthetic: intentionally broken unmatched )"},

      
        45
        
        -	"broken-unknown-directive.journal": {Broken: true, Desc: "synthetic: intentionally broken unknown directive (??)"},

      
        46
        
        -	"code-note.dat":                    {Desc: "ledger-cli: transaction with code, payee, comments"},

      
        47
        
        -	"commodity-space.dat":              {Desc: "ledger-cli: commodity with space before amount ($ 10.00)"},

      
        48
        
        -	"cost-balance-assertion.dat":       {Desc: "ledger-cli: cost notation and balance assertion (@ 1 USD = 20.00 UAH)"},

      
        49
        
        -	"directives-supported.journal":     {Desc: "mixed: tests account, commodity, include, alias directives"},

      
        50
        
        -	"ext-hledger-i18n-no.journal":      {Desc: "hledger i18n example: uppercase directive values currently mis-tokenized"},

      
        51
        
        -	"ext-hledger-self-tracking-d.dat":  {Desc: "hledger self-tracking example with date+time transaction headers"},

      
        52
        
        -	"ext-hledger-status.journal":       {Desc: "hledger status example: ! (virtual:posting)"},

      
        53
        
        -	"ext-ledger-parsing.dat":           {Desc: "ledger parsing corpus: -$ amount form"},

      
        54
        
        -	"header-comments.journal":          {Desc: "hledger: transaction with header comment"},

      
        55
        
        -	"inclusive-balance-star.journal":   {Desc: "hledger: inclusive balance with ==*"},

      
        56
        
        -	"multicurrency-supported.journal":  {Desc: "hledger: working multi-currency with EUR exchange"},

      
        57
        
        -	"periodic-basic.journal":           {Desc: "hledger: periodic transaction (~ monthly)"},

      
        58
        
        -	"secondary-date-note.journal":      {Desc: "hledger: secondary date and transaction note"},

      
        59
        
        -	"status-basic.journal":             {Desc: "hledger: transaction status (pending with !)"},

      
        60
        
        -	"unicode-cjk-emoji.journal":        {Desc: "synthetic: unicode CJK and emoji in transaction descriptions"},

      
        61
        
        -	"unicode-cyrillic.journal":         {Desc: "synthetic: unicode Cyrillic in descriptions and account names"},

      
        62
        
        -	"unicode-mixed-languages.journal":  {Desc: "synthetic: mixed latin/cyrillic/cjk in descriptions and account names"},

      
        63
        
        -	"virtual-posting.dat":              {Desc: "ledger-cli: virtual/balanced postings with [brackets]"},

      
        64
        
        -}

      
        65
        
        -

      
        66
        
        -func main() {

      
        67
        
        -	failures := 0

      
        68
        
        -	for name, tc := range testCases {

      
        69
        
        -		loader := journal.NewLoader()

      
        70
        
        -		pf, err := loader.Load(filepath.Join("tests/journal", name))

      
        71
        
        -		if err != nil {

      
        72
        
        -			if tc.Broken {

      
        73
        
        -				fmt.Printf("SKIP %s: %s\n", name, tc.Desc)

      
        74
        
        -				continue

      
        75
        
        -			}

      
        76
        
        -			fmt.Printf("FAIL %s: %v\n", name, err)

      
        77
        
        -			failures++

      
        78
        
        -			continue

      
        79
        
        -		}

      
        80
        
        -

      
        81
        
        -		if len(pf.Errors)+len(pf.FileErrors) > 0 {

      
        82
        
        -			if tc.Broken {

      
        83
        
        -				fmt.Printf("SKIP %s: %s\n", name, tc.Desc)

      
        84
        
        -				continue

      
        85
        
        -			}

      
        86
        
        -

      
        87
        
        -			fmt.Printf("FAIL %s: %d parse errors, %d file errors\n", name, len(pf.Errors), len(pf.FileErrors))

      
        88
        
        -			for i, e := range pf.Errors {

      
        89
        
        -				if i >= 5 {

      
        90
        
        -					fmt.Printf("  ... and %d more parse errors\n", len(pf.Errors)-5)

      
        91
        
        -					break

      
        92
        
        -				}

      
        93
        
        -				fmt.Printf("  %s\n", e.Message)

      
        94
        
        -			}

      
        95
        
        -			for i, e := range pf.FileErrors {

      
        96
        
        -				if i >= 5 {

      
        97
        
        -					fmt.Printf("  ... and %d more file errors\n", len(pf.FileErrors)-5)

      
        98
        
        -					break

      
        99
        
        -				}

      
        100
        
        -				fmt.Printf("  [%s] %s\n", e.Path, e.Message)

      
        101
        
        -			}

      
        102
        
        -			failures++

      
        103
        
        -		} else {

      
        104
        
        -			fmt.Printf("PASS %s\n", name)

      
        105
        
        -		}

      
        106
        
        -	}

      
        107
        
        -

      
        108
        
        -	fmt.Printf("\n%d files failed\n", failures)

      
        109
        
        -	if failures > 0 {

      
        110
        
        -		os.Exit(1)

      
        111
        
        -	}

      
        112
        
        -}