improve parsing of desktop entries.
- speed up parsing by not creating nearly as many strings. - fix basic whitespace handling. fixes #4 goos: linux goarch: amd64 pkg: github.com/nwg-piotr/nwg-drawer cpu: AMD Ryzen 7 1800X Eight-Core Processor BenchmarkDesktopEntryParserOld-16 10000 146094 ns/op BenchmarkDesktopEntryParser-16 26097 43303 ns/op PASS ok github.com/nwg-piotr/nwg-drawer 3.090s
This commit is contained in:
62
xdgdesktop_parser_test.go
Normal file
62
xdgdesktop_parser_test.go
Normal file
@@ -0,0 +1,62 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var result desktopEntry
|
||||
|
||||
func BenchmarkDesktopEntryParserOld(b *testing.B) {
|
||||
var entry desktopEntry
|
||||
for n := 0; n < b.N; n++ {
|
||||
entry, _ = parseDesktopEntryFileDeprecated("id", "./desktop-directories/game.directory")
|
||||
}
|
||||
result = entry
|
||||
}
|
||||
|
||||
func BenchmarkDesktopEntryParser(b *testing.B) {
|
||||
var entry desktopEntry
|
||||
for n := 0; n < b.N; n++ {
|
||||
entry, _ = parseDesktopEntryFile("id", "./desktop-directories/game.directory")
|
||||
}
|
||||
result = entry
|
||||
}
|
||||
|
||||
func TestWhitespaceHandling(t *testing.T) {
|
||||
const whitespace = `[Desktop Entry]
|
||||
Categories = Debugger; Development; Git; IDE; Programming; TextEditor;
|
||||
Comment = Editor for building and debugging modern web and cloud applications
|
||||
Exec = bash -c "code-insiders ~/Workspaces/Linux/Flutter.code-workspace"
|
||||
GenericName = Text Editor
|
||||
Icon = vscode-flutter
|
||||
Keywords = editor; IDE; plaintext; text; write;
|
||||
MimeType = application/x-shellscript; inode/directory; text/english; text/plain; text/x-c; text/x-c++; text/x-c++hdr; text/x-c++src; text/x-chdr; text/x-csrc; text/x-java; text/x-makefile; text/x-moc; text/x-pascal; text/x-tcl; text/x-tex;
|
||||
Name = VSCode Insiders with Flutter
|
||||
Name[pt] = VSCode Insiders com Flutter
|
||||
StartupNotify = true
|
||||
StartupWMClass = code - insiders
|
||||
Terminal = false
|
||||
NoDisplay = false
|
||||
Type = Application
|
||||
Version = 1.0`
|
||||
|
||||
// entry, err := parseDesktopEntryDeprecated("id", strings.Split(whitespace, "\n"))
|
||||
*lang = "pt"
|
||||
entry, err := parseDesktopEntry("id", strings.NewReader(whitespace))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if entry.Name != "VSCode Insiders with Flutter" {
|
||||
t.Error("failed to parse desktop entry name")
|
||||
}
|
||||
|
||||
if entry.NameLoc != "VSCode Insiders com Flutter" {
|
||||
t.Error("failed to parse localized name")
|
||||
}
|
||||
|
||||
if entry.NoDisplay {
|
||||
t.Error("failed to parse desktop entry no display")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user