Merge pull request #25 from gspencergoog/switch_on_actions
Turns on GitHub Actions so that we can have some CI in here.
diff --git a/.github/workflows/process_runner.yml b/.github/workflows/process_runner.yml
new file mode 100644
index 0000000..d803c61
--- /dev/null
+++ b/.github/workflows/process_runner.yml
@@ -0,0 +1,38 @@
+name: Process Package
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ branches: [ master ]
+ workflow_dispatch:
+
+jobs:
+ correctness:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
+ - uses: dart-lang/setup-dart@9a04e6d73cca37bd455e0608d7e5092f881fd603
+ with:
+ sdk: dev
+ - name: Install dependencies
+ run: dart pub upgrade
+ - name: Verify formatting
+ run: dart format --output=none --line-length=100 --set-exit-if-changed .
+ - name: Analyze project source
+ run: dart analyze --fatal-infos
+ test:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ os: [ubuntu-latest, macos-latest, windows-latest]
+ sdk: [stable, beta, dev]
+ steps:
+ - uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
+ - uses: dart-lang/setup-dart@9a04e6d73cca37bd455e0608d7e5092f881fd603
+ with:
+ sdk: ${{ matrix.sdk }}
+ - name: Install dependencies
+ run: dart pub upgrade
+ - name: Run Tests
+ run: dart test
diff --git a/analysis_options.yaml b/analysis_options.yaml
index db2cc78..f7b8674 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -11,10 +11,6 @@
# See the configuration guide for more
# https://github.com/dart-lang/sdk/tree/master/pkg/analyzer#configuring-the-analyzer
-# Too many false positives: pedantic enforces "omit_local_variable_types", and
-# we don't.
-# include: package:pedantic/analysis_options.yaml
-
analyzer:
strong-mode:
implicit-casts: false
@@ -44,16 +40,18 @@
# - always_put_required_named_parameters_first # we prefer having parameters in the same order as fields https://github.com/flutter/flutter/issues/10219
- always_require_non_null_named_parameters
- always_specify_types
+ # - always_use_package_imports # we do this commonly
- annotate_overrides
# - avoid_annotating_with_dynamic # conflicts with always_specify_types
- # - avoid_as # required for implicit-casts: true
- avoid_bool_literals_in_conditional_expressions
# - avoid_catches_without_on_clauses # we do this commonly
# - avoid_catching_errors # we do this commonly
- avoid_classes_with_only_static_members
# - avoid_double_and_int_checks # only useful when targeting JS runtime
+ - avoid_dynamic_calls
- avoid_empty_else
- avoid_equals_and_hash_code_on_mutable_classes
+ - avoid_escaping_inner_quotes
- avoid_field_initializers_in_const_classes
- avoid_function_literals_in_foreach_calls
# - avoid_implementing_value_types # not yet tested
@@ -72,12 +70,13 @@
- avoid_returning_null_for_void
# - avoid_returning_this # there are plenty of valid reasons to return this
# - avoid_setters_without_getters # not yet tested
- # - avoid_shadowing_type_parameters # not yet tested
+ - avoid_shadowing_type_parameters
- avoid_single_cascade_in_expression_statements
- avoid_slow_async_io
+ - avoid_type_to_string
- avoid_types_as_parameter_names
# - avoid_types_on_closure_parameters # conflicts with always_specify_types
- # - avoid_unnecessary_containers # not yet tested
+ - avoid_unnecessary_containers
- avoid_unused_constructor_parameters
- avoid_void_async
# - avoid_web_libraries_in_flutter # not yet tested
@@ -86,37 +85,46 @@
- camel_case_types
- cancel_subscriptions
# - cascade_invocations # not yet tested
+ - cast_nullable_to_non_nullable
# - close_sinks # not reliable enough
- # - comment_references # blocked on https://github.com/flutter/flutter/issues/20765
+ # - comment_references # blocked on https://github.com/dart-lang/linter/issues/1142
# - constant_identifier_names # needs an opt-out https://github.com/dart-lang/linter/issues/204
- control_flow_in_finally
- # - curly_braces_in_flow_control_structures # not yet tested
+ # - curly_braces_in_flow_control_structures # not required by flutter style
+ - deprecated_consistency
# - diagnostic_describe_all_properties # not yet tested
- directives_ordering
+ # - do_not_use_environment # we do this commonly
- empty_catches
- empty_constructor_bodies
- empty_statements
- # - file_names # not yet tested
+ - exhaustive_cases
+ - file_names
- flutter_style_todos
- hash_and_equals
- implementation_imports
- - invariant_booleans # too many false positives: https://github.com/dart-lang/linter/issues/811
+ # - invariant_booleans # too many false positives: https://github.com/dart-lang/linter/issues/811
- iterable_contains_unrelated_type
- # - join_return_with_assignment # not yet tested
+ # - join_return_with_assignment # not required by flutter style
+ - leading_newlines_in_multiline_strings
- library_names
- library_prefixes
- # - lines_longer_than_80_chars # not yet tested
+ - library_private_types_in_public_api
+ # - lines_longer_than_80_chars # not required by flutter style
- list_remove_unrelated_type
# - literal_only_boolean_expressions # too many false positives: https://github.com/dart-lang/sdk/issues/34181
- # - missing_whitespace_between_adjacent_strings # not yet tested
+ - missing_whitespace_between_adjacent_strings
- no_adjacent_strings_in_list
+ # - no_default_cases # too many false positives
- no_duplicate_case_values
- # - no_logic_in_create_state # not yet tested
- # - no_runtimeType_toString # not yet tested
+ - no_logic_in_create_state
+ # - no_runtimeType_toString # ok in tests; we enable this only in packages/
+ - noop_primitive_operations
- non_constant_identifier_names
- # - null_closures # not yet tested
+ - null_check_on_nullable_type_parameter
+ - null_closures
# - omit_local_variable_types # opposite of always_specify_types
- - one_member_abstracts # too many false positives
+ # - one_member_abstracts # too many false positives
# - only_throw_errors # https://github.com/flutter/flutter/issues/5792
- overridden_fields
- package_api_docs
@@ -125,14 +133,14 @@
# - parameter_assignments # we do this commonly
- prefer_adjacent_string_concatenation
- prefer_asserts_in_initializer_lists
- # - prefer_asserts_with_message # not yet tested
+ # - prefer_asserts_with_message # not required by flutter style
- prefer_collection_literals
- prefer_conditional_assignment
- prefer_const_constructors
- prefer_const_constructors_in_immutables
- prefer_const_declarations
- prefer_const_literals_to_create_immutables
- # - prefer_constructors_over_static_methods # not yet tested
+ # - prefer_constructors_over_static_methods # far too many false positives
- prefer_contains
# - prefer_double_quotes # opposite of prefer_single_quotes
- prefer_equal_for_default_values
@@ -142,60 +150,72 @@
- prefer_final_locals
- prefer_for_elements_to_map_fromIterable
- prefer_foreach
- # - prefer_function_declarations_over_variables # not yet tested
+ - prefer_function_declarations_over_variables
- prefer_generic_function_type_aliases
- prefer_if_elements_to_conditional_expressions
- prefer_if_null_operators
- prefer_initializing_formals
- prefer_inlined_adds
- # - prefer_int_literals # not yet tested
- # - prefer_interpolation_to_compose_strings # not yet tested
+ # - prefer_int_literals # conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#use-double-literals-for-double-constants
+ - prefer_interpolation_to_compose_strings
- prefer_is_empty
- prefer_is_not_empty
- prefer_is_not_operator
- prefer_iterable_whereType
# - prefer_mixin # https://github.com/dart-lang/language/issues/32
- # - prefer_null_aware_operators # disable until NNBD, see https://github.com/flutter/flutter/pull/32711#issuecomment-492930932
- # - prefer_relative_imports # not yet tested
+ - prefer_null_aware_operators
+ # - prefer_relative_imports # incompatible with sub-package imports
- prefer_single_quotes
- prefer_spread_collections
- prefer_typing_uninitialized_variables
- prefer_void_to_null
- # - provide_deprecation_message # not yet tested
+ - provide_deprecation_message
# - public_member_api_docs # enabled on a case-by-case basis; see e.g. packages/analysis_options.yaml
- recursive_getters
+ - sized_box_for_whitespace
- slash_for_doc_comments
# - sort_child_properties_last # not yet tested
- sort_constructors_first
- - sort_pub_dependencies
+ # - sort_pub_dependencies # prevents separating pinned transitive dependencies
- sort_unnamed_constructors_first
- test_types_in_equals
- throw_in_finally
+ - tighten_type_of_initializing_formals
# - type_annotate_public_apis # subset of always_specify_types
- type_init_formals
- - unawaited_futures
- # - unnecessary_await_in_return # not yet tested
+ # - unawaited_futures # too many false positives
+ - unnecessary_await_in_return
- unnecessary_brace_in_string_interps
- unnecessary_const
# - unnecessary_final # conflicts with prefer_final_locals
- unnecessary_getters_setters
- - unnecessary_lambdas
+ # - unnecessary_lambdas # has false positives: https://github.com/dart-lang/linter/issues/498
- unnecessary_new
- unnecessary_null_aware_assignments
+ - unnecessary_null_checks
- unnecessary_null_in_if_null_operators
+ - unnecessary_nullable_for_final_variable_declarations
- unnecessary_overrides
- unnecessary_parenthesis
+ # - unnecessary_raw_strings # not yet tested
- unnecessary_statements
+ - unnecessary_string_escapes
- unnecessary_string_interpolations
- unnecessary_this
- unrelated_type_equality_checks
# - unsafe_html # not yet tested
- use_full_hex_values_for_flutter_colors
- # - use_function_type_syntax_for_parameters # not yet tested
- # - use_key_in_widget_constructors # not yet tested
+ - use_function_type_syntax_for_parameters
+ # - use_if_null_to_convert_nulls_to_bools # not yet tested
+ - use_is_even_rather_than_modulo
+ - use_key_in_widget_constructors
+ - use_late_for_private_fields_and_variables
+ - use_named_constants
+ - use_raw_strings
- use_rethrow_when_possible
# - use_setters_to_change_properties # not yet tested
- - use_string_buffers
- - use_to_and_as_if_applicable
+ # - use_string_buffers # has false positives: https://github.com/dart-lang/sdk/issues/34182
+ - use_test_throws_matchers
+ # - use_to_and_as_if_applicable # has false positives, so we prefer to catch this by code-review
- valid_regexps
- void_checks
diff --git a/ci/analyze.sh b/ci/analyze.sh
deleted file mode 100755
index b3a1f1d..0000000
--- a/ci/analyze.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-# Copyright 2020 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.
-
-# Fast fail the script on failures.
-set -e
-
-# So cd doesn't print the path it changes to.
-unset CDPATH
-
-# So that developers can run this script from anywhere and it will work as
-# expected.
-SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)"
-REPO_DIR="$(dirname "$SCRIPT_DIR")"
-
-function analyze() {
- # Make sure we pass the analyzer
- echo "Checking dartanalyzer..."
- if ! fails_analyzer="$(find lib test ci -name "*.dart" -print0 | xargs -0 dartanalyzer --options analysis_options.yaml)"; then
- echo "FAILED"
- echo "$fails_analyzer"
- exit 1
- fi
- echo "PASSED"
-}
-
-cd "$REPO_DIR"
-
-analyze
diff --git a/ci/check_publish.sh b/ci/check_publish.sh
deleted file mode 100755
index 09689ff..0000000
--- a/ci/check_publish.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/bash
-# Copyright 2020 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.
-
-# This script checks to make sure that the package *could* be published. It
-# doesn't actually publish anything.
-
-# Fast fail the script on failures.
-set -e
-
-
-# So cd doesn't print the path it changes to.
-unset CDPATH
-
-# So that developers can run this script from anywhere and it will work as
-# expected.
-SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)"
-REPO_DIR="$(dirname "$SCRIPT_DIR")"
-
-function error() {
- echo "$@" 1>&2
-}
-
-function check_publish() {
- echo -n "Checking that package can be published."
- if (cd "$REPO_DIR" && pub publish --dry-run > /dev/null); then
- echo "Package package is able to be published."
- else
- error "FAIL: The package failed the publishing check."
- return 1
- fi
- return 0
-}
-
-check_publish
diff --git a/ci/format.sh b/ci/fix_format.sh
similarity index 69%
rename from ci/format.sh
rename to ci/fix_format.sh
index 00318f4..af5d087 100755
--- a/ci/format.sh
+++ b/ci/fix_format.sh
@@ -17,19 +17,19 @@
REPO_DIR="$(dirname "$SCRIPT_DIR")"
function format() {
- dartfmt_dirs=(lib test ci example)
- (cd "$REPO_DIR" && dartfmt --line-length=100 "$@" ${dartfmt_dirs[@]})
+ (cd "$REPO_DIR" && dart format --set-exit-if-changed --line-length=100 "$@" lib test ci example)
}
# Make sure dartfmt is run on everything
function check_format() {
- echo "Checking dartfmt..."
- local needs_dartfmt="$(format -n "$@")"
- if [[ -n "$needs_dartfmt" ]]; then
+ echo "Checking dart format..."
+ local needs_dart_format
+ needs_dart_format="$(format --output=none "$@")"
+ if [[ $? != 0 ]]; then
echo "FAILED"
- echo "$needs_dartfmt"
+ echo "$needs_dart_format"
echo ""
- echo "Fix formatting with: ci/format.sh --fix"
+ echo "Fix formatting with: ci/format.sh"
exit 1
fi
echo "PASSED"
@@ -37,12 +37,12 @@
function fix_formatting() {
echo "Fixing formatting..."
- format -w "$@"
+ format --output=write "$@"
}
-if [[ "$1" == "--fix" ]]; then
+if [[ "$1" == "--check" ]]; then
shift
- fix_formatting "$@"
-else
check_format "$@"
+else
+ fix_formatting "$@"
fi
diff --git a/ci/presubmit.sh b/ci/presubmit.sh
deleted file mode 100755
index c369442..0000000
--- a/ci/presubmit.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-# Copyright 2020 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.
-
-# Fast fail the script on failures.
-set -e
-
-# This script checks to make sure that each of the plugins *could* be published.
-# It doesn't actually publish anything.
-
-unset CDPATH
-
-# So that developers can run this script from anywhere and it will work as
-# expected.
-SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)"
-REPO_DIR="$(dirname "$SCRIPT_DIR")"
-
-cd "$SCRIPT_DIR"
-
-./setup.sh > /dev/null 2>&1
-./analyze.sh && ./format.sh && ./test.sh && ./check_publish.sh
\ No newline at end of file
diff --git a/ci/setup.sh b/ci/setup.sh
deleted file mode 100755
index b2dd575..0000000
--- a/ci/setup.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# Copyright 2020 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.
-
-# Fast fail the script on failures.
-set -e
-
-# So cd doesn't print the path it changes to.
-unset CDPATH
-
-# So that developers can run this script from anywhere and it will work as
-# expected.
-SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)"
-REPO_DIR="$(dirname "$SCRIPT_DIR")"
-
-cd "$REPO_DIR"
-
-pub upgrade
diff --git a/ci/test.sh b/ci/test.sh
deleted file mode 100755
index 6939bc8..0000000
--- a/ci/test.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-# Copyright 2020 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.
-
-# Fast fail the script on failures.
-set -e
-
-# So cd doesn't print the path it changes to.
-unset CDPATH
-
-# So that developers can run this script from anywhere and it will work as
-# expected.
-SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)"
-REPO_DIR="$(dirname "$SCRIPT_DIR")"
-
-cd "$REPO_DIR"
-
-# Run the tests.
-pub run test
diff --git a/example/main.dart b/example/main.dart
index 1a2fc1c..294c3c8 100644
--- a/example/main.dart
+++ b/example/main.dart
@@ -11,8 +11,8 @@
import 'dart:io';
-import 'package:process_runner/process_runner.dart';
import 'package:args/args.dart';
+import 'package:process_runner/process_runner.dart';
// This only works for escaped spaces and things in double or single quotes.
// This is just an example, modify to meet your own requirements.
diff --git a/test/src/live_process_test.dart b/test/src/live_process_test.dart
index dfb0a2f..d5f894b 100644
--- a/test/src/live_process_test.dart
+++ b/test/src/live_process_test.dart
@@ -9,8 +9,8 @@
import 'dart:io';
import 'package:process/process.dart';
-import 'package:test/test.dart';
import 'package:process_runner/process_runner.dart';
+import 'package:test/test.dart';
void main() {
if (!Platform.isLinux && !Platform.isMacOS) {
diff --git a/test/src/process_pool_test.dart b/test/src/process_pool_test.dart
index 8cafe83..ecc5255 100644
--- a/test/src/process_pool_test.dart
+++ b/test/src/process_pool_test.dart
@@ -4,8 +4,8 @@
import 'dart:io';
-import 'package:test/test.dart';
import 'package:process_runner/process_runner.dart';
+import 'package:test/test.dart';
import 'fake_process_manager.dart';
diff --git a/test/src/process_runner_test.dart b/test/src/process_runner_test.dart
index 9c3ac18..8182b31 100644
--- a/test/src/process_runner_test.dart
+++ b/test/src/process_runner_test.dart
@@ -4,8 +4,8 @@
import 'dart:io';
-import 'package:test/test.dart';
import 'package:process_runner/process_runner.dart';
+import 'package:test/test.dart';
import 'fake_process_manager.dart';