mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-09-09 20:28:29 -04:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a17a70c8b7 | ||
|
|
df3a790a2f | ||
|
|
eb73d2af0e | ||
|
|
31f01c6d3d | ||
|
|
6597dad1f9 | ||
|
|
8b01d08ce3 | ||
|
|
c73ed01908 | ||
|
|
8c4f9d96c0 | ||
|
|
a83a3b7680 | ||
|
|
cee5657651 | ||
|
|
0a500d25bf | ||
|
|
be121d8a94 |
No files matched your search
+1
-1
@@ -1,4 +1,4 @@
|
||||
# The test runner source for UI tests
|
||||
WEB_COMMITID=096ba683b62ab19ee7ff5dabe1225506ef50713c
|
||||
WEB_COMMITID=2cf68437639154cff66f8d6920470ee25a80f6b3
|
||||
WEB_BRANCH=stable-7.1
|
||||
|
||||
+1
-1
@@ -405,7 +405,7 @@ config = {
|
||||
# NOTE: need to be updated if new production releases are determined
|
||||
"tags": ["2.0", "4.0", "7.2"],
|
||||
# NOTE: need to be set to true if patch releases are made from stable-X-branches
|
||||
"skip_rolling": False,
|
||||
"skip_rolling": True,
|
||||
"skip_daily": True,
|
||||
"repo": docker_repo_slug,
|
||||
"build_type": "production",
|
||||
|
||||
@@ -1,5 +1,39 @@
|
||||
# Changelog
|
||||
|
||||
## [7.2.3](https://github.com/opencloud-eu/opencloud/releases/tag/v7.2.3) - 2026-08-06
|
||||
|
||||
### ❤️ Thanks to all contributors! ❤️
|
||||
|
||||
@aduffeck, @v-scharf
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- Fix missing favorite flag on opensearch hits [[#3256](https://github.com/opencloud-eu/opencloud/pull/3256)]
|
||||
|
||||
## [7.2.2](https://github.com/opencloud-eu/opencloud/releases/tag/v7.2.2) - 2026-07-14
|
||||
|
||||
### ❤️ Thanks to all contributors! ❤️
|
||||
|
||||
@kulmann, @v-scharf
|
||||
|
||||
### 📦️ Dependencies
|
||||
|
||||
- [full-ci] chore: bump web to v7.1.4 [[#3122](https://github.com/opencloud-eu/opencloud/pull/3122)]
|
||||
|
||||
## [7.2.1](https://github.com/opencloud-eu/opencloud/releases/tag/v7.2.1) - 2026-07-06
|
||||
|
||||
### ❤️ Thanks to all contributors! ❤️
|
||||
|
||||
@JammingBen, @v-scharf
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- Fix warming up the id cache for the user storage [[#3072](https://github.com/opencloud-eu/opencloud/pull/3072)]
|
||||
|
||||
### 📦️ Dependencies
|
||||
|
||||
- [full-ci] chore: bump web to v7.1.3 [[#3052](https://github.com/opencloud-eu/opencloud/pull/3052)]
|
||||
|
||||
## [7.2.0](https://github.com/opencloud-eu/opencloud/releases/tag/v7.2.0) - 2026-06-24
|
||||
|
||||
### ❤️ Thanks to all contributors! ❤️
|
||||
|
||||
@@ -64,7 +64,7 @@ require (
|
||||
github.com/open-policy-agent/opa v1.15.2
|
||||
github.com/opencloud-eu/icap-client v0.0.0-20250930132611-28a2afe62d89
|
||||
github.com/opencloud-eu/libre-graph-api-go v1.0.8-0.20260310090739-853d972b282d
|
||||
github.com/opencloud-eu/reva/v2 v2.46.6
|
||||
github.com/opencloud-eu/reva/v2 v2.46.7
|
||||
github.com/opensearch-project/opensearch-go/v4 v4.6.0
|
||||
github.com/orcaman/concurrent-map v1.0.0
|
||||
github.com/pkg/errors v0.9.1
|
||||
|
||||
@@ -948,8 +948,8 @@ github.com/opencloud-eu/icap-client v0.0.0-20250930132611-28a2afe62d89 h1:W1ms+l
|
||||
github.com/opencloud-eu/icap-client v0.0.0-20250930132611-28a2afe62d89/go.mod h1:vigJkNss1N2QEceCuNw/ullDehncuJNFB6mEnzfq9UI=
|
||||
github.com/opencloud-eu/libre-graph-api-go v1.0.8-0.20260310090739-853d972b282d h1:JcqGDiyrcaQwVyV861TUyQgO7uEmsjkhfm7aQd84dOw=
|
||||
github.com/opencloud-eu/libre-graph-api-go v1.0.8-0.20260310090739-853d972b282d/go.mod h1:pzatilMEHZFT3qV7C/X3MqOa3NlRQuYhlRhZTL+hN6Q=
|
||||
github.com/opencloud-eu/reva/v2 v2.46.6 h1:Q20wE4A2OpWVyDnRaC4KW1+nzo+DQaK+RK5y3RFnWIg=
|
||||
github.com/opencloud-eu/reva/v2 v2.46.6/go.mod h1:RoFQt+u7edxwzHr1IZ2Y6VaDinMiRPQupAvMBy3WVmE=
|
||||
github.com/opencloud-eu/reva/v2 v2.46.7 h1:zhUIMWNqqpGFpkLVIn56d5EpBoRNR5fBptovLzBRqTU=
|
||||
github.com/opencloud-eu/reva/v2 v2.46.7/go.mod h1:RoFQt+u7edxwzHr1IZ2Y6VaDinMiRPQupAvMBy3WVmE=
|
||||
github.com/opencloud-eu/secure v0.0.0-20260312082735-b6f5cb2244e4 h1:l2oB/RctH+t8r7QBj5p8thfEHCM/jF35aAY3WQ3hADI=
|
||||
github.com/opencloud-eu/secure v0.0.0-20260312082735-b6f5cb2244e4/go.mod h1:BmF5hyM6tXczk3MpQkFf1hpKSRqCyhqcbiQtiAF7+40=
|
||||
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
|
||||
|
||||
@@ -34,7 +34,7 @@ var (
|
||||
// LatestTag is the latest released version plus the dev meta version.
|
||||
// Will be overwritten by the release pipeline
|
||||
// Needs a manual change for every tagged release
|
||||
LatestTag = "7.2.0-rc.1+dev"
|
||||
LatestTag = "7.2.3+dev"
|
||||
|
||||
// Date indicates the build date.
|
||||
// This has been removed, it looks like you can only replace static strings with recent go versions
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package convert_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
. "github.com/onsi/ginkgo/v2"
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
func TestConvert(t *testing.T) {
|
||||
RegisterFailHandler(Fail)
|
||||
RunSpecs(t, "OpenSearch Convert Suite")
|
||||
}
|
||||
@@ -55,11 +55,12 @@ func OpenSearchHitToMatch(hit opensearchgoAPI.SearchHit) (*searchMessage.Match,
|
||||
SpaceId: resourceParentID.GetSpaceId(),
|
||||
OpaqueId: resourceParentID.GetOpaqueId(),
|
||||
},
|
||||
Size: resource.Size,
|
||||
Type: resource.Type,
|
||||
MimeType: resource.MimeType,
|
||||
Deleted: resource.Deleted,
|
||||
Tags: resource.Tags,
|
||||
Size: resource.Size,
|
||||
Type: resource.Type,
|
||||
MimeType: resource.MimeType,
|
||||
Deleted: resource.Deleted,
|
||||
Tags: resource.Tags,
|
||||
Favorites: resource.Favorites,
|
||||
Highlights: func() string {
|
||||
contentHighlights, ok := hit.Highlight["Content"]
|
||||
if !ok {
|
||||
|
||||
@@ -2,37 +2,114 @@ package convert_test
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
. "github.com/onsi/ginkgo/v2"
|
||||
. "github.com/onsi/gomega"
|
||||
opensearchgoAPI "github.com/opensearch-project/opensearch-go/v4/opensearchapi"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"github.com/opencloud-eu/opencloud/pkg/conversions"
|
||||
searchMessage "github.com/opencloud-eu/opencloud/protogen/gen/opencloud/messages/search/v0"
|
||||
"github.com/opencloud-eu/opencloud/services/search/pkg/opensearch/internal/convert"
|
||||
"github.com/opencloud-eu/opencloud/services/search/pkg/opensearch/internal/test"
|
||||
opensearchtest "github.com/opencloud-eu/opencloud/services/search/pkg/opensearch/internal/test"
|
||||
"github.com/opencloud-eu/opencloud/services/search/pkg/search"
|
||||
)
|
||||
|
||||
func TestOpenSearchHitToMatch(t *testing.T) {
|
||||
resource := opensearchtest.Testdata.Resources.File
|
||||
resource.MimeType = "audio/anything"
|
||||
|
||||
hit := opensearchgoAPI.SearchHit{
|
||||
Score: 1.1,
|
||||
Source: json.RawMessage(opensearchtest.JSONMustMarshal(t, resource)),
|
||||
}
|
||||
match, err := convert.OpenSearchHitToMatch(hit)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, hit.Score, match.Score)
|
||||
assert.Equal(t, resource.Name, match.Entity.Name)
|
||||
t.Parallel()
|
||||
t.Run("converts the audio field to the expected type", func(t *testing.T) {
|
||||
// searchMessage.Audio contains int64, int32 ... values that are converted to strings by the JSON marshaler,
|
||||
// so we need to convert the resource.Audio to align the expectations for the JSON comparison.
|
||||
audio, err := conversions.To[*searchMessage.Audio](resource.Audio)
|
||||
assert.NoError(t, err)
|
||||
|
||||
assert.Equal(t, resource.Audio.Bitrate, match.Entity.Audio.Bitrate)
|
||||
assert.JSONEq(t, opensearchtest.JSONMustMarshal(t, audio), opensearchtest.JSONMustMarshal(t, match.Entity.Audio))
|
||||
})
|
||||
// jsonMarshal marshals data to a JSON string, failing the running spec on error.
|
||||
func jsonMarshal(data any) string {
|
||||
GinkgoHelper()
|
||||
b, err := json.Marshal(data)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
return string(b)
|
||||
}
|
||||
|
||||
var _ = Describe("OpenSearchHitToMatch", func() {
|
||||
var (
|
||||
resource search.Resource
|
||||
hit opensearchgoAPI.SearchHit
|
||||
mtime time.Time
|
||||
match *searchMessage.Match
|
||||
err error
|
||||
)
|
||||
|
||||
BeforeEach(func() {
|
||||
resource = opensearchtest.Testdata.Resources.File
|
||||
resource.MimeType = "audio/mpeg"
|
||||
mtime = time.Date(2025, 7, 24, 15, 15, 1, 0, time.UTC)
|
||||
resource.Mtime = mtime.Format(time.RFC3339)
|
||||
resource.Favorites = []string{"cbf24bce-3e6e-4d9e-a2a2-cbf24bce3e6e"}
|
||||
|
||||
hit = opensearchgoAPI.SearchHit{
|
||||
Score: 1.1,
|
||||
Source: json.RawMessage(jsonMarshal(resource)),
|
||||
Highlight: map[string][]string{
|
||||
"Content": {"first match", "second match"},
|
||||
},
|
||||
}
|
||||
|
||||
match, err = convert.OpenSearchHitToMatch(hit)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
})
|
||||
|
||||
It("maps the score", func() {
|
||||
Expect(match.Score).To(Equal(hit.Score))
|
||||
})
|
||||
|
||||
It("maps all resource fields to the entity", func() {
|
||||
entity := match.Entity
|
||||
Expect(entity).ToNot(BeNil())
|
||||
|
||||
// reference (derived from RootID) and path
|
||||
Expect(entity.Ref.ResourceId.StorageId).To(Equal("1"))
|
||||
Expect(entity.Ref.ResourceId.SpaceId).To(Equal("1"))
|
||||
Expect(entity.Ref.ResourceId.OpaqueId).To(Equal("1"))
|
||||
Expect(entity.Ref.Path).To(Equal(resource.Path))
|
||||
|
||||
// resource id
|
||||
Expect(entity.Id.StorageId).To(Equal("1"))
|
||||
Expect(entity.Id.SpaceId).To(Equal("1"))
|
||||
Expect(entity.Id.OpaqueId).To(Equal("3"))
|
||||
|
||||
// parent id
|
||||
Expect(entity.ParentId.StorageId).To(Equal("1"))
|
||||
Expect(entity.ParentId.SpaceId).To(Equal("1"))
|
||||
Expect(entity.ParentId.OpaqueId).To(Equal("2"))
|
||||
|
||||
// scalar fields
|
||||
Expect(entity.Name).To(Equal(resource.Name))
|
||||
Expect(entity.Size).To(Equal(resource.Size))
|
||||
Expect(entity.Type).To(Equal(resource.Type))
|
||||
Expect(entity.MimeType).To(Equal(resource.MimeType))
|
||||
Expect(entity.Deleted).To(Equal(resource.Deleted))
|
||||
Expect(entity.Tags).To(Equal(resource.Tags))
|
||||
Expect(entity.Favorites).To(Equal(resource.Favorites))
|
||||
|
||||
// highlights are joined together
|
||||
Expect(entity.Highlights).To(Equal("first match; second match"))
|
||||
|
||||
// last modified time is parsed from the Mtime
|
||||
Expect(entity.LastModifiedTime).ToNot(BeNil())
|
||||
Expect(entity.LastModifiedTime.Seconds).To(Equal(mtime.Unix()))
|
||||
})
|
||||
|
||||
It("converts the media metadata to the expected types", func() {
|
||||
// searchMessage.Audio contains int64, int32 ... values that are converted to strings by the JSON marshaler,
|
||||
// so we need to convert the resource fields to align the expectations for the JSON comparison.
|
||||
expectedAudio, err := conversions.To[*searchMessage.Audio](resource.Audio)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(match.Entity.Audio.Bitrate).To(Equal(resource.Audio.Bitrate))
|
||||
Expect(jsonMarshal(match.Entity.Audio)).To(MatchJSON(jsonMarshal(expectedAudio)))
|
||||
|
||||
expectedImage, err := conversions.To[*searchMessage.Image](resource.Image)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(jsonMarshal(match.Entity.Image)).To(MatchJSON(jsonMarshal(expectedImage)))
|
||||
|
||||
expectedLocation, err := conversions.To[*searchMessage.GeoCoordinates](resource.Location)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(jsonMarshal(match.Entity.Location)).To(MatchJSON(jsonMarshal(expectedLocation)))
|
||||
|
||||
expectedPhoto, err := conversions.To[*searchMessage.Photo](resource.Photo)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(jsonMarshal(match.Entity.Photo)).To(MatchJSON(jsonMarshal(expectedPhoto)))
|
||||
})
|
||||
})
|
||||
@@ -1,6 +1,6 @@
|
||||
SHELL := bash
|
||||
NAME := web
|
||||
WEB_ASSETS_VERSION = v7.1.2
|
||||
WEB_ASSETS_VERSION = v7.1.4
|
||||
WEB_ASSETS_BRANCH = stable-7.1
|
||||
|
||||
ifneq (, $(shell command -v go 2> /dev/null)) # suppress `command not found warnings` for non go targets in CI
|
||||
|
||||
+11
-6
@@ -897,14 +897,19 @@ func (t *Tree) WarmupIDCache(root string, assimilate, onlyDirty bool) error {
|
||||
}
|
||||
|
||||
// skip irrelevant files
|
||||
if !t.Ignorer.IsSpaceRoot(path) && t.Ignorer.IsIgnored(path) {
|
||||
if info.IsDir() {
|
||||
if t.Ignorer.IsIgnored(path) {
|
||||
switch {
|
||||
case t.Ignorer.IsSpaceRoot(path):
|
||||
// ignore the space root itself, but do not skip the whole tree
|
||||
return nil
|
||||
case t.Ignorer.IsRootPath(path):
|
||||
// ignor the root path itself, but do not skip the whole tree
|
||||
return nil
|
||||
case info.IsDir():
|
||||
return filepath.SkipDir
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
if t.Ignorer.IsRootPath(path) {
|
||||
return nil // ignore the root paths
|
||||
}
|
||||
|
||||
if !info.IsDir() && !info.Mode().IsRegular() {
|
||||
|
||||
Vendored
+1
-1
@@ -1360,7 +1360,7 @@ github.com/opencloud-eu/icap-client
|
||||
# github.com/opencloud-eu/libre-graph-api-go v1.0.8-0.20260310090739-853d972b282d
|
||||
## explicit; go 1.18
|
||||
github.com/opencloud-eu/libre-graph-api-go
|
||||
# github.com/opencloud-eu/reva/v2 v2.46.6
|
||||
# github.com/opencloud-eu/reva/v2 v2.46.7
|
||||
## explicit; go 1.25.0
|
||||
github.com/opencloud-eu/reva/v2/cmd/revad/internal/grace
|
||||
github.com/opencloud-eu/reva/v2/cmd/revad/runtime
|
||||
|
||||
Reference in new issue
Block a user