// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
|
// for details. All rights reserved. Use of this source code is governed by a
|
// BSD-style license that can be found in the LICENSE file.
|
|
@TestOn('vm')
|
|
import 'dart:io';
|
|
import 'package:test/test.dart';
|
import 'package:path/path.dart' as p;
|
|
void main() {
|
test('README example', () {
|
final readmeContent = File('README.md').readAsStringSync();
|
|
final exampleContent = _getExampleContent('example.dart');
|
expect(readmeContent, contains(exampleContent));
|
|
final exampleGeneratedContent = _getExampleContent('example.g.dart');
|
expect(readmeContent, contains(exampleGeneratedContent));
|
});
|
}
|
|
String _getExampleContent(String fileName) {
|
final lines = File(p.join('example', fileName)).readAsLinesSync();
|
|
var lastHadContent = false;
|
|
// All lines with content, except those starting with `/`.
|
// Also exclude blank lines that follow other blank lines
|
final cleanedSource = lines.where((l) {
|
if (l.startsWith(r'/')) {
|
return false;
|
}
|
|
if (l.trim().isNotEmpty) {
|
lastHadContent = true;
|
return true;
|
}
|
|
if (lastHadContent) {
|
lastHadContent = false;
|
return true;
|
}
|
|
return false;
|
}).join('\n');
|
|
return '''
|
```dart
|
$cleanedSource
|
```''';
|
}
|