anchor.diff:          () => new TestProcessInvocation(project4, [project2, project3])
         ]);
       });
  -
  -    //    group('for one project with no dependencies', () {
  -//      MockProject project1;
  -//
  -//      setUp(() {
  -//        project1 = new MockProject('project1', new PubSpec());
  -//        scheduleForProjects([project1]);
  -//      });
  -//
  -//      test('calls processor once', () {
  -//        schedule(() => expect(processor.invocations, hasLength(1)));
  -//      });
  -//
  -//      test('calls processor once with expected project', () {
  -//        schedule(() =>
  -//            expect(processor.invocations.first.project, equals(project1)));
  -//      });
  -//
  -//      test('calls processor once with no dependencies', () {
  -//        schedule(
  -//            () => expect(processor.invocations.first.dependencies, isEmpty));
  -//      });
  -//    });
  -
     });
   }
   
  
positive.code:   TestProcessor.createTests(() => processor, weGetTheseInvocations);
  }
  
  Project aProject2(String name, {Iterable<Project> dependencies: const []}) =>
      aProject(name,
          pathDependencies: dependencies.map((p) => new PathReference(p.name)));
  
  Project aProject(String name,
      {Iterable<PathReference> pathDependencies: const []}) {
    final dependencies = {};
    pathDependencies.forEach((pd) {
  
negative.code: }
  
  runDaTests() {
    group('depthFirst', () {
      group('when no projects provided', () =>
          expectThat(withTheseProjects: () => [], weGetTheseInvocations: []));
  
      group('for a single project that has no dependencies', () {
        final project1 = aProject('project1');
  
        expectThat(
            withTheseProjects: () => [project1],
            weGetTheseInvocations: [
          () => new TestProcessInvocation(project1, const [])
        ]);
  