mirror of
https://code.forgejo.org/forgejo/runner.git
synced 2025-09-30 19:22:09 +00:00
Resolves forgejo/runner#548 <!--start release-notes-assistant--> <!--URL:https://code.forgejo.org/forgejo/runner--> - bug fixes - [PR](https://code.forgejo.org/forgejo/runner/pulls/1006): <!--number 1006 --><!--line 0 --><!--description Zml4OiBkbyBub3Qgc2F2ZSAucnVubmVyIHVubGVzcyBpdCBpcyBtb2RpZmllZA==-->fix: do not save .runner unless it is modified<!--description--> <!--end release-notes-assistant--> Reviewed-on: https://code.forgejo.org/forgejo/runner/pulls/1006 Reviewed-by: Michael Kriese <michael.kriese@gmx.de> Co-authored-by: Earl Warren <contact@earl-warren.org> Co-committed-by: Earl Warren <contact@earl-warren.org>
63 lines
1.6 KiB
Go
63 lines
1.6 KiB
Go
// Copyright 2025 The Forgejo Authors. All rights reserved.
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
package config
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestConfig_Registration(t *testing.T) {
|
|
reg := Registration{
|
|
Warning: registrationWarning,
|
|
ID: 1234,
|
|
UUID: "UUID",
|
|
Name: "NAME",
|
|
Token: "TOKEN",
|
|
Address: "ADDRESS",
|
|
Labels: []string{"LABEL1", "LABEL2"},
|
|
}
|
|
|
|
file := filepath.Join(t.TempDir(), ".runner")
|
|
|
|
// when the file does not exist, it is never equal
|
|
equal, err := isEqualRegistration(file, ®)
|
|
require.NoError(t, err)
|
|
assert.False(t, equal)
|
|
|
|
require.NoError(t, SaveRegistration(file, ®))
|
|
|
|
regReloaded, err := LoadRegistration(file)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, reg, *regReloaded)
|
|
|
|
equal, err = isEqualRegistration(file, ®)
|
|
require.NoError(t, err)
|
|
assert.True(t, equal)
|
|
|
|
// if the registration is not modified, it is not saved
|
|
time.Sleep(2 * time.Second) // file system precision on modification time is one second
|
|
before, err := os.Stat(file)
|
|
require.NoError(t, err)
|
|
require.NoError(t, SaveRegistration(file, ®))
|
|
after, err := os.Stat(file)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, before.ModTime(), after.ModTime())
|
|
|
|
reg.Labels = []string{"LABEL3"}
|
|
equal, err = isEqualRegistration(file, ®)
|
|
require.NoError(t, err)
|
|
assert.False(t, equal)
|
|
|
|
// if the registration is modified, it is saved
|
|
require.NoError(t, SaveRegistration(file, ®))
|
|
after, err = os.Stat(file)
|
|
require.NoError(t, err)
|
|
assert.NotEqual(t, before.ModTime(), after.ModTime())
|
|
}
|