f181fdc8a8
BUG=7045 Review URL: https://codereview.chromium.org//12090081 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@17948 260f80e4-7a28-3924-810f-c04153c831b5
40 lines
1.2 KiB
Dart
40 lines
1.2 KiB
Dart
// Copyright (c) 2013, 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.
|
|
|
|
library utf8_readme_validator;
|
|
|
|
import 'dart:async';
|
|
import 'dart:utf';
|
|
|
|
import '../../../pkg/path/lib/path.dart' as path;
|
|
|
|
import '../entrypoint.dart';
|
|
import '../io.dart';
|
|
import '../utils.dart';
|
|
import '../validator.dart';
|
|
|
|
/// Validates that a package's README is valid utf-8.
|
|
class Utf8ReadmeValidator extends Validator {
|
|
Utf8ReadmeValidator(Entrypoint entrypoint)
|
|
: super(entrypoint);
|
|
|
|
Future validate() {
|
|
return entrypoint.root.readmePath.then((readme) {
|
|
if (readme == null) return;
|
|
var bytes = readBinaryFile(readme);
|
|
try {
|
|
// The second and third arguments here are the default values. The
|
|
// fourth tells [decodeUtf8] to throw an ArgumentError if `bytes` isn't
|
|
// valid utf-8.
|
|
decodeUtf8(bytes, 0, null, null);
|
|
} on ArgumentError catch (_) {
|
|
warnings.add("$readme contains invalid UTF-8.\n"
|
|
"This will cause it to be displayed incorrectly on "
|
|
"pub.dartlang.org.");
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|