| // Copyright 2013 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' as io; |
| |
| import 'package:litetest/litetest.dart'; |
| import 'package:path/path.dart' as p; |
| |
| void main() { |
| // Find a path to `dir_contents_diff.dart` from the working directory. |
| final String pkgPath = io.File.fromUri(io.Platform.script).parent.parent.path; |
| final String binPath = p.join( |
| pkgPath, |
| 'bin', |
| 'dir_contents_diff.dart', |
| ); |
| |
| // As a sanity check, ensure that the file exists. |
| if (!io.File(binPath).existsSync()) { |
| io.stderr.writeln('Unable to find $binPath'); |
| io.exitCode = 1; |
| return; |
| } |
| |
| // Runs `../bin/dir_contents_diff.dart` with the given arguments. |
| (int, String) runSync(String goldenPath, String dirPath) { |
| final io.ProcessResult result = io.Process.runSync( |
| io.Platform.resolvedExecutable, |
| <String>[binPath, goldenPath, dirPath], |
| ); |
| return (result.exitCode, result.stdout ?? result.stderr); |
| } |
| |
| test('lists files and diffs successfully', () { |
| final String goldenPath = p.join(pkgPath, 'test', 'file_ok.txt'); |
| final String dirPath = p.join(pkgPath, 'test', 'fixtures'); |
| final (int exitCode, String output) = runSync(goldenPath, dirPath); |
| if (exitCode != 0) { |
| io.stderr.writeln('Expected exit code 0, got $exitCode'); |
| io.stderr.writeln(output); |
| } |
| expect(exitCode, 0); |
| }); |
| |
| test('lists files and diffs successfully, even with an EOF newline', () { |
| final String goldenPath = p.join(pkgPath, 'test', 'file_ok_eof_newline.txt'); |
| final String dirPath = p.join(pkgPath, 'test', 'fixtures'); |
| final (int exitCode, String output) = runSync(goldenPath, dirPath); |
| if (exitCode != 0) { |
| io.stderr.writeln('Expected exit code 0, got $exitCode'); |
| io.stderr.writeln(output); |
| } |
| expect(exitCode, 0); |
| }); |
| |
| test('diff fails when an expected file is missing', () { |
| final String goldenPath = p.join(pkgPath, 'test', 'file_bad_missing.txt'); |
| final String dirPath = p.join(pkgPath, 'test', 'fixtures'); |
| final (int exitCode, String output) = runSync(goldenPath, dirPath); |
| if (exitCode == 0) { |
| io.stderr.writeln('Expected non-zero exit code, got $exitCode'); |
| io.stderr.writeln(output); |
| } |
| expect(exitCode, 1); |
| expect(output, contains('+a.txt')); |
| }); |
| |
| test('diff fails when an unexpected file is present', () { |
| final String goldenPath = p.join(pkgPath, 'test', 'file_bad_unexpected.txt'); |
| final String dirPath = p.join(pkgPath, 'test', 'fixtures'); |
| final (int exitCode, String output) = runSync(goldenPath, dirPath); |
| if (exitCode == 0) { |
| io.stderr.writeln('Expected non-zero exit code, got $exitCode'); |
| io.stderr.writeln(output); |
| } |
| expect(exitCode, 1); |
| expect(output, contains('-c.txt')); |
| }); |
| } |