123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- package cwhub
- import (
- "os"
- "testing"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- )
- func testInstall(hub *Hub, t *testing.T, item Item) {
- // Install the parser
- err := hub.DownloadLatest(&item, false, false)
- require.NoError(t, err, "failed to download %s", item.Name)
- _, err = hub.LocalSync()
- require.NoError(t, err, "failed to run localSync")
- assert.True(t, hub.Items[item.Type][item.Name].UpToDate, "%s should be up-to-date", item.Name)
- assert.False(t, hub.Items[item.Type][item.Name].Installed, "%s should not be installed", item.Name)
- assert.False(t, hub.Items[item.Type][item.Name].Tainted, "%s should not be tainted", item.Name)
- err = hub.EnableItem(&item)
- require.NoError(t, err, "failed to enable %s", item.Name)
- _, err = hub.LocalSync()
- require.NoError(t, err, "failed to run localSync")
- assert.True(t, hub.Items[item.Type][item.Name].Installed, "%s should be installed", item.Name)
- }
- func testTaint(hub *Hub, t *testing.T, item Item) {
- assert.False(t, hub.Items[item.Type][item.Name].Tainted, "%s should not be tainted", item.Name)
- f, err := os.OpenFile(item.LocalPath, os.O_APPEND|os.O_WRONLY, 0600)
- require.NoError(t, err, "failed to open %s (%s)", item.LocalPath, item.Name)
- defer f.Close()
- _, err = f.WriteString("tainted")
- require.NoError(t, err, "failed to write to %s (%s)", item.LocalPath, item.Name)
- // Local sync and check status
- _, err = hub.LocalSync()
- require.NoError(t, err, "failed to run localSync")
- assert.True(t, hub.Items[item.Type][item.Name].Tainted, "%s should be tainted", item.Name)
- }
- func testUpdate(hub *Hub, t *testing.T, item Item) {
- assert.False(t, hub.Items[item.Type][item.Name].UpToDate, "%s should not be up-to-date", item.Name)
- // Update it + check status
- err := hub.DownloadLatest(&item, true, true)
- require.NoError(t, err, "failed to update %s", item.Name)
- // Local sync and check status
- _, err = hub.LocalSync()
- require.NoError(t, err, "failed to run localSync")
- assert.True(t, hub.Items[item.Type][item.Name].UpToDate, "%s should be up-to-date", item.Name)
- assert.False(t, hub.Items[item.Type][item.Name].Tainted, "%s should not be tainted anymore", item.Name)
- }
- func testDisable(hub *Hub, t *testing.T, item Item) {
- assert.True(t, hub.Items[item.Type][item.Name].Installed, "%s should be installed", item.Name)
- // Remove
- err := hub.DisableItem(&item, false, false)
- require.NoError(t, err, "failed to disable %s", item.Name)
- // Local sync and check status
- warns, err := hub.LocalSync()
- require.NoError(t, err, "failed to run localSync")
- require.Empty(t, warns, "unexpected warnings : %+v", warns)
- assert.False(t, hub.Items[item.Type][item.Name].Tainted, "%s should not be tainted anymore", item.Name)
- assert.False(t, hub.Items[item.Type][item.Name].Installed, "%s should not be installed anymore", item.Name)
- assert.True(t, hub.Items[item.Type][item.Name].Downloaded, "%s should still be downloaded", item.Name)
- // Purge
- err = hub.DisableItem(&item, true, false)
- require.NoError(t, err, "failed to purge %s", item.Name)
- // Local sync and check status
- warns, err = hub.LocalSync()
- require.NoError(t, err, "failed to run localSync")
- require.Empty(t, warns, "unexpected warnings : %+v", warns)
- assert.False(t, hub.Items[item.Type][item.Name].Installed, "%s should not be installed anymore", item.Name)
- assert.False(t, hub.Items[item.Type][item.Name].Downloaded, "%s should not be downloaded", item.Name)
- }
- func TestInstallParser(t *testing.T) {
- /*
- - install a random parser
- - check its status
- - taint it
- - check its status
- - force update it
- - check its status
- - remove it
- */
- hub := envSetup(t)
- // map iteration is random by itself
- for _, it := range hub.Items[PARSERS] {
- testInstall(hub, t, it)
- it = hub.Items[PARSERS][it.Name]
- testTaint(hub, t, it)
- it = hub.Items[PARSERS][it.Name]
- testUpdate(hub, t, it)
- it = hub.Items[PARSERS][it.Name]
- testDisable(hub, t, it)
- break
- }
- }
- func TestInstallCollection(t *testing.T) {
- /*
- - install a random parser
- - check its status
- - taint it
- - check its status
- - force update it
- - check its status
- - remove it
- */
- hub := envSetup(t)
- // map iteration is random by itself
- for _, it := range hub.Items[COLLECTIONS] {
- testInstall(hub, t, it)
- it = hub.Items[COLLECTIONS][it.Name]
- testTaint(hub, t, it)
- it = hub.Items[COLLECTIONS][it.Name]
- testUpdate(hub, t, it)
- it = hub.Items[COLLECTIONS][it.Name]
- testDisable(hub, t, it)
- break
- }
- }
|