• Greg Spencer's avatar
    Switch document generation to use the snippets package (#87231) · 10e4b040
    Greg Spencer authored
    Switch document generation to use the snippets package instead of the snippets code in the Flutter repo. In the process, some bugs in sample code analysis have been fixed, and I've fixed some more errors in the samples.
    
    This will allow the snippets package to be developed separately from the Flutter repo, and reduce the code in the Flutter repo.
    
    The snippets code is deleted in this PR.
    
    I also converted some comments in the snippet templates to be regular comments instead of doc comments, because having a doc comment block before the imports causes the Dart import sorter to lose the comment. They should have been regular comments in the first place.
    
    The snippets package resides in the assets-for-api-docs repo.
    
    The sample analysis has also been converted to be run in parallel, and I've bumped the Dartdoc version to 1.0.2.
    10e4b040
analyze_sample_code_test.dart 3.84 KB
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:io';

import 'common.dart';

void main() {
  // These tests don't run on Windows because the sample analyzer doesn't
  // support Windows as a platform, since it is only run on Linux in the
  // continuous integration tests.
  if (Platform.isWindows) {
    return;
  }

  test('analyze_sample_code smoke test', () {
    final ProcessResult process = Process.runSync(
      '../../bin/cache/dart-sdk/bin/dart',
      <String>['analyze_sample_code.dart', '--no-include-dart-ui', 'test/analyze-sample-code-test-input'],
    );
    final List<String> stdoutLines = process.stdout.toString().split('\n');
    final List<String> stderrLines = process.stderr.toString().split('\n');
    expect(process.exitCode, isNot(equals(0)));
    expect(stderrLines, containsAll(<String>[
      'In sample starting at dev/bots/test/analyze-sample-code-test-input/known_broken_documentation.dart:125:    child: Text(title),',
      ">>> error: The final variable 'title' can't be read because it is potentially unassigned at this point (read_potentially_unassigned_final)",
      'dev/bots/test/analyze-sample-code-test-input/known_broken_documentation.dart:30:9: new Opacity(',
      '>>> info: Unnecessary new keyword (unnecessary_new)',
      'dev/bots/test/analyze-sample-code-test-input/known_broken_documentation.dart:62:9: new Opacity(',
      '>>> info: Unnecessary new keyword (unnecessary_new)',
      "dev/bots/test/analyze-sample-code-test-input/known_broken_documentation.dart:111:9: final String? bar = 'Hello';",
      '>>> info: Prefer const over final for declarations (prefer_const_declarations)',
      'dev/bots/test/analyze-sample-code-test-input/known_broken_documentation.dart:112:9: final int foo = null;',
      '>>> info: Prefer const over final for declarations (prefer_const_declarations)',
      'dev/bots/test/analyze-sample-code-test-input/known_broken_documentation.dart:112:25: final int foo = null;',
      ">>> error: A value of type 'Null' can't be assigned to a variable of type 'int' (invalid_assignment)",
      'dev/bots/test/analyze-sample-code-test-input/known_broken_documentation.dart:120:24: const SizedBox(),',
      '>>> error: Unexpected comma at end of sample code. (missing_identifier)',
      'Found 2 sample code errors.',
    ]));
    expect(stdoutLines, containsAll(<String>[
      'Found 9 snippet code blocks, 0 sample code sections, and 2 dartpad sections.',
      'Starting analysis of code samples.',
    ]));
  });
  test('Analyzes dart:ui code', () {
    final ProcessResult process = Process.runSync(
      '../../bin/cache/dart-sdk/bin/dart',
      <String>[
        'analyze_sample_code.dart',
        '--dart-ui-location=test/analyze-sample-code-test-dart-ui',
        'test/analyze-sample-code-test-input',
      ],
    );
    final List<String> stdoutLines = process.stdout.toString().split('\n');
    final List<String> stderrLines = process.stderr.toString().split('\n');
    expect(process.exitCode, isNot(equals(0)));
    expect(stderrLines, containsAll(<String>[
      'In sample starting at dev/bots/test/analyze-sample-code-test-dart-ui/ui.dart:15:class MyStatelessWidget extends StatelessWidget {',
      ">>> error: Missing concrete implementation of 'StatelessWidget.build' (non_abstract_class_inherits_abstract_member)",
      'In sample starting at dev/bots/test/analyze-sample-code-test-dart-ui/ui.dart:15:class MyStringBuffer {',
      ">>> error: Classes can't be declared inside other classes (class_in_class)",
    ]));
    expect(stdoutLines, containsAll(<String>[
      // There is one sample code section in the test's dummy dart:ui code.
      'Found 9 snippet code blocks, 1 sample code sections, and 2 dartpad sections.',
      'Starting analysis of code samples.',
    ]));
  });
}