mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-27 17:29:50 +08:00
@ -1,3 +1,8 @@
|
|||||||
|
- version: "1.76"
|
||||||
|
draft: true
|
||||||
|
bugs:
|
||||||
|
- text: "MD files should end with a single newline character #383"
|
||||||
|
|
||||||
- version: "1.74"
|
- version: "1.74"
|
||||||
date: 2021-02-23
|
date: 2021-02-23
|
||||||
reddit: https://www.reddit.com/r/GitJournal/comments/lr9n0r/gitjournal_v174/
|
reddit: https://www.reddit.com/r/GitJournal/comments/lr9n0r/gitjournal_v174/
|
||||||
|
@ -421,6 +421,11 @@ class Note with NotesNotifier {
|
|||||||
|
|
||||||
var file = File(filePath);
|
var file = File(filePath);
|
||||||
var contents = _serializer.encode(data);
|
var contents = _serializer.encode(data);
|
||||||
|
// Make sure all docs end with a \n
|
||||||
|
if (!contents.endsWith('\n')) {
|
||||||
|
contents += '\n';
|
||||||
|
}
|
||||||
|
|
||||||
await file.writeAsString(contents, flush: true);
|
await file.writeAsString(contents, flush: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ void main() {
|
|||||||
for (var i = 0; i < 3; i++) {
|
for (var i = 0; i < 3; i++) {
|
||||||
var note = Note(rootFolder, _getRandomFilePath(rootFolder.folderPath));
|
var note = Note(rootFolder, _getRandomFilePath(rootFolder.folderPath));
|
||||||
note.modified = DateTime(2020, 1, 10 + (i * 2));
|
note.modified = DateTime(2020, 1, 10 + (i * 2));
|
||||||
note.body = "$i";
|
note.body = "$i\n";
|
||||||
await note.save();
|
await note.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ void main() {
|
|||||||
_getRandomFilePath(sub1Folder.folderPath),
|
_getRandomFilePath(sub1Folder.folderPath),
|
||||||
);
|
);
|
||||||
note.modified = DateTime(2020, 1, 10 + (i * 2));
|
note.modified = DateTime(2020, 1, 10 + (i * 2));
|
||||||
note.body = "sub1-$i";
|
note.body = "sub1-$i\n";
|
||||||
await note.save();
|
await note.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ void main() {
|
|||||||
_getRandomFilePath(sub2Folder.folderPath),
|
_getRandomFilePath(sub2Folder.folderPath),
|
||||||
);
|
);
|
||||||
note.modified = DateTime(2020, 1, 10 + (i * 2));
|
note.modified = DateTime(2020, 1, 10 + (i * 2));
|
||||||
note.body = "sub2-$i";
|
note.body = "sub2-$i\n";
|
||||||
await note.save();
|
await note.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ void main() {
|
|||||||
_getRandomFilePath(p1Folder.folderPath),
|
_getRandomFilePath(p1Folder.folderPath),
|
||||||
);
|
);
|
||||||
note.modified = DateTime(2020, 1, 10 + (i * 2));
|
note.modified = DateTime(2020, 1, 10 + (i * 2));
|
||||||
note.body = "p1-$i";
|
note.body = "p1-$i\n";
|
||||||
await note.save();
|
await note.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,15 +98,15 @@ void main() {
|
|||||||
var notes = List<Note>.from(f.notes);
|
var notes = List<Note>.from(f.notes);
|
||||||
notes.sort((Note n1, Note n2) => n1.body.compareTo(n2.body));
|
notes.sort((Note n1, Note n2) => n1.body.compareTo(n2.body));
|
||||||
|
|
||||||
expect(notes[0].body, "0");
|
expect(notes[0].body, "0\n");
|
||||||
expect(notes[1].body, "1");
|
expect(notes[1].body, "1\n");
|
||||||
expect(notes[2].body, "2");
|
expect(notes[2].body, "2\n");
|
||||||
expect(notes[3].body, "p1-0");
|
expect(notes[3].body, "p1-0\n");
|
||||||
expect(notes[4].body, "p1-1");
|
expect(notes[4].body, "p1-1\n");
|
||||||
expect(notes[5].body, "sub1-0");
|
expect(notes[5].body, "sub1-0\n");
|
||||||
expect(notes[6].body, "sub1-1");
|
expect(notes[6].body, "sub1-1\n");
|
||||||
expect(notes[7].body, "sub2-0");
|
expect(notes[7].body, "sub2-0\n");
|
||||||
expect(notes[8].body, "sub2-1");
|
expect(notes[8].body, "sub2-1\n");
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Should add a note properly', () async {
|
test('Should add a note properly', () async {
|
||||||
@ -115,7 +115,7 @@ void main() {
|
|||||||
var p1 = (f.fsFolder as NotesFolderFS).getFolderWithSpec("sub1/p1");
|
var p1 = (f.fsFolder as NotesFolderFS).getFolderWithSpec("sub1/p1");
|
||||||
var note = Note(p1, p.join(p1.folderPath, "new.md"));
|
var note = Note(p1, p.join(p1.folderPath, "new.md"));
|
||||||
note.modified = DateTime(2020, 2, 1);
|
note.modified = DateTime(2020, 2, 1);
|
||||||
note.body = "new";
|
note.body = "new\n";
|
||||||
await note.save();
|
await note.save();
|
||||||
p1.add(note);
|
p1.add(note);
|
||||||
|
|
||||||
@ -124,16 +124,16 @@ void main() {
|
|||||||
var notes = List<Note>.from(f.notes);
|
var notes = List<Note>.from(f.notes);
|
||||||
notes.sort((Note n1, Note n2) => n1.body.compareTo(n2.body));
|
notes.sort((Note n1, Note n2) => n1.body.compareTo(n2.body));
|
||||||
|
|
||||||
expect(notes[0].body, "0");
|
expect(notes[0].body, "0\n");
|
||||||
expect(notes[1].body, "1");
|
expect(notes[1].body, "1\n");
|
||||||
expect(notes[2].body, "2");
|
expect(notes[2].body, "2\n");
|
||||||
expect(notes[3].body, "new");
|
expect(notes[3].body, "new\n");
|
||||||
expect(notes[4].body, "p1-0");
|
expect(notes[4].body, "p1-0\n");
|
||||||
expect(notes[5].body, "p1-1");
|
expect(notes[5].body, "p1-1\n");
|
||||||
expect(notes[6].body, "sub1-0");
|
expect(notes[6].body, "sub1-0\n");
|
||||||
expect(notes[7].body, "sub1-1");
|
expect(notes[7].body, "sub1-1\n");
|
||||||
expect(notes[8].body, "sub2-0");
|
expect(notes[8].body, "sub2-0\n");
|
||||||
expect(notes[9].body, "sub2-1");
|
expect(notes[9].body, "sub2-1\n");
|
||||||
|
|
||||||
// FIXME: Check if the callback for added is called with the correct index
|
// FIXME: Check if the callback for added is called with the correct index
|
||||||
});
|
});
|
||||||
|
@ -30,11 +30,11 @@ void main() {
|
|||||||
|
|
||||||
var parent = NotesFolderFS(null, tempDir.path, Settings(''));
|
var parent = NotesFolderFS(null, tempDir.path, Settings(''));
|
||||||
var n1 = Note(parent, n1Path);
|
var n1 = Note(parent, n1Path);
|
||||||
n1.body = "test";
|
n1.body = "test\n";
|
||||||
n1.created = dt;
|
n1.created = dt;
|
||||||
|
|
||||||
var n2 = Note(parent, n2Path);
|
var n2 = Note(parent, n2Path);
|
||||||
n2.data = MdYamlDoc(body: "test2", props: props);
|
n2.data = MdYamlDoc(body: "test2\n", props: props);
|
||||||
|
|
||||||
notes = [n1, n2];
|
notes = [n1, n2];
|
||||||
});
|
});
|
||||||
|
@ -25,7 +25,8 @@ bar: Foo
|
|||||||
modified: 2017-02-15T22:41:19+01:00
|
modified: 2017-02-15T22:41:19+01:00
|
||||||
---
|
---
|
||||||
|
|
||||||
Hello""";
|
Hello
|
||||||
|
""";
|
||||||
|
|
||||||
var notePath = p.join(tempDir.path, "note.md");
|
var notePath = p.join(tempDir.path, "note.md");
|
||||||
await File(notePath).writeAsString(content);
|
await File(notePath).writeAsString(content);
|
||||||
@ -43,7 +44,8 @@ bar: Foo
|
|||||||
modified: 2019-12-02T04:00:00+00:00
|
modified: 2019-12-02T04:00:00+00:00
|
||||||
---
|
---
|
||||||
|
|
||||||
Hello""";
|
Hello
|
||||||
|
""";
|
||||||
|
|
||||||
var actualContent = File(notePath).readAsStringSync();
|
var actualContent = File(notePath).readAsStringSync();
|
||||||
expect(actualContent, equals(expectedContent));
|
expect(actualContent, equals(expectedContent));
|
||||||
@ -55,7 +57,8 @@ bar: Foo
|
|||||||
mod: 2017-02-15T22:41:19+01:00
|
mod: 2017-02-15T22:41:19+01:00
|
||||||
---
|
---
|
||||||
|
|
||||||
Hello""";
|
Hello
|
||||||
|
""";
|
||||||
|
|
||||||
var notePath = p.join(tempDir.path, "note.md");
|
var notePath = p.join(tempDir.path, "note.md");
|
||||||
await File(notePath).writeAsString(content);
|
await File(notePath).writeAsString(content);
|
||||||
@ -73,7 +76,8 @@ bar: Foo
|
|||||||
mod: 2019-12-02T04:00:00+00:00
|
mod: 2019-12-02T04:00:00+00:00
|
||||||
---
|
---
|
||||||
|
|
||||||
Hello""";
|
Hello
|
||||||
|
""";
|
||||||
|
|
||||||
var actualContent = File(notePath).readAsStringSync();
|
var actualContent = File(notePath).readAsStringSync();
|
||||||
expect(actualContent, equals(expectedContent));
|
expect(actualContent, equals(expectedContent));
|
||||||
@ -85,7 +89,8 @@ bar: Foo
|
|||||||
tags: [A, B]
|
tags: [A, B]
|
||||||
---
|
---
|
||||||
|
|
||||||
Hello""";
|
Hello
|
||||||
|
""";
|
||||||
|
|
||||||
var notePath = p.join(tempDir.path, "note5.md");
|
var notePath = p.join(tempDir.path, "note5.md");
|
||||||
await File(notePath).writeAsString(content);
|
await File(notePath).writeAsString(content);
|
||||||
@ -109,7 +114,8 @@ bar: Foo
|
|||||||
tags: [A, C, D]
|
tags: [A, C, D]
|
||||||
---
|
---
|
||||||
|
|
||||||
Hello""";
|
Hello
|
||||||
|
""";
|
||||||
|
|
||||||
var actualContent = File(notePath).readAsStringSync();
|
var actualContent = File(notePath).readAsStringSync();
|
||||||
expect(actualContent, equals(expectedContent));
|
expect(actualContent, equals(expectedContent));
|
||||||
@ -143,7 +149,7 @@ bar: Foo
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('Should parse wiki style links', () async {
|
test('Should parse wiki style links', () async {
|
||||||
var content = "[[GitJournal]] needs some [[Wild Fire]]";
|
var content = "[[GitJournal]] needs some [[Wild Fire]]\n";
|
||||||
|
|
||||||
var notePath = p.join(tempDir.path, "note63.md");
|
var notePath = p.join(tempDir.path, "note63.md");
|
||||||
await File(notePath).writeAsString(content);
|
await File(notePath).writeAsString(content);
|
||||||
|
@ -27,7 +27,7 @@ void main() {
|
|||||||
p.join(folder.folderPath, "${random.nextInt(1000)}.md"),
|
p.join(folder.folderPath, "${random.nextInt(1000)}.md"),
|
||||||
);
|
);
|
||||||
note.modified = DateTime(2020, 1, 10 + (i * 2));
|
note.modified = DateTime(2020, 1, 10 + (i * 2));
|
||||||
note.body = "$i";
|
note.body = "$i\n";
|
||||||
await note.save();
|
await note.save();
|
||||||
}
|
}
|
||||||
await folder.loadRecursively();
|
await folder.loadRecursively();
|
||||||
@ -49,11 +49,11 @@ void main() {
|
|||||||
expect(sf.subFolders.length, 0);
|
expect(sf.subFolders.length, 0);
|
||||||
expect(sf.notes.length, 5);
|
expect(sf.notes.length, 5);
|
||||||
|
|
||||||
expect(sf.notes[0].body, "4");
|
expect(sf.notes[0].body, "4\n");
|
||||||
expect(sf.notes[1].body, "3");
|
expect(sf.notes[1].body, "3\n");
|
||||||
expect(sf.notes[2].body, "2");
|
expect(sf.notes[2].body, "2\n");
|
||||||
expect(sf.notes[3].body, "1");
|
expect(sf.notes[3].body, "1\n");
|
||||||
expect(sf.notes[4].body, "0");
|
expect(sf.notes[4].body, "0\n");
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Should on modification remains sorted', () async {
|
test('Should on modification remains sorted', () async {
|
||||||
@ -63,14 +63,14 @@ void main() {
|
|||||||
SortingMode(SortingField.Modified, SortingOrder.Descending),
|
SortingMode(SortingField.Modified, SortingOrder.Descending),
|
||||||
);
|
);
|
||||||
|
|
||||||
var i = sf.notes.indexWhere((n) => n.body == "1");
|
var i = sf.notes.indexWhere((n) => n.body == "1\n");
|
||||||
sf.notes[i].modified = DateTime(2020, 2, 1);
|
sf.notes[i].modified = DateTime(2020, 2, 1);
|
||||||
|
|
||||||
expect(sf.notes[0].body, "1");
|
expect(sf.notes[0].body, "1\n");
|
||||||
expect(sf.notes[1].body, "4");
|
expect(sf.notes[1].body, "4\n");
|
||||||
expect(sf.notes[2].body, "3");
|
expect(sf.notes[2].body, "3\n");
|
||||||
expect(sf.notes[3].body, "2");
|
expect(sf.notes[3].body, "2\n");
|
||||||
expect(sf.notes[4].body, "0");
|
expect(sf.notes[4].body, "0\n");
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Should add new note correctly', () async {
|
test('Should add new note correctly', () async {
|
||||||
@ -82,19 +82,19 @@ void main() {
|
|||||||
|
|
||||||
var note = Note(folder, p.join(folder.folderPath, "new.md"));
|
var note = Note(folder, p.join(folder.folderPath, "new.md"));
|
||||||
note.modified = DateTime(2020, 2, 1);
|
note.modified = DateTime(2020, 2, 1);
|
||||||
note.body = "new";
|
note.body = "new\n";
|
||||||
await note.save();
|
await note.save();
|
||||||
|
|
||||||
folder.add(note);
|
folder.add(note);
|
||||||
|
|
||||||
expect(sf.notes.length, 6);
|
expect(sf.notes.length, 6);
|
||||||
|
|
||||||
expect(sf.notes[0].body, "new");
|
expect(sf.notes[0].body, "new\n");
|
||||||
expect(sf.notes[1].body, "4");
|
expect(sf.notes[1].body, "4\n");
|
||||||
expect(sf.notes[2].body, "3");
|
expect(sf.notes[2].body, "3\n");
|
||||||
expect(sf.notes[3].body, "2");
|
expect(sf.notes[3].body, "2\n");
|
||||||
expect(sf.notes[4].body, "1");
|
expect(sf.notes[4].body, "1\n");
|
||||||
expect(sf.notes[5].body, "0");
|
expect(sf.notes[5].body, "0\n");
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Should add new note to end works correctly', () async {
|
test('Should add new note to end works correctly', () async {
|
||||||
@ -106,19 +106,19 @@ void main() {
|
|||||||
|
|
||||||
var note = Note(folder, p.join(folder.folderPath, "new.md"));
|
var note = Note(folder, p.join(folder.folderPath, "new.md"));
|
||||||
note.modified = DateTime(2020, 1, 1);
|
note.modified = DateTime(2020, 1, 1);
|
||||||
note.body = "new";
|
note.body = "new\n";
|
||||||
await note.save();
|
await note.save();
|
||||||
|
|
||||||
folder.add(note);
|
folder.add(note);
|
||||||
|
|
||||||
expect(sf.notes.length, 6);
|
expect(sf.notes.length, 6);
|
||||||
|
|
||||||
expect(sf.notes[0].body, "4");
|
expect(sf.notes[0].body, "4\n");
|
||||||
expect(sf.notes[1].body, "3");
|
expect(sf.notes[1].body, "3\n");
|
||||||
expect(sf.notes[2].body, "2");
|
expect(sf.notes[2].body, "2\n");
|
||||||
expect(sf.notes[3].body, "1");
|
expect(sf.notes[3].body, "1\n");
|
||||||
expect(sf.notes[4].body, "0");
|
expect(sf.notes[4].body, "0\n");
|
||||||
expect(sf.notes[5].body, "new");
|
expect(sf.notes[5].body, "new\n");
|
||||||
});
|
});
|
||||||
|
|
||||||
test('If still sorted while loading the notes', () async {
|
test('If still sorted while loading the notes', () async {
|
||||||
@ -137,11 +137,11 @@ void main() {
|
|||||||
expect(sf.subFolders.length, 0);
|
expect(sf.subFolders.length, 0);
|
||||||
expect(sf.notes.length, 5);
|
expect(sf.notes.length, 5);
|
||||||
|
|
||||||
expect(sf.notes[0].body, "4");
|
expect(sf.notes[0].body, "4\n");
|
||||||
expect(sf.notes[1].body, "3");
|
expect(sf.notes[1].body, "3\n");
|
||||||
expect(sf.notes[2].body, "2");
|
expect(sf.notes[2].body, "2\n");
|
||||||
expect(sf.notes[3].body, "1");
|
expect(sf.notes[3].body, "1\n");
|
||||||
expect(sf.notes[4].body, "0");
|
expect(sf.notes[4].body, "0\n");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user