Skip to content

Commit

Permalink
Make IntelliJPlugins tests use MemoryFileSystem. (#16341)
Browse files Browse the repository at this point in the history
  • Loading branch information
scheglov committed Apr 8, 2018
1 parent bdc0619 commit d121cbc
Showing 1 changed file with 57 additions and 8 deletions.
65 changes: 57 additions & 8 deletions packages/flutter_tools/test/intellij/intellij_test.dart
@@ -1,7 +1,11 @@
// Copyright 2018 The Chromium 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:convert';

import 'package:archive/archive.dart';
import 'package:file/file.dart';
import 'package:file/memory.dart';
import 'package:flutter_tools/src/base/file_system.dart';
import 'package:flutter_tools/src/doctor.dart';
import 'package:flutter_tools/src/intellij/intellij.dart';
Expand All @@ -10,18 +14,50 @@ import 'package:test/test.dart';
import '../src/context.dart';

void main() {
FileSystem fs;

void writeFileCreatingDirectories(String path, List<int> bytes) {
final File file = fs.file(path);
file.parent.createSync(recursive: true);
file.writeAsBytesSync(bytes);
}

setUp(() {
fs = new MemoryFileSystem();
});

group('IntelliJ', () {
group('plugins', () {
testUsingContext('found', () async {
final String pluginsPath =
fs.path.join('test', 'data', 'intellij', 'plugins');
final IntelliJPlugins plugins = new IntelliJPlugins(pluginsPath);
final IntelliJPlugins plugins = new IntelliJPlugins(_kPluginsPath);

final Archive dartJarArchive =
buildSingleFileArchive('META-INF/plugin.xml', r'''
<idea-plugin version="2">
<name>Dart</name>
<version>162.2485</version>
</idea-plugin>
''');
writeFileCreatingDirectories(
fs.path.join(_kPluginsPath, 'Dart', 'lib', 'Dart.jar'),
new ZipEncoder().encode(dartJarArchive));

final Archive flutterJarArchive =
buildSingleFileArchive('META-INF/plugin.xml', r'''
<idea-plugin version="2">
<name>Flutter</name>
<version>0.1.3</version>
</idea-plugin>
''');
writeFileCreatingDirectories(
fs.path.join(_kPluginsPath, 'flutter-intellij.jar'),
new ZipEncoder().encode(flutterJarArchive));

final List<ValidationMessage> messages = <ValidationMessage>[];
plugins.validatePackage(messages, <String>['Dart'], 'Dart');
plugins.validatePackage(messages,
<String>['flutter-intellij', 'flutter-intellij.jar'], 'Flutter',
minVersion: IntelliJPlugins.kMinFlutterPluginVersion);
plugins.validatePackage(messages, <String>['Dart'], 'Dart');

ValidationMessage message = messages
.firstWhere((ValidationMessage m) => m.message.startsWith('Dart '));
Expand All @@ -31,18 +67,18 @@ void main() {
(ValidationMessage m) => m.message.startsWith('Flutter '));
expect(message.message, contains('Flutter plugin version 0.1.3'));
expect(message.message, contains('recommended minimum version'));
}, overrides: <Type, Generator>{
FileSystem: () => fs,
});

testUsingContext('not found', () async {
final String pluginsPath =
fs.path.join('test', 'data', 'intellij', 'no_plugins');
final IntelliJPlugins plugins = new IntelliJPlugins(pluginsPath);
final IntelliJPlugins plugins = new IntelliJPlugins(_kPluginsPath);

final List<ValidationMessage> messages = <ValidationMessage>[];
plugins.validatePackage(messages, <String>['Dart'], 'Dart');
plugins.validatePackage(messages,
<String>['flutter-intellij', 'flutter-intellij.jar'], 'Flutter',
minVersion: IntelliJPlugins.kMinFlutterPluginVersion);
plugins.validatePackage(messages, <String>['Dart'], 'Dart');

ValidationMessage message = messages
.firstWhere((ValidationMessage m) => m.message.startsWith('Dart '));
Expand All @@ -51,7 +87,20 @@ void main() {
message = messages.firstWhere(
(ValidationMessage m) => m.message.startsWith('Flutter '));
expect(message.message, contains('Flutter plugin not installed'));
}, overrides: <Type, Generator>{
FileSystem: () => fs,
});
});
});
}

const String _kPluginsPath = '/data/intellij/plugins';

Archive buildSingleFileArchive(String path, String content) {
final Archive archive = new Archive();

final List<int> bytes = utf8.encode(content);
archive.addFile(new ArchiveFile(path, bytes.length, bytes));

return archive;
}

0 comments on commit d121cbc

Please sign in to comment.