# Copyright (c) 2018, 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.md file.

# Compile an application with a package and use it.
# Then update the package from .packages but change nothing else and call
# computeDelta on the same compiler.
# The output should not include the old package.

type: newworld
strong: false
worlds:
  - entry: main.dart
    sources:
      main.dart: |
        import "package:dummy/b.dart";
        main() {
          print("hello");
          b();
        }
      package_0.1.0/a.dart: |
        a() {
          la1();
        }
        la1() {
          print("v0.1.0");
        }
      package_0.1.0/b.dart: |
        import "a.dart";
        b() {
          a();
        }
      .packages: dummy:${outDirUri}package_0.1.0
    expectedLibraryCount: 3
  - entry: main.dart
    worldType: updated
    expectInitializeFromDill: false
    checkInvalidatedFiles: false
    invalidate:
      - .packages
    sources:
      package_0.1.1/b.dart: |
        b() {
          print("hello from v0.1.1");
        }
      .packages: dummy:${outDirUri}package_0.1.1
    expectedLibraryCount: 2