diff --git a/.github/workflows/process.yml b/.github/workflows/process.yml new file mode 100644 index 0000000..dfcf6cd --- /dev/null +++ b/.github/workflows/process.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 --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/.travis.yml b/.travis.yml deleted file mode 100644 index 5722c5b..0000000 --- a/.travis.yml +++ /dev/null @@ -1,15 +0,0 @@ -language: dart -sudo: false -dart: - - dev -install: - - gem install coveralls-lcov -before_script: - - ./dev/setup.sh -script: - - ./dev/travis.sh -after_success: - - (coveralls-lcov coverage/lcov.info) -cache: - directories: - - $HOME/.pub-cache diff --git a/analysis_options.yaml b/analysis_options.yaml index 2c72e4b..8fbd2e4 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,67 +1,6 @@ +include: package:lints/recommended.yaml + analyzer: - enable-experiment: - - non-nullable - strong-mode: - implicit-dynamic: false - implicit-casts: false errors: - missing_required_param: warning - missing_return: warning # Allow having TODOs in the code todo: ignore - -linter: - rules: - # these rules are documented on and in the same order as - # the Dart Lint rules page to make maintenance easier - # http://dart-lang.github.io/linter/lints/ - - # === error rules === - - avoid_empty_else - - comment_references - - cancel_subscriptions - - close_sinks - - control_flow_in_finally - - empty_statements - - hash_and_equals - - invariant_booleans - - iterable_contains_unrelated_type - - list_remove_unrelated_type - - literal_only_boolean_expressions - - test_types_in_equals - - throw_in_finally - - unrelated_type_equality_checks - - valid_regexps - - # === style rules === - - always_declare_return_types - - always_specify_types - - annotate_overrides - - avoid_init_to_null - - avoid_return_types_on_setters - - await_only_futures - - camel_case_types - - constant_identifier_names - - empty_constructor_bodies - - implementation_imports - - library_names - - library_prefixes - - non_constant_identifier_names - - one_member_abstracts - - only_throw_errors - - overridden_fields - - package_api_docs - - package_prefixed_library_names - - prefer_is_not_empty - - public_member_api_docs - - slash_for_doc_comments - - sort_constructors_first - - sort_unnamed_constructors_first - - type_annotate_public_apis - - type_init_formals - - unawaited_futures - - unnecessary_brace_in_string_interps - - unnecessary_getters_setters - - # === pub rules === - - package_names diff --git a/dev/setup.sh b/dev/setup.sh deleted file mode 100755 index 99ec284..0000000 --- a/dev/setup.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -# Copyright (c) 2017, 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. - -pub upgrade diff --git a/dev/travis.sh b/dev/travis.sh deleted file mode 100755 index 866b361..0000000 --- a/dev/travis.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -# Copyright (c) 2017, 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. - -# Make sure dartfmt is run on everything -echo "Checking dartfmt..." -needs_dartfmt="$(dartfmt -n lib test dev)" -if [[ -n "$needs_dartfmt" ]]; then - echo "FAILED" - echo "$needs_dartfmt" - exit 1 -fi -echo "PASSED" - -# Make sure we pass the analyzer -echo "Checking dartanalyzer..." -fails_analyzer="$(find lib test dev -name "*.dart" | xargs dartanalyzer --options .analysis_options)" -if [[ "$fails_analyzer" == *"[error]"* ]]; then - echo "FAILED" - echo "$fails_analyzer" - exit 1 -fi -echo "PASSED" - -# Fast fail the script on failures. -set -e - -# Run the tests. -pub run test diff --git a/pubspec.yaml b/pubspec.yaml index 6458b06..9118507 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -12,4 +12,5 @@ dependencies: platform: '^3.0.0' dev_dependencies: + lints: ^1.0.1 test: ^1.16.8 diff --git a/test/src/interface/common_test.dart b/test/src/interface/common_test.dart index ae605db..4f53269 100644 --- a/test/src/interface/common_test.dart +++ b/test/src/interface/common_test.dart @@ -27,8 +27,9 @@ void main() { } tearDown(() { - [workingDir, dir1, dir2, dir3] - .forEach((Directory d) => d.deleteSync(recursive: true)); + for (var directory in [workingDir, dir1, dir2, dir3]) { + directory.deleteSync(recursive: true); + } }); group('on windows', () { @@ -227,24 +228,24 @@ void main() { test('when path has spaces', () { expect( - sanitizeExecutablePath('Program Files\\bla.exe', + sanitizeExecutablePath(r'Program Files\bla.exe', platform: platform), - '"Program Files\\bla.exe"'); + r'"Program Files\bla.exe"'); expect( - sanitizeExecutablePath('ProgramFiles\\bla.exe', platform: platform), - 'ProgramFiles\\bla.exe'); + sanitizeExecutablePath(r'ProgramFiles\bla.exe', platform: platform), + r'ProgramFiles\bla.exe'); expect( - sanitizeExecutablePath('"Program Files\\bla.exe"', + sanitizeExecutablePath(r'"Program Files\bla.exe"', platform: platform), - '"Program Files\\bla.exe"'); + r'"Program Files\bla.exe"'); expect( - sanitizeExecutablePath('\"Program Files\\bla.exe\"', + sanitizeExecutablePath(r'"Program Files\bla.exe"', platform: platform), - '\"Program Files\\bla.exe\"'); + r'"Program Files\bla.exe"'); expect( - sanitizeExecutablePath('C:\\\"Program Files\"\\bla.exe', + sanitizeExecutablePath(r'C:\"Program Files"\bla.exe', platform: platform), - 'C:\\\"Program Files\"\\bla.exe'); + r'C:\"Program Files"\bla.exe'); }); test('with absolute path when currentDirectory getter throws', () {