Unverified Commit ae9fdefa authored by Danny Tuppeny's avatar Danny Tuppeny Committed by GitHub

Fix example code just showing endless spinner when deployed from Windows (#14878)

* If example code is not found, render a message instead of an endless spinner
* Trim codeTags to avoid lookup issues with windows carriage returns
* Trim \r on Windows off the end of code blocks so they're consistently \n
* Add a test to ensure sample code parses if built on Windows
* Add a comment about why we trimRight()

Fixes #14820.
parent e0956cbd
......@@ -117,7 +117,7 @@ class FullScreenCodeDialogState extends State<FullScreenCodeDialog> {
getExampleCode(widget.exampleCodeTag, DefaultAssetBundle.of(context)).then<Null>((String code) {
if (mounted) {
setState(() {
_exampleCode = code;
_exampleCode = code ?? 'Example code not found';
});
}
});
......
......@@ -33,7 +33,7 @@ Future<Null> _parseExampleCode(AssetBundle bundle) async {
if (line.startsWith(_kStartTag)) {
// Starting a new code block.
codeBlock = <String>[];
codeTag = line.substring(_kStartTag.length);
codeTag = line.substring(_kStartTag.length).trim();
} else {
// Just skipping the line.
}
......@@ -46,7 +46,9 @@ Future<Null> _parseExampleCode(AssetBundle bundle) async {
codeTag = null;
} else {
// Add to the current block
codeBlock.add(line);
// trimRight() to remove any \r on Windows
// without removing any useful indentation
codeBlock.add(line.trimRight());
}
}
}
......
......@@ -18,6 +18,9 @@ void main() {
final String codeSnippet1 = await getExampleCode('test_1', bundle);
expect(codeSnippet1, 'test 1 0\ntest 1 1');
final String codeSnippet3 = await getExampleCode('test_2_windows_breaks', bundle);
expect(codeSnippet3, 'windows test 2 0\nwindows test 2 1');
});
}
......@@ -32,6 +35,8 @@ test 0 1
test 1 0
test 1 1
// END
// START test_2_windows_breaks\r\nwindows test 2 0\r\nwindows test 2 1\r\n// END
''';
class TestAssetBundle extends AssetBundle {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment