build_test 0.10.7+2 build_test: ^0.10.7+2 copied to clipboard
Utilities for writing unit tests of Builders.
0.10.7+2 #
- Avoid throwing for missing files from
PackageAssetReader.canRead
.
0.10.7+1 #
- Allow
build_config
0.4.x
.
0.10.7 #
- Support the latest version of
package:html
. - Only generate bootstrap scripts for supported platforms based on
TestOn
annotations.
0.10.6 #
- Allow build_resolvers version
1.0.0
.
0.10.5 #
- Improve error messages for unresolvable URIs in the PackageAssetReader.
0.10.4 #
- Allow using
PackageAssetReader
when the current working directory is not the root package directory as long as it uses a pub layout.
0.10.3+4 #
- Increased the upper bound for
package:analyzer
to<0.35.0
.
0.10.3+3 #
- Increased the upper bound for
package:analyzer
to '<0.34.0'.
0.10.3+2 #
- Declare support for
package:build
version 1.0.0.
0.10.3+1 #
- Increased the upper bound for the sdk to
<3.0.0
.
0.10.3 #
- Require test version ^0.12.42 and use
TypeMatcher
. - Improve performance of test methods which use a
Resolver
by keeping a cached instance ofAnalyzerResolvers
.
0.10.2+4 #
- Allow the latest build_config.
0.10.2+3 #
- Remove package:build_barback dependency, and use public apis from package:test to directly do the bootstrapping instead of wrapping the transformer.
0.10.2+2 #
- Avoid looking for files from
Uri.path
paths.
0.10.2+1 #
- Add back an implementation of
findAssets
inPackageAssetReader
.
0.10.2 #
- Added a
DebugIndexBuilder
, which by default generates atest/index.html
with links to debug tests in yourtest/**_test.dart
folder, linking to the generated*_test.debug.html
files. NOTE: This only works for web-based tests. - Fix
PackageAssetReader
when running with a package map pointing to a "packages" directory structure, as is generated bybuild_runner
. Drop support for a brokenfindAssets
implementation.
0.10.1+1 #
- Replace
BarbackResolvers
withAnalyzerResolvers
frombuild_resolvers
by default.
0.10.1 #
- Allow overriding the
Resolvers
used forresolve*
utilities. - Bug Fix: Don't call the
action
multiple times when there are multiple sources passed toresolve*
.
0.10.0 #
- Added automatic generation of
.debug.html
files for all tests, which can be loaded in the browser to directly run tests and debug them without going through the package:test runner. - Update to package:build version
0.12.0
. - Removed
CopyBuilder
in favor ofTestBuilder
which takes closures to change behavior rather than adding configuration for every possible modification. - Added support for the special placeholder
{$lib/$test/$web}
assets supported by thebuild_runner
andbazel_codegen
implementations ofpackage:build
. For an example seetest/test_builder_test.dart
. Note that this is technically a BREAKING CHANGE, as additional inputs will be matched for overzealous builders (likeTestBuilder
). - Added
resolverFor
as an optional parameter toresolveSources
. By default aResolver
is returned for the first asset provided; to modify that the name of another asset may be provided. This is a BREAKING CHANGE, as previously the last asset was used.
0.9.4 #
- Added
InMemoryAssetReader.shareAssetCache
constructor. This is useful for the case where the reader should be kept up to date as assets are written through a writer. - Added
buildInputs
stream toCopyBuilder
which emits an event for eachBuildStep.inputId
at the top of thebuild
method. CopyBuilder
automatically skips the placeholder files (any file ending in$
). This is technically breaking but should not affect any real users and is not being released as a breaking change.- Changed
TestBootstrapBuilder
to only target_test.dart
files.
0.9.3 #
- Added
resolveSources
, a way to resolve multiple libraries for testing, including any combination of fake files (in-memory, created in the test) and real ones (from on-disk packages):
test('multiple assets, some mock, some on disk', () async {
final real = 'build_test|test/_files/example_lib.dart';
final mock = 'build_test|test/_files/not_really_here.dart';
final library = await resolveSources(
{
real: useAssetReader,
mock: r'''
// This is a fake library that we're mocking.
library example;
// This is a real on-disk library we are using.
import 'example_lib.dart';
class ExamplePrime extends Example {}
''',
},
(resolver) => resolver.findLibraryByName('example'),
);
final type = library.getType('ExamplePrime');
expect(type, isNotNull);
expect(type.supertype.name, 'Example');
});
0.9.2 #
- Add
inputExtension
argument toCopyBuilder
. When used the builder with throw if any assets are provided that don't match the input extension.
0.9.1 #
- Allow
build_barback
version0.5.x
. The breaking behavior change should not impact test uses that don't already have a version constraint on that package.
0.9.0 #
- Added the
TestBootstrapBuilder
under thebuilder.dart
library. This can be used to bootstrap tests similar to thetest/pub_serve
Transformer.- Known Issue: Custom html files are not supported.
- Breaking: All
AssetReader#findAssets
implementations now return aStream<AssetId>
to match the latestbuild
package. - Breaking: The
DatedValue
,DatedString
, andDatedBytes
apis are now gone, since timestamps are no longer used by package:build. Instead theInMemoryAssetReader
and other apis take aMap<AssetId, dynamic>
, and will automatically convert anyString
values intoList<int>
values. - Breaking: The
outputs
map oftestBuilder
works a little bit differently due to the removal ofDatedValue
andDatedString
.- If a value provided is a
String
, then the asset is by default decoded using UTF8, and matched against the string. - If the value is a
matcher
, it will match againt the actual bytes of the asset (inList<int>
form). - A new matcher was added,
decodedMatches
, which can be combined with other matchers to match against the string contents. For example, to match a string containing a substring, you would dodecodedMatches(contains('some substring'))
.
- If a value provided is a
0.8.0 #
InMemoryAssetReader
,MultiAssetReader
,StubAssetReader
andPackageAssetReader
now implement theMultiPackageAssetReader
interface.testBuilder
now supportsBuilder
s that callfindAssets
in non-root packages.- Added a
GlobbingBuilder
which globs files in a package. - Added the
RecordingAssetReader
interface, which adds theIterable<AssetId> get assetsRead
getter. InMemoryAssetReader
now implementsRecordingAssetReader
.- Breaking: The
MultiAssetReader
now requires all its wrapped readers to implement theMultiPackageAssetReader
interface.- This should not affect most users, since all readers provided by this package now implement that interface.
0.7.1 #
-
Add
mapAssetIds
argument tocheckOutputs
for cases where the logical asset location recorded by the builder does not match the written location. -
Add
recordLogs
, a top-level function that invokesscopeLog
and captures the resultingStream<LogRecord>
for testing. Can be used with the providedanyLogOf
,infoLogOf
,warningLogOf
,severeLogOf
matchers in order to test a build process:
test('should log "uh oh!"', () async {
final logs = recordLogs(() => runBuilder());
expect(logs, emitsInOrder([
anyLogOf('uh oh!'),
]);
});
- Add the constructors
forPackages
andforPackageRoot
toPackageAssetReader
- these are convenience constructors for pointing to a small set of packages (fake or real) for testing purposes. For example:
test('should resolve multiple libraries', () async {
reader = new PackageAssetReader.forPackages({
'example_a': '_libs/example_a',
'example_b': '_libs/example_b',
});
expect(await reader.canRead(fileFromExampleLibA), isTrue);
expect(await reader.canRead(fileFromExampleLibB), isTrue);
expect(await reader.canRead(fileFromExampleLibC), isFalse);
});
0.7.0+1 #
- Switch to a typedef from function type syntax for compatibility with older SDKs.
0.7.0 #
- Breaking:
resolveSource
andresolveAsset
now take anaction
to perform with the Resolver instance.
0.6.4+1 #
- Allow
package:build_barback
v0.4.x
0.6.4 #
- Allow
package:build
v0.10.x AssetReader
implementations always returnFuture
fromcanRead
0.6.3 #
- Added
resolveAsset
, which is similar toresolveSource
but specifies a real asset that lives on the file system. For example, to resolve the main library ofpackage:collection
:
var pkgCollection = new AssetId('collection', 'lib/collection.dart');
var resolver = await resolveAsset(pkgCollection);
// ...
- Supports
package:build_barback >=0.2.0 <0.4.0
.
0.6.2 #
- Internal version bump.
0.6.1 #
- Declare an output extension in
_ResolveSourceBuilder
so it is not skipped
0.6.0 #
- Support build 0.9.0
- Rename
hasInput
tocanRead
inAssetReader
implementations - Replace
declareOutputs
withbuildExtensions
inBuilder
implementations
- Rename
- Breaking
CopyBuilder
no longer has anoutputPackage
field since outputs can only ever be in the same package as inputs.
0.5.2 #
- Add
MultiAssetReader
to the public API.
0.5.1 #
- Add
PackageAssetReader
, a standalone asset reader that uses aPackageResolver
to map anAssetId
to a location on disk. - Add
resolveSource
, a top-level function that can resolve arbitrary Dart source code. This can be useful in testing your own code that uses aResolver
to do type checks.
0.5.0 #
- Add
findAssets
implementations to StubAssetReader an InMemoryAssetReader - BREAKING: InMemoryAssetReader constructor uses named optional parameters
0.4.1 #
- Make
scopeLog
visible so tests can be run with an availablelog
without going through runBuilder.
0.4.0+1 #
- Bug Fix: Correctly identify missing outputs in testBuilder
0.4.0 #
Updates to work with build
version 0.7.0.
New Features #
- The
testBuilder
method now acceptsList<int>
values for bothsourceAssets
andoutputs
. - The
checkOutputs
method is now public.
Breaking Changes #
- The
testBuilder
method now requires aRecordingAssetWriter
instead of just anAssetWriter
for thewriter
parameter. - If a
Matcher
is provided as a value inoutputs
, then it will match against the same value that was written. For example if your builder useswriteAsString
then it will match against that string. If you usewriteAsBytes
then it will match against those bytes. It will not automatically convert to/from bytes and strings. - Deleted the
makeAsset
andmakeAssets
methods. There is no moreAsset
class so these don't really have any value any more. - The signature of
addAssets
has changed tovoid addAssets(Map<AssetId, dynamic> assets, InMemoryAssetWriter writer)
. Values of the map may be eitherString
orList<int>
. InMemoryAssetReader#assets
andInMemoryAssetWriter#assets
have changed to a type ofMap<AssetId, DatedValue>
from a type ofMap<AssetId, DatedString>
.DatedValue
has both astringValue
andbytesValue
getter.InMemoryAssetReader
andInMemoryAssetWriter
have been updated to implement the newAssetReader
andAssetWriter
interfaces (see thebuild
package CHANGELOG for more details).InMemoryAssetReader#cacheAsset
has been changed to two separate methods,void cacheStringAsset(AssetId id, String contents)
andvoid cacheBytesAsset(AssetId id, List<int> bytes)
.- The
equalsAsset
matcher has been removed, since there is no moreAsset
class.
0.3.1 #
- Additional capabilities in testBuilder:
- Filter sourceAssets to inputs with
isInput
- Get log records
- Ignore output expectations when
outputs
is null - Use a custom
writer
- Filter sourceAssets to inputs with
0.3.0 #
- BREAKING removed testPhases utility. Tests should be using testBuilder
- Drop dependency on build_runner package
0.2.1 #
- Support the package split into build/build_runner/build_barback
- Expose additional test utilities that used to be internal to build
0.2.0 #
- Upgrade build package to 0.4.0
- Delete now unnecessary
GenericBuilderTransformer
and useBuilderTransformer
in the tests.
0.1.2 #
- Add
logLevel
andonLog
named args totestPhases
. These can be used to test your log messages, seetest/utils_test.dart
for an example.
0.1.1 #
- Allow String or Matcher for expected output values in
testPhases
.
0.1.0 #
- Initial version, exposes many basic utilities for testing
Builder
s using in memory data structures. Most notably, thetestPhases
method.