diff --git a/widget_driver_generator/CHANGELOG.md b/widget_driver_generator/CHANGELOG.md index a1b0082..923a988 100644 --- a/widget_driver_generator/CHANGELOG.md +++ b/widget_driver_generator/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 1.3.6 + +- Fixes bug with code generation in child packages using dart 3.6.2 + ## 1.3.5 - Updating mocktail to 1.0.4 @@ -10,11 +14,11 @@ ## 1.3.2 -- fixes bug where the generator generates code for static fields/methods/accessors. +- Fixes bug where the generator generates code for static fields/methods/accessors. ## 1.3.1 -- fixes bug where the "void" keyword was unnecessarily added to setters. +- Fixes bug where the "void" keyword was unnecessarily added to setters. ## 1.3.0 diff --git a/widget_driver_generator/lib/src/utils/package_info_provider.dart b/widget_driver_generator/lib/src/utils/package_info_provider.dart index 3b529fa..bf76e79 100644 --- a/widget_driver_generator/lib/src/utils/package_info_provider.dart +++ b/widget_driver_generator/lib/src/utils/package_info_provider.dart @@ -10,7 +10,19 @@ class PackageInfoProvider { /// Grabs the version string for widget_driver_generator from the pubspec.lock Future getPackageVersionString() async { - final pubspecLockString = await _fileReader.readFile('pubspec.lock'); + late String pubspecLockString; + Directory workspaceDir = Directory('.').absolute; + File pubspecFile = File('${workspaceDir.path}/pubspec.yaml'); + + if (_hasWorkspace(pubspecFile)) { + while (!_isWorkSpaceRoot(pubspecFile)) { + workspaceDir = workspaceDir.parent.absolute; + pubspecFile = File('${workspaceDir.path}/pubspec.yaml'); + } + pubspecLockString = await _fileReader.readFile('${workspaceDir.path}/pubspec.lock'); + } else { + pubspecLockString = await _fileReader.readFile('pubspec.lock'); + } final packageStartIndex = pubspecLockString.indexOf('widget_driver_generator:'); if (packageStartIndex < 0) { @@ -26,6 +38,22 @@ class PackageInfoProvider { final versionNumberString = const LineSplitter().convert(stringToCheck).first; return versionNumberString; } + + bool _isWorkSpaceRoot(File pubspec) { + if (!pubspec.existsSync()) { + return false; + } + return pubspec.readAsLinesSync().where((e) => e.startsWith('workspace:')).isNotEmpty; + } + + bool _hasWorkspace(File pubspec) { + return pubspec + .readAsLinesSync() + .where( + (e) => e.startsWith('resolution:'), + ) + .isNotEmpty; + } } class FileReader { diff --git a/widget_driver_generator/pubspec.yaml b/widget_driver_generator/pubspec.yaml index baa07b4..4092362 100644 --- a/widget_driver_generator/pubspec.yaml +++ b/widget_driver_generator/pubspec.yaml @@ -1,6 +1,6 @@ name: widget_driver_generator description: This package provides generators for WidgetDriver to automate the creation of your TestDrivers and WidgetDriverProviders -version: 1.3.5 +version: 1.3.6 repository: https://github.com/bmw-tech/widget_driver/tree/master/widget_driver_generator issue_tracker: https://github.com/bmw-tech/widget_driver/issues