blob: 00fa7061ce40b7cb4ec0a62386f9ccaccf623f61 [file] [log] [blame]
// 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 descriptor.async;
import 'dart:async';
import 'dart:io';
import '../../../../../pkg/pathos/lib/path.dart' as path;
import '../../descriptor.dart';
import '../../scheduled_test.dart';
import '../utils.dart';
/// A descriptor that validates that no file exists with the given name.
/// Creating this descriptor is a no-op and loading from it is invalid.
class NothingDescriptor extends Descriptor {
NothingDescriptor(String name)
: super(name);
Future create([String parent]) => new Future.immediate(null);
Future validate([String parent]) => schedule(() => validateNow(parent),
"validating '$name' doesn't exist");
Future validateNow([String parent]) => new Future.of(() {
if (parent == null) parent = defaultRoot;
var fullPath = path.join(parent, name);
if (new File(fullPath).existsSync()) {
throw "Expected nothing to exist at '$fullPath', but found a file.";
} else if (new Directory(fullPath).existsSync()) {
throw "Expected nothing to exist at '$fullPath', but found a "
"directory.";
} else {
return;
}
});
Stream<List<int>> load(String pathToLoad) => errorStream("Nothing "
"descriptors don't support load().");
Stream<List<int>> read() => errorStream("Nothing descriptors don't support "
"read().");
String describe() => "nothing at '$name'";
}