mirror of
https://code.forgejo.org/forgejo/runner.git
synced 2025-09-30 19:22:09 +00:00
64 lines
1.6 KiB
Go
64 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())
|
||
|
}
|