Parse change headers

andybalholm
Mar 24, 2023, 11:27 PM
PHRWK7NKNWEVKPVM7WESHMWWRABBURJE7ITAESPYFFI4GYIDXDMQC

Dependencies

Change contents

  • file addition: go.sum (----------)
    [2.1]
    github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
    github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
  • file addition: go.mod (----------)
    [2.1]
    module pijul-go
    go 1.20
    require github.com/BurntSushi/toml v1.2.1 // indirect
  • file addition: change_test.go (----------)
    [2.1]
    package pijul
    import (
    "reflect"
    "testing"
    "time"
    )
    var changeHeaderTests = []struct {
    toml string
    parsed ChangeHeader
    }{
    {
    `message = ''
    timestamp = '2023-03-24T17:52:08.476452868Z'
    authors = []
    `,
    ChangeHeader{
    Timestamp: time.Date(2023, 3, 24, 17, 52, 8, 476452868, time.UTC),
    Authors: []map[string]string{},
    },
    },
    {
    `message = 'Add some gibberish'
    timestamp = '2023-03-24T17:52:08.476298107Z'
    [[authors]]
    key = 'BCEXYuKWaQ96btsk8UyBZWHLjn1Brhykv8tuZGPRjzFn'`,
    ChangeHeader{
    Message: "Add some gibberish",
    Timestamp: time.Date(2023, 3, 24, 17, 52, 8, 476298107, time.UTC),
    Authors: []map[string]string{
    {
    "key": "BCEXYuKWaQ96btsk8UyBZWHLjn1Brhykv8tuZGPRjzFn",
    },
    },
    },
    },
    }
    func TestChangeHeaderParsing(t *testing.T) {
    for i, c := range changeHeaderTests {
    parsed, err := ParseChangeHeader([]byte(c.toml))
    if err != nil {
    t.Fatalf("Error parsing case %d: %v", i, err)
    }
    if !reflect.DeepEqual(parsed, c.parsed) {
    t.Fatalf("got %#v, want %#v", parsed, c.parsed)
    }
    }
    }
  • file addition: change.go (----------)
    [2.1]
    package pijul
    import (
    "time"
    "github.com/BurntSushi/toml"
    )
    type ChangeHeader struct {
    Message string `toml:"message"`
    Description string `toml:"description"`
    Timestamp time.Time `toml:"timestamp"`
    Authors []map[string]string `toml:"authors"`
    }
    func ParseChangeHeader(b []byte) (ChangeHeader, error) {
    var ch ChangeHeader
    err := toml.Unmarshal(b, &ch)
    return ch, err
    }
  • file addition: .ignore (----------)
    [2.1]
    .git
    .DS_Store