From 3f0c7e74d3dece29d542fd20494a210d9ce43af4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Guti=C3=A9rrez=20Alfaro?= <593829+jamescr@users.noreply.github.com> Date: Mon, 26 Jan 2026 10:32:58 -0600 Subject: [PATCH 01/25] Create FUNDING.yml --- .github/FUNDING.yml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..5be040e0 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +# These are supported funding model platforms +# github: [labexp] +liberapay: OSMTracker From 7aa42fe2b3ba04b015acab90d5f64abd2f1ec7f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Guti=C3=A9rrez=20Alfaro?= Date: Sun, 25 Jan 2026 09:17:25 -0600 Subject: [PATCH 02/25] Feature(CI): Add Signing to nightly APK --- .github/workflows/nightly.yml | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index c139e76e..d1505ca0 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -51,12 +51,34 @@ jobs: distribution: 'temurin' java-version: '17' + - name: Setup Signing Keystore + run: | + # 1. Decode nightly keystore secret + echo "${{ secrets.NIGHTLY_KEYSTORE }}" | base64 -d > /tmp/nightly-keystore.jks + echo "Keystore created in /tmp/nightly-keystore.jks" + + # Verify + echo "✅ Keystore created in: /tmp/nightly-keystore.jks" + ls -la /tmp/nightly-keystore.jks + echo "ks_path=/tmp/nightly-keystore.jks" >> $GITHUB_OUTPUT + - name: Setup Android SDK uses: android-actions/setup-android@v2 - name: Build with Gradle - run: ./gradlew assembleDebug --stacktrace + run: | + ./gradlew assembleDebug --stacktrace \ + -Pandroid.injected.signing.store.file="/tmp/nightly-keystore.jks" \ + -Pandroid.injected.signing.store.password="${{ secrets.KEYSTORE_PASSWORD }}" \ + -Pandroid.injected.signing.key.alias="${{ secrets.KEY_ALIAS }}" \ + -Pandroid.injected.signing.key.password="${{ secrets.KEY_PASSWORD }}" + + - name: Cleanup Keystore + run: | + echo "Cleaning keystore..." + rm -f app/nightly-keystore.jks + echo "✅ Keystore removed" - name: Rename output APK run: | From f2444e67ffef0ef6e825005749d659acfa9e3406 Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 1 Mar 2026 13:11:40 +0100 Subject: [PATCH 03/25] Possibility to show track of an older hike along with current track. --- app/src/main/AndroidManifest.xml | 5 + .../main/java/net/osmtracker/OSMTracker.java | 9 +- .../osmtracker/activity/DisplayTrackMap.java | 77 +++++++-- .../activity/TrackListRVAdapter.java | 33 +++- .../net/osmtracker/activity/TrackPicker.java | 151 ++++++++++++++++++ .../java/net/osmtracker/db/DataHelper.java | 40 +++++ .../net/osmtracker/db/DatabaseHelper.java | 14 +- .../osmtracker/db/TrackContentProvider.java | 37 +++++ .../net/osmtracker/gpx/ExportTrackTask.java | 3 +- .../net/osmtracker/service/gps/GPSLogger.java | 25 +++ app/src/main/res/layout/trackpicker.xml | 38 +++++ .../main/res/menu/displaytrackmap_menu.xml | 3 + app/src/main/res/values/strings.xml | 3 + 13 files changed, 418 insertions(+), 20 deletions(-) create mode 100644 app/src/main/java/net/osmtracker/activity/TrackPicker.java create mode 100644 app/src/main/res/layout/trackpicker.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 071c23b8..f66ff13c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -46,6 +46,11 @@ + + { @@ -36,10 +39,15 @@ public TracklistAdapter getCursorAdapter() { } public interface TrackListRecyclerViewAdapterListener { - void onClick(long trackId); + default void onClick(long trackId) {}; void onCreateContextMenu(ContextMenu contextMenu, View view, ContextMenu.ContextMenuInfo contextMenuInfo, long trackId); + default void onClick(TrackItemVH item, long trackId) { + onClick(trackId); + } + default void initializeItem(TrackItemVH item, long trackId) { + } } /** @@ -104,9 +112,23 @@ public ImageView getvUploadStatus() { @Override public void onClick(View v) { long trackId = Long.parseLong(getvId().getText().toString()); - mHandler.onClick(trackId); + mHandler.onClick(this, trackId); } + public void activate(boolean state) { + if(state) + itemView.setBackgroundColor(Color.RED); + else { + TypedValue outValue = new TypedValue(); + itemView + .getContext() + .getTheme() + .resolveAttribute(android.R.attr.selectableItemBackground, + outValue, true); + itemView.setBackgroundResource(outValue.resourceId); + } + } + @Override public void onCreateContextMenu(ContextMenu contextMenu, View view, ContextMenu.ContextMenuInfo contextMenuInfo) { long trackId = Long.parseLong(getvId().getText().toString()); @@ -130,8 +152,11 @@ public void onBindViewHolder(@NonNull TrackItemVH holder, int position) { // contents of the view with that element // Passing the binding operation to cursor loader - cursorAdapter.getCursor().moveToPosition(position); - cursorAdapter.bindView(holder.itemView, context, cursorAdapter.getCursor()); + Cursor cursor = cursorAdapter.getCursor(); + cursor.moveToPosition(position); + cursorAdapter.bindView(holder.itemView, context, cursor); + mHandler.initializeItem(holder, + cursor.getLong(cursor.getColumnIndex(TrackContentProvider.Schema.COL_ID))); } @Override diff --git a/app/src/main/java/net/osmtracker/activity/TrackPicker.java b/app/src/main/java/net/osmtracker/activity/TrackPicker.java new file mode 100644 index 00000000..6274a90b --- /dev/null +++ b/app/src/main/java/net/osmtracker/activity/TrackPicker.java @@ -0,0 +1,151 @@ +package net.osmtracker.activity; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import android.content.Intent; +import android.database.Cursor; +import android.os.Bundle; +import android.view.ContextMenu; +import android.view.View; + +import net.osmtracker.OSMTracker; +import net.osmtracker.R; +import net.osmtracker.db.TrackContentProvider; +import net.osmtracker.activity.TrackListRVAdapter.TrackItemVH; + +/** + * Lists existing tracks. Each track is displayed using {@link RecyclerView} + * + * @author Alain Knaff + */ +public class TrackPicker extends AppCompatActivity + implements TrackListRVAdapter.TrackListRecyclerViewAdapterListener +{ + private static final String TAG = TrackPicker.class.getSimpleName(); + + /** Constant used if no track is active (-1)*/ + private static final long TRACK_ID_NO_TRACK = -1; + + // The active track being recorded, if any, or {TRACK_ID_NO_TRACK}; + // value is updated in {@link #onResume()} + private long currentTrackId = TRACK_ID_NO_TRACK; + + private TrackListRVAdapter recyclerViewAdapter; + + private RecyclerView recyclerView; + + + // To check if the RecyclerView already has a + // DividerItemDecoration added + private boolean hasDivider; + + private long overlaidTrackId; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.trackpicker); + + // Toolbar myToolbar = findViewById(R.id.my_toolbar); + // setSupportActionBar(myToolbar); + + recyclerView = findViewById(R.id.recyclerview); + recyclerView.setLayoutManager(new LinearLayoutManager(this)); + + // Adding a horizontal divider + DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL); + dividerItemDecoration.setDrawable(ContextCompat.getDrawable(this, R.drawable.divider)); // Using a custom drawable + + recyclerView.addItemDecoration(dividerItemDecoration); + } + + @Override + protected void onResume() { + activatedItem = null; + Intent i = getIntent(); + overlaidTrackId = i.getLongExtra(OSMTracker.INTENT_OVERLAID_TRACK_ID, 0); + currentTrackId = i.getLongExtra(TrackContentProvider.Schema.COL_TRACK_ID, 0); + setRecyclerView(); + super.onResume(); + } + + + /** + * Configures and initializes the RecyclerView for displaying the list of tracks. + */ + private void setRecyclerView() { + RecyclerView recyclerView = findViewById(R.id.recyclerview); + + LinearLayoutManager layoutManager = new LinearLayoutManager(this, + LinearLayoutManager.VERTICAL, false); + recyclerView.setLayoutManager(layoutManager); + // adds a divider decoration if not already present + if (!hasDivider) { + DividerItemDecoration did = new DividerItemDecoration(recyclerView.getContext(), + layoutManager.getOrientation()); + recyclerView.addItemDecoration(did); + hasDivider = true; + } + recyclerView.setHasFixedSize(true); + Cursor cursor = getContentResolver().query( + TrackContentProvider.CONTENT_URI_TRACK, null, null, null, + TrackContentProvider.Schema.COL_START_DATE + " desc"); + + recyclerViewAdapter = new TrackListRVAdapter(this, cursor, this); + recyclerView.setAdapter(recyclerViewAdapter); + } + + @Override + public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo, long trackId) { + super.onCreateContextMenu(menu, v, menuInfo); + } + + private TrackItemVH activatedItem = null; + + @Override + public void onClick(TrackItemVH item, long trackId) { + Intent i; + + if(trackId == this.currentTrackId) + // ignore clicks on current track + return; + + overlaidTrackId = select(item, trackId); + Intent data = new Intent(); + data.putExtra(OSMTracker.INTENT_OVERLAID_TRACK_ID, + overlaidTrackId); + setResult(RESULT_OK, data); + finish(); + } + + private long select(TrackItemVH item, long trackId) { + if(activatedItem != null) + // if a track was activated, whether same or another, + // deactivate + activatedItem.activate(false); + + if(trackId == this.overlaidTrackId) + // if previously activated track was clicked, this + // means user doesn't want any track to be activated + return 0; + + item.activate(true); + return trackId; + } + + @Override + public void initializeItem(TrackItemVH item, long trackId) { + if(trackId == this.currentTrackId) + // prevent user from clicking on same track + item.itemView.setEnabled(false); + if(trackId == this.overlaidTrackId) { + item.activate(true); + activatedItem = item; + } + } +} diff --git a/app/src/main/java/net/osmtracker/db/DataHelper.java b/app/src/main/java/net/osmtracker/db/DataHelper.java index 410e8546..79d30623 100644 --- a/app/src/main/java/net/osmtracker/db/DataHelper.java +++ b/app/src/main/java/net/osmtracker/db/DataHelper.java @@ -384,6 +384,46 @@ public void deleteNote(String uuid) { } } + /** + * Updates overlaid track of trackId + * + * @param trackId Id of the track + * @param overlay id of the track + */ + public void updateOverlay(long trackId, long overlay) { + Log.v(TAG, "Changing overlay track=" + trackId + + ", overlay=" + overlay); + + // delete old + contentResolver.delete(ContentUris.withAppendedId(TrackContentProvider.CONTENT_URI_OVERLAY, trackId), null, null); + + // insert new + if(overlay != 0) { + ContentValues values = new ContentValues(); + values.put(TrackContentProvider.Schema.COL_TRACK_ID, trackId); + values.put(TrackContentProvider.Schema.COL_OVERLAY_ID, overlay); + contentResolver.insert(TrackContentProvider.CONTENT_URI_OVERLAY, values); + } + } + + /** + * Find the ID for track overlaying trackId + * @param trackId Id of the track + * @param cr {@link ContentResolver} for query + * @return the track ID for the overlaid track, or 0 if not found + */ + public static long queryOverlay(long trackId, @NotNull ContentResolver cr) { + Cursor ca = cr.query(ContentUris.withAppendedId(TrackContentProvider.CONTENT_URI_OVERLAY, + trackId),null, null, null, null); + + long overlayTrackId = 0; + if (ca.moveToFirst()) + overlayTrackId = ca.getLong(ca.getColumnIndex(TrackContentProvider.Schema.COL_OVERLAY_ID)); + ca.close(); + return overlayTrackId; + } + + /** * Stop tracking by making the track inactive * @param trackId Id of the track diff --git a/app/src/main/java/net/osmtracker/db/DatabaseHelper.java b/app/src/main/java/net/osmtracker/db/DatabaseHelper.java index a106badd..23bbf93b 100644 --- a/app/src/main/java/net/osmtracker/db/DatabaseHelper.java +++ b/app/src/main/java/net/osmtracker/db/DatabaseHelper.java @@ -116,6 +116,16 @@ public class DatabaseHelper extends SQLiteOpenHelper { + TrackContentProvider.Schema.COL_OSM_UPLOAD_DATE + " long" // null indicates not yet uploaded + ")"; + /** + * SQL for creating table OVERLAY + * @since 20 + */ + private static final String SQL_CREATE_TABLE_OVERLAY = "" + + "create table " + TrackContentProvider.Schema.TBL_OVERLAY + " (" + + TrackContentProvider.Schema.COL_TRACK_ID + " integer primary key," + + TrackContentProvider.Schema.COL_OVERLAY_ID + " integer not null" + + ")"; + /** * Database name. */ @@ -145,7 +155,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { * v19: add TBL_TRACKPOINT.COL_SEG_ID for track segments support * */ - private static final int DB_VERSION = 19; + private static final int DB_VERSION = 20; private Context context; @@ -207,6 +217,8 @@ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL(SQL_CREATE_TABLE_NOTE); case 18: db.execSQL("alter table "+TrackContentProvider.Schema.TBL_TRACKPOINT + " add column " + TrackContentProvider.Schema.COL_SEG_ID + " integer default 0"); + case 19: + db.execSQL(SQL_CREATE_TABLE_OVERLAY); } } diff --git a/app/src/main/java/net/osmtracker/db/TrackContentProvider.java b/app/src/main/java/net/osmtracker/db/TrackContentProvider.java index 31f65ab9..9f75721b 100644 --- a/app/src/main/java/net/osmtracker/db/TrackContentProvider.java +++ b/app/src/main/java/net/osmtracker/db/TrackContentProvider.java @@ -38,6 +38,8 @@ public class TrackContentProvider extends ContentProvider { public static final Uri CONTENT_URI_NOTE = Uri.parse("content://" + AUTHORITY + "/" + Schema.TBL_NOTE); + public static final Uri CONTENT_URI_OVERLAY = Uri.parse("content://" + AUTHORITY + "/" + Schema.TBL_OVERLAY); + /** * Uri for the active track */ @@ -125,6 +127,8 @@ public class TrackContentProvider extends ContentProvider { uriMatcher.addURI(AUTHORITY, Schema.TBL_TRACKPOINT + "/#", Schema.URI_CODE_TRACKPOINT_ID); uriMatcher.addURI(AUTHORITY, Schema.TBL_NOTE + "/#", Schema.URI_CODE_NOTE_ID); uriMatcher.addURI(AUTHORITY, Schema.TBL_NOTE + "/uuid/*", Schema.URI_CODE_NOTE_UUID); + uriMatcher.addURI(AUTHORITY, Schema.TBL_OVERLAY, Schema.URI_CODE_OVERLAYS); + uriMatcher.addURI(AUTHORITY, Schema.TBL_OVERLAY + "/#", Schema.URI_CODE_OVERLAY_ID); } /** @@ -227,6 +231,8 @@ public int delete(Uri uri, String selection, String[] selectionArgs) { String trackId = Long.toString(ContentUris.parseId(uri)); dbHelper.getWritableDatabase().delete(Schema.TBL_WAYPOINT, Schema.COL_TRACK_ID + " = ?", new String[] {trackId}); dbHelper.getWritableDatabase().delete(Schema.TBL_TRACKPOINT, Schema.COL_TRACK_ID + " = ?", new String[] {trackId}); + dbHelper.getWritableDatabase().delete(Schema.TBL_OVERLAY, Schema.COL_TRACK_ID + " = ?", new String[] {trackId}); + dbHelper.getWritableDatabase().delete(Schema.TBL_OVERLAY, Schema.COL_OVERLAY_ID + " = ?", new String[] {trackId}); count = dbHelper.getWritableDatabase().delete(Schema.TBL_TRACK, Schema.COL_ID + " = ?", new String[] {trackId}); break; case Schema.URI_CODE_WAYPOINT_UUID: @@ -245,6 +251,10 @@ public int delete(Uri uri, String selection, String[] selectionArgs) { count = 0; } break; + case Schema.URI_CODE_OVERLAY_ID: + String oTrackId = Long.toString(ContentUris.parseId(uri)); + count = dbHelper.getWritableDatabase().delete(Schema.TBL_OVERLAY, Schema.COL_TRACK_ID + " = ?", new String[] {oTrackId}); + break; default: throw new IllegalArgumentException("Unknown URI: " + uri); } @@ -345,6 +355,19 @@ public Uri insert(Uri uri, ContentValues values) { throw new IllegalArgumentException("values should provide " + Schema.COL_START_DATE); } break; + case Schema.URI_CODE_OVERLAYS: + if (values.containsKey(Schema.COL_TRACK_ID) && + values.containsKey(Schema.COL_OVERLAY_ID)) { + long rowId = dbHelper.getWritableDatabase().insert(Schema.TBL_OVERLAY, null, values); + if (rowId > 0) { + Uri overlayUri = ContentUris.withAppendedId(CONTENT_URI_OVERLAY, rowId); + getContext().getContentResolver().notifyChange(overlayUri, null); + return overlayUri; + } + } else { + throw new IllegalArgumentException("values should provide " + Schema.COL_TRACK_ID+ " and "+Schema.COL_OVERLAY_ID); + } + break; default: throw new IllegalArgumentException("Unknown URI: " + uri); } @@ -490,6 +513,16 @@ public Cursor query(Uri uri, String[] projection, String selectionIn, String[] s selection = Schema.TBL_TRACKPOINT + "." + Schema.COL_ID + " = ?"; selectionArgs = new String[] {trackPointId}; break; + case Schema.URI_CODE_OVERLAY_ID: + if (selectionIn != null || selectionArgsIn != null) { + // Any selection/selectionArgs will be ignored + throw new UnsupportedOperationException(); + } + trackId = uri.getLastPathSegment(); + qb.setTables(Schema.TBL_OVERLAY); + selection = Schema.TBL_OVERLAY + "." + Schema.COL_TRACK_ID + " = ?"; + selectionArgs = new String[] {trackId}; + break; default: throw new IllegalArgumentException("Unknown URI: " + uri); } @@ -574,6 +607,7 @@ public static final class Schema { public static final String TBL_WAYPOINT = "waypoint"; public static final String TBL_NOTE = "note"; public static final String TBL_TRACK = "track"; + public static final String TBL_OVERLAY = "overlay"; public static final String COL_ID = "_id"; public static final String COL_TRACK_ID = "track_id"; public static final String COL_UUID = "uuid"; @@ -599,6 +633,7 @@ public static final class Schema { public static final String COL_COMPASS_ACCURACY = "compass_accuracy"; public static final String COL_ATMOSPHERIC_PRESSURE = "atmospheric_pressure"; public static final String COL_SEG_ID = "segment_id"; + public static final String COL_OVERLAY_ID = "overlay_id"; // virtual colums that are used in some sqls but dont exist in database public static final String COL_TRACKPOINT_COUNT = "tp_count"; @@ -620,6 +655,8 @@ public static final class Schema { public static final int URI_CODE_TRACK_NOTES = 13; public static final int URI_CODE_NOTE_ID = 14; public static final int URI_CODE_NOTE_UUID = 15; + public static final int URI_CODE_OVERLAYS = 16; + public static final int URI_CODE_OVERLAY_ID = 17; public static final int VAL_TRACK_ACTIVE = 1; diff --git a/app/src/main/java/net/osmtracker/gpx/ExportTrackTask.java b/app/src/main/java/net/osmtracker/gpx/ExportTrackTask.java index 0d20d0b6..2b92d82d 100644 --- a/app/src/main/java/net/osmtracker/gpx/ExportTrackTask.java +++ b/app/src/main/java/net/osmtracker/gpx/ExportTrackTask.java @@ -351,7 +351,6 @@ protected void writeTrackPoints(String trackName, Writer fw, Cursor c, boolean f int prevSegId=-1; for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext(),i++) { StringBuffer out = new StringBuffer(); - int segId = c.getInt(c.getColumnIndex(TrackContentProvider.Schema.COL_SEG_ID)); if(prevSegId != -1 && segId != prevSegId) { fw.write("\t\t" + "" + "\n"); @@ -635,4 +634,4 @@ public String sanitizeTrackName(String trackName){ public String getErrorMsg() { return errorMsg; } -} \ No newline at end of file +} diff --git a/app/src/main/java/net/osmtracker/service/gps/GPSLogger.java b/app/src/main/java/net/osmtracker/service/gps/GPSLogger.java index 901cc5e6..f57b4132 100644 --- a/app/src/main/java/net/osmtracker/service/gps/GPSLogger.java +++ b/app/src/main/java/net/osmtracker/service/gps/GPSLogger.java @@ -6,6 +6,8 @@ import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; +import android.content.ContentResolver; +import android.content.ContentUris; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -24,11 +26,14 @@ import androidx.core.content.ContextCompat; import androidx.preference.PreferenceManager; +import android.database.Cursor; + import net.osmtracker.OSMTracker; import net.osmtracker.R; import net.osmtracker.activity.TrackLogger; import net.osmtracker.db.DataHelper; import net.osmtracker.db.TrackContentProvider; +import net.osmtracker.db.model.Track; import net.osmtracker.listener.PressureListener; import net.osmtracker.listener.SensorListener; @@ -109,6 +114,8 @@ public class GPSLogger extends Service implements LocationListener { */ private PressureListener pressureListener = new PressureListener(); + private boolean newSeg = false; + /** * Receives Intent for way point and notes tracking, and stop/start logging. */ @@ -191,6 +198,7 @@ public void onReceive(Context context, Intent intent) { dataHelper.updateNote(trackId, uuid, name); } } else if (OSMTracker.INTENT_START_TRACKING.equals(intent.getAction())) { + newSeg = true; Bundle extras = intent.getExtras(); if (extras != null) { Long trackId = extras.getLong(TrackContentProvider.Schema.COL_TRACK_ID); @@ -318,6 +326,23 @@ public void onDestroy() { super.onDestroy(); } + private long getSegIdFor(long trackId) { + ContentResolver cr = getContentResolver(); + try(Cursor cursor = + cr.query(ContentUris.withAppendedId(TrackContentProvider.CONTENT_URI_TRACK, trackId), + null, null, null, null)) { + + if (! cursor.moveToFirst()) { + Log.v(TAG, "Track "+trackId+" not found"); + return 0; // <--- Early return --- + } + + return Track + .build(trackId, cursor, cr, true) + .getMaxSegId(); + } + } + /** * Start GPS tracking. */ diff --git a/app/src/main/res/layout/trackpicker.xml b/app/src/main/res/layout/trackpicker.xml new file mode 100644 index 00000000..108127f6 --- /dev/null +++ b/app/src/main/res/layout/trackpicker.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/displaytrackmap_menu.xml b/app/src/main/res/menu/displaytrackmap_menu.xml index 8ee7003a..eb00f088 100644 --- a/app/src/main/res/menu/displaytrackmap_menu.xml +++ b/app/src/main/res/menu/displaytrackmap_menu.xml @@ -5,6 +5,9 @@ android:id="@+id/displaytrackmap_menu_center_to_gps" android:icon="@android:drawable/ic_menu_mylocation" android:title="@string/menu_center_to_gps" /> + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 277fe80e..2db92cc4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -52,6 +52,8 @@ Unable to export track: {0} All tracks will be exported, which could take a long time. Are you sure? Unable to process the track: {0} + + List of tracks to overlay: Track Details Start time: @@ -133,6 +135,7 @@ Export as GPX OpenStreetMap upload Center to GPS + Overlay other Export all as GPX Unable to write to external storage. From 10a2df9b4d13ac78cd83b792a6cb1e2d34f4cb92 Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 1 Mar 2026 15:20:58 +0100 Subject: [PATCH 04/25] 1 --- app/try-again.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 app/try-again.txt diff --git a/app/try-again.txt b/app/try-again.txt new file mode 100644 index 00000000..d00491fd --- /dev/null +++ b/app/try-again.txt @@ -0,0 +1 @@ +1 From 214688ab45f76b153a97aa0623ee7764ae359731 Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 1 Mar 2026 15:33:43 +0100 Subject: [PATCH 05/25] The issue seems to be with the emulator on GitHub? No other way to find out than trial and error? --- .../java/net/osmtracker/activity/PreferencesTest.java | 11 ++++++----- .../java/net/osmtracker/layouts/DeleteLayoutTest.java | 1 + .../net/osmtracker/layouts/DownloadLayoutTest.java | 5 +++-- .../layouts/RepositorySettingsDialogTest.java | 3 ++- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java b/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java index bef2a78b..dbc5f61b 100644 --- a/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java +++ b/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java @@ -62,6 +62,7 @@ public void tearDown() { */ @Test public void testStorageDirectoryValidatesNonEmpty() { + if(true) return; String keyTitle = context.getString(R.string.prefs_storage_dir); String defaultValue = OSMTracker.Preferences.VAL_STORAGE_DIR; @@ -81,7 +82,7 @@ public void testStorageDirectoryValidatesNonEmpty() { * Test that the Storage Directory preference logic works to automatically append a leading * slash separator if missing. */ - @Test + // @Test public void testStorageDirectoryValidatesAppendLeadingSlash() { String keyTitle = context.getString(R.string.prefs_storage_dir); String expected = File.separator + "my_folder"; @@ -104,7 +105,7 @@ public void testStorageDirectoryValidatesAppendLeadingSlash() { /** * Test Numeric Input logic (GPS Logging Interval): update summary with suffix. */ - @Test + // @Test public void testNumericInputLogic() { String title = context.getString(R.string.prefs_gps_logging_interval); String suffix = context.getString(R.string.prefs_gps_logging_interval_seconds); @@ -125,7 +126,7 @@ public void testNumericInputLogic() { /** * Test that the Reset button in numeric preferences restores the default value. */ - @Test + // @Test public void testResetButtonResetsValue() { String title = context.getString(R.string.prefs_gps_logging_interval); String suffix = context.getString(R.string.prefs_gps_logging_interval_seconds); @@ -159,7 +160,7 @@ public void testResetButtonResetsValue() { * Test ListPreference custom summary logic (Screen Orientation) * Should show "Selected Value. \n ..." (don't check for the 2nd line of the summary) */ - @Test + // @Test public void testListPreferenceCustomSummary() { String title = context.getString(R.string.prefs_ui_orientation); @@ -178,7 +179,7 @@ public void testListPreferenceCustomSummary() { /** * Test Clear OAuth Data logic. */ - @Test + // @Test public void testClearOAuthData() { String title = context.getString(R.string.prefs_osm_clear_oauth_data); diff --git a/app/src/androidTest/java/net/osmtracker/layouts/DeleteLayoutTest.java b/app/src/androidTest/java/net/osmtracker/layouts/DeleteLayoutTest.java index c1bc2cdb..82b74b86 100644 --- a/app/src/androidTest/java/net/osmtracker/layouts/DeleteLayoutTest.java +++ b/app/src/androidTest/java/net/osmtracker/layouts/DeleteLayoutTest.java @@ -82,6 +82,7 @@ private void deleteLayout() { */ @Test public void layoutDeletionTest() { + if(true) return; deleteLayout(); // Check the informative Toast is shown diff --git a/app/src/androidTest/java/net/osmtracker/layouts/DownloadLayoutTest.java b/app/src/androidTest/java/net/osmtracker/layouts/DownloadLayoutTest.java index 5d7c99d2..75d2e108 100644 --- a/app/src/androidTest/java/net/osmtracker/layouts/DownloadLayoutTest.java +++ b/app/src/androidTest/java/net/osmtracker/layouts/DownloadLayoutTest.java @@ -65,8 +65,9 @@ public void tearDown() { activity.close(); } - @Test + @Test public void downloadLayoutTest() { + if(true) return; deleteLayoutsDirectory(); TestUtils.setLayoutsTestingRepository(); @@ -153,4 +154,4 @@ private void clickButtonsToDownloadLayout(String layoutName) { TestUtils.checkToastIsShownWith(TestUtils.getStringResource(R.string.available_layouts_successful_download)); } -} \ No newline at end of file +} diff --git a/app/src/androidTest/java/net/osmtracker/layouts/RepositorySettingsDialogTest.java b/app/src/androidTest/java/net/osmtracker/layouts/RepositorySettingsDialogTest.java index bac3b7d7..7ca8589c 100644 --- a/app/src/androidTest/java/net/osmtracker/layouts/RepositorySettingsDialogTest.java +++ b/app/src/androidTest/java/net/osmtracker/layouts/RepositorySettingsDialogTest.java @@ -49,6 +49,7 @@ public void tearDown() { @Test public void testToggleBehaviour() { + if(true) return; onView(withId(R.id.github_config)).perform(click()); onView(withId(R.id.default_server)).perform(click(), closeSoftKeyboard()); @@ -61,7 +62,7 @@ public void testToggleBehaviour() { checkTextFieldsState(isEnabled()); } - @Test + // @Test public void testRepositoryValidation() { String validUser = OSMTracker.Preferences.VAL_GITHUB_USERNAME; String validRepository = OSMTracker.Preferences.VAL_REPOSITORY_NAME; From 51fd8ef8b4497ac76b58c81011df49aa84179730 Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 1 Mar 2026 15:46:39 +0100 Subject: [PATCH 06/25] Re-enable first 2 tests --- .../java/net/osmtracker/layouts/DeleteLayoutTest.java | 1 - .../java/net/osmtracker/layouts/DownloadLayoutTest.java | 1 - 2 files changed, 2 deletions(-) diff --git a/app/src/androidTest/java/net/osmtracker/layouts/DeleteLayoutTest.java b/app/src/androidTest/java/net/osmtracker/layouts/DeleteLayoutTest.java index 82b74b86..c1bc2cdb 100644 --- a/app/src/androidTest/java/net/osmtracker/layouts/DeleteLayoutTest.java +++ b/app/src/androidTest/java/net/osmtracker/layouts/DeleteLayoutTest.java @@ -82,7 +82,6 @@ private void deleteLayout() { */ @Test public void layoutDeletionTest() { - if(true) return; deleteLayout(); // Check the informative Toast is shown diff --git a/app/src/androidTest/java/net/osmtracker/layouts/DownloadLayoutTest.java b/app/src/androidTest/java/net/osmtracker/layouts/DownloadLayoutTest.java index 75d2e108..6fb4545e 100644 --- a/app/src/androidTest/java/net/osmtracker/layouts/DownloadLayoutTest.java +++ b/app/src/androidTest/java/net/osmtracker/layouts/DownloadLayoutTest.java @@ -67,7 +67,6 @@ public void tearDown() { @Test public void downloadLayoutTest() { - if(true) return; deleteLayoutsDirectory(); TestUtils.setLayoutsTestingRepository(); From 9a4b062e68a7848d735910d5eced0511ab277207 Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 1 Mar 2026 15:57:06 +0100 Subject: [PATCH 07/25] Re-enable some more tests --- .../net/osmtracker/layouts/RepositorySettingsDialogTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/androidTest/java/net/osmtracker/layouts/RepositorySettingsDialogTest.java b/app/src/androidTest/java/net/osmtracker/layouts/RepositorySettingsDialogTest.java index 7ca8589c..bac3b7d7 100644 --- a/app/src/androidTest/java/net/osmtracker/layouts/RepositorySettingsDialogTest.java +++ b/app/src/androidTest/java/net/osmtracker/layouts/RepositorySettingsDialogTest.java @@ -49,7 +49,6 @@ public void tearDown() { @Test public void testToggleBehaviour() { - if(true) return; onView(withId(R.id.github_config)).perform(click()); onView(withId(R.id.default_server)).perform(click(), closeSoftKeyboard()); @@ -62,7 +61,7 @@ public void testToggleBehaviour() { checkTextFieldsState(isEnabled()); } - // @Test + @Test public void testRepositoryValidation() { String validUser = OSMTracker.Preferences.VAL_GITHUB_USERNAME; String validRepository = OSMTracker.Preferences.VAL_REPOSITORY_NAME; From dd37d8bb99246d916b56ee581b3e8acfc68789b7 Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 1 Mar 2026 16:07:23 +0100 Subject: [PATCH 08/25] Re-enable first test of preferences --- .../java/net/osmtracker/activity/PreferencesTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java b/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java index dbc5f61b..ea488cc0 100644 --- a/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java +++ b/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java @@ -62,7 +62,6 @@ public void tearDown() { */ @Test public void testStorageDirectoryValidatesNonEmpty() { - if(true) return; String keyTitle = context.getString(R.string.prefs_storage_dir); String defaultValue = OSMTracker.Preferences.VAL_STORAGE_DIR; From 967a2f6f17dbf3303bf09ff791d44c9f00f47ed5 Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 1 Mar 2026 16:15:54 +0100 Subject: [PATCH 09/25] first preference test fails, enable second one instead --- .../java/net/osmtracker/activity/PreferencesTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java b/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java index ea488cc0..579aba07 100644 --- a/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java +++ b/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java @@ -60,7 +60,7 @@ public void tearDown() { /** * Test that the Storage Directory preference logic works to rejects empty input. */ - @Test + // @Test public void testStorageDirectoryValidatesNonEmpty() { String keyTitle = context.getString(R.string.prefs_storage_dir); String defaultValue = OSMTracker.Preferences.VAL_STORAGE_DIR; @@ -81,7 +81,7 @@ public void testStorageDirectoryValidatesNonEmpty() { * Test that the Storage Directory preference logic works to automatically append a leading * slash separator if missing. */ - // @Test + @Test public void testStorageDirectoryValidatesAppendLeadingSlash() { String keyTitle = context.getString(R.string.prefs_storage_dir); String expected = File.separator + "my_folder"; From 6a81698c6562500e6c5b834e68f2fd3da9f06e5d Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 1 Mar 2026 16:35:14 +0100 Subject: [PATCH 10/25] Check whether we'll see anything in the logs... --- .../osmtracker/activity/PreferencesTest.java | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java b/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java index 579aba07..fc9f04b5 100644 --- a/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java +++ b/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java @@ -1,5 +1,7 @@ package net.osmtracker.activity; +import android.util.Log; + import static androidx.test.espresso.Espresso.onView; import static androidx.test.espresso.action.ViewActions.clearText; import static androidx.test.espresso.action.ViewActions.click; @@ -36,7 +38,8 @@ @RunWith(AndroidJUnit4.class) public class PreferencesTest { - + private static final String TAG = "PreferencesTest"; + private Context context; private ActivityScenario activity; @@ -60,21 +63,28 @@ public void tearDown() { /** * Test that the Storage Directory preference logic works to rejects empty input. */ - // @Test + @Test public void testStorageDirectoryValidatesNonEmpty() { + Log.i(TAG, "[1] Entering Test 1"); String keyTitle = context.getString(R.string.prefs_storage_dir); + Log.i(TAG, "[2] Test 1"); String defaultValue = OSMTracker.Preferences.VAL_STORAGE_DIR; + Log.i(TAG, "[3] Test 1"); // Looks for storage directory preference scrollToAndClick(keyTitle); - + Log.i(TAG, "[4] Test 1"); + // Try to save an empty value onView(withId(android.R.id.edit)).perform(clearText()); + Log.i(TAG, "[5] Test 1"); onView(withText(android.R.string.ok)).perform(click()); + Log.i(TAG, "[6] Test 1"); // Open the preference to verify the value in the list remains the default (unchanged) onView(ViewMatchers.isAssignableFrom(RecyclerView.class)) .check(matches(hasDescendant(withText(defaultValue)))); + Log.i(TAG, "[7] Test 1"); } /** @@ -104,7 +114,7 @@ public void testStorageDirectoryValidatesAppendLeadingSlash() { /** * Test Numeric Input logic (GPS Logging Interval): update summary with suffix. */ - // @Test + @Test public void testNumericInputLogic() { String title = context.getString(R.string.prefs_gps_logging_interval); String suffix = context.getString(R.string.prefs_gps_logging_interval_seconds); @@ -125,7 +135,7 @@ public void testNumericInputLogic() { /** * Test that the Reset button in numeric preferences restores the default value. */ - // @Test + @Test public void testResetButtonResetsValue() { String title = context.getString(R.string.prefs_gps_logging_interval); String suffix = context.getString(R.string.prefs_gps_logging_interval_seconds); @@ -159,7 +169,7 @@ public void testResetButtonResetsValue() { * Test ListPreference custom summary logic (Screen Orientation) * Should show "Selected Value. \n ..." (don't check for the 2nd line of the summary) */ - // @Test + @Test public void testListPreferenceCustomSummary() { String title = context.getString(R.string.prefs_ui_orientation); @@ -178,7 +188,7 @@ public void testListPreferenceCustomSummary() { /** * Test Clear OAuth Data logic. */ - // @Test + @Test public void testClearOAuthData() { String title = context.getString(R.string.prefs_osm_clear_oauth_data); From 0989cf0e991c389827a2f8eca406b9815c9cadcc Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 1 Mar 2026 16:47:05 +0100 Subject: [PATCH 11/25] make indentation like it was before --- .../java/net/osmtracker/layouts/DownloadLayoutTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/androidTest/java/net/osmtracker/layouts/DownloadLayoutTest.java b/app/src/androidTest/java/net/osmtracker/layouts/DownloadLayoutTest.java index 6fb4545e..a1d372d5 100644 --- a/app/src/androidTest/java/net/osmtracker/layouts/DownloadLayoutTest.java +++ b/app/src/androidTest/java/net/osmtracker/layouts/DownloadLayoutTest.java @@ -65,7 +65,7 @@ public void tearDown() { activity.close(); } - @Test + @Test public void downloadLayoutTest() { deleteLayoutsDirectory(); From 1f960399917131dc692c4cdebf7f0f96180d8735 Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 1 Mar 2026 16:51:17 +0100 Subject: [PATCH 12/25] mere presence of logs seems to fix this. Could it be a timing issue? --- .../net/osmtracker/activity/PreferencesTest.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java b/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java index fc9f04b5..743100ad 100644 --- a/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java +++ b/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java @@ -67,24 +67,24 @@ public void tearDown() { public void testStorageDirectoryValidatesNonEmpty() { Log.i(TAG, "[1] Entering Test 1"); String keyTitle = context.getString(R.string.prefs_storage_dir); - Log.i(TAG, "[2] Test 1"); + // Log.i(TAG, "[2] Test 1"); String defaultValue = OSMTracker.Preferences.VAL_STORAGE_DIR; - Log.i(TAG, "[3] Test 1"); + // Log.i(TAG, "[3] Test 1"); // Looks for storage directory preference scrollToAndClick(keyTitle); - Log.i(TAG, "[4] Test 1"); - + // Log.i(TAG, "[4] Test 1"); + // Try to save an empty value onView(withId(android.R.id.edit)).perform(clearText()); - Log.i(TAG, "[5] Test 1"); + // Log.i(TAG, "[5] Test 1"); onView(withText(android.R.string.ok)).perform(click()); - Log.i(TAG, "[6] Test 1"); + // Log.i(TAG, "[6] Test 1"); // Open the preference to verify the value in the list remains the default (unchanged) onView(ViewMatchers.isAssignableFrom(RecyclerView.class)) .check(matches(hasDescendant(withText(defaultValue)))); - Log.i(TAG, "[7] Test 1"); + // Log.i(TAG, "[7] Test 1"); } /** From 172853e5393ca8f89cfe0ff21446800fd6abfc68 Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 1 Mar 2026 16:58:30 +0100 Subject: [PATCH 13/25] Make file as it was before --- .../net/osmtracker/activity/PreferencesTest.java | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java b/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java index 743100ad..bef2a78b 100644 --- a/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java +++ b/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java @@ -1,7 +1,5 @@ package net.osmtracker.activity; -import android.util.Log; - import static androidx.test.espresso.Espresso.onView; import static androidx.test.espresso.action.ViewActions.clearText; import static androidx.test.espresso.action.ViewActions.click; @@ -38,8 +36,7 @@ @RunWith(AndroidJUnit4.class) public class PreferencesTest { - private static final String TAG = "PreferencesTest"; - + private Context context; private ActivityScenario activity; @@ -65,26 +62,19 @@ public void tearDown() { */ @Test public void testStorageDirectoryValidatesNonEmpty() { - Log.i(TAG, "[1] Entering Test 1"); String keyTitle = context.getString(R.string.prefs_storage_dir); - // Log.i(TAG, "[2] Test 1"); String defaultValue = OSMTracker.Preferences.VAL_STORAGE_DIR; - // Log.i(TAG, "[3] Test 1"); // Looks for storage directory preference scrollToAndClick(keyTitle); - // Log.i(TAG, "[4] Test 1"); // Try to save an empty value onView(withId(android.R.id.edit)).perform(clearText()); - // Log.i(TAG, "[5] Test 1"); onView(withText(android.R.string.ok)).perform(click()); - // Log.i(TAG, "[6] Test 1"); // Open the preference to verify the value in the list remains the default (unchanged) onView(ViewMatchers.isAssignableFrom(RecyclerView.class)) .check(matches(hasDescendant(withText(defaultValue)))); - // Log.i(TAG, "[7] Test 1"); } /** From 25c41f8be15910975701b7ab59a7f382a033c262 Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 1 Mar 2026 17:07:14 +0100 Subject: [PATCH 14/25] Yes, that log statement is needed --- .../java/net/osmtracker/activity/PreferencesTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java b/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java index bef2a78b..ca94dcd0 100644 --- a/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java +++ b/app/src/androidTest/java/net/osmtracker/activity/PreferencesTest.java @@ -11,6 +11,8 @@ import static androidx.test.espresso.matcher.ViewMatchers.withText; import static org.hamcrest.Matchers.stringContainsInOrder; +import android.util.Log; + import android.content.Context; import android.content.SharedPreferences; @@ -62,6 +64,7 @@ public void tearDown() { */ @Test public void testStorageDirectoryValidatesNonEmpty() { + Log.i("More", "magic"); String keyTitle = context.getString(R.string.prefs_storage_dir); String defaultValue = OSMTracker.Preferences.VAL_STORAGE_DIR; From 009e385d2d9545bd88c73bf5cf7fa32eae2e867b Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 1 Mar 2026 19:22:21 +0100 Subject: [PATCH 15/25] Don't need this any longer --- app/try-again.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 app/try-again.txt diff --git a/app/try-again.txt b/app/try-again.txt deleted file mode 100644 index d00491fd..00000000 --- a/app/try-again.txt +++ /dev/null @@ -1 +0,0 @@ -1 From 7ec2c5e33a0e9e2de837060df733d5db43d232b9 Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sat, 16 May 2026 15:40:58 +0200 Subject: [PATCH 16/25] Name of intent key for OVERLAID_TRACK_ID more in line with the others --- app/src/main/java/net/osmtracker/OSMTracker.java | 2 +- .../main/java/net/osmtracker/activity/DisplayTrackMap.java | 4 ++-- app/src/main/java/net/osmtracker/activity/TrackPicker.java | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/net/osmtracker/OSMTracker.java b/app/src/main/java/net/osmtracker/OSMTracker.java index 2e73e01d..357d1ce1 100644 --- a/app/src/main/java/net/osmtracker/OSMTracker.java +++ b/app/src/main/java/net/osmtracker/OSMTracker.java @@ -171,7 +171,7 @@ public static final class Preferences { /** * Key for extra data "overlaidTrackId" in Intent */ - public final static String INTENT_OVERLAID_TRACK_ID = "overlaidTrackId"; + public final static String INTENT_KEY_OVERLAID_TRACK_ID = "overlaidTrackId"; /** * Approximation factor for calculating Horizontal Dilution of Precision diff --git a/app/src/main/java/net/osmtracker/activity/DisplayTrackMap.java b/app/src/main/java/net/osmtracker/activity/DisplayTrackMap.java index 36d3eaf5..9ac8bec4 100644 --- a/app/src/main/java/net/osmtracker/activity/DisplayTrackMap.java +++ b/app/src/main/java/net/osmtracker/activity/DisplayTrackMap.java @@ -403,7 +403,7 @@ public boolean onOptionsItemSelected(MenuItem item) { // Start track picker activity Intent i = new Intent(this, TrackPicker.class); i.putExtra(TrackContentProvider.Schema.COL_TRACK_ID, currentTrackId); - i.putExtra(OSMTracker.INTENT_OVERLAID_TRACK_ID, overlaidTrackId); + i.putExtra(OSMTracker.INTENT_KEY_OVERLAID_TRACK_ID, overlaidTrackId); startActivityForResult(i, RC_PICK_OVERLAID); break; case R.id.displaytrackmap_menu_settings: @@ -419,7 +419,7 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == RC_PICK_OVERLAID && resultCode == RESULT_OK) { - overlaidTrackId = data.getLongExtra(OSMTracker.INTENT_OVERLAID_TRACK_ID,0); + overlaidTrackId = data.getLongExtra(OSMTracker.INTENT_KEY_OVERLAID_TRACK_ID,0); final DataHelper dataHelper = new DataHelper(this); dataHelper.updateOverlay(currentTrackId,overlaidTrackId); } diff --git a/app/src/main/java/net/osmtracker/activity/TrackPicker.java b/app/src/main/java/net/osmtracker/activity/TrackPicker.java index 6274a90b..188aeeef 100644 --- a/app/src/main/java/net/osmtracker/activity/TrackPicker.java +++ b/app/src/main/java/net/osmtracker/activity/TrackPicker.java @@ -68,7 +68,7 @@ protected void onCreate(Bundle savedInstanceState) { protected void onResume() { activatedItem = null; Intent i = getIntent(); - overlaidTrackId = i.getLongExtra(OSMTracker.INTENT_OVERLAID_TRACK_ID, 0); + overlaidTrackId = i.getLongExtra(OSMTracker.INTENT_KEY_OVERLAID_TRACK_ID, 0); currentTrackId = i.getLongExtra(TrackContentProvider.Schema.COL_TRACK_ID, 0); setRecyclerView(); super.onResume(); @@ -117,7 +117,7 @@ public void onClick(TrackItemVH item, long trackId) { overlaidTrackId = select(item, trackId); Intent data = new Intent(); - data.putExtra(OSMTracker.INTENT_OVERLAID_TRACK_ID, + data.putExtra(OSMTracker.INTENT_KEY_OVERLAID_TRACK_ID, overlaidTrackId); setResult(RESULT_OK, data); finish(); From 938c65fdcd646babfcce03e7eaad71c693a8b1db Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 9 Aug 2026 20:44:41 +0200 Subject: [PATCH 17/25] Disable tests to find broken ones --- .../net/osmtracker/activity/ButtonsPresetsTest.java | 4 ++++ .../activity/OpenStreetMapNotesUploadTest.java | 2 ++ .../net/osmtracker/activity/TrackDetailEditorTest.java | 3 +++ .../java/net/osmtracker/db/DataHelperNoteTest.java | 3 ++- .../net/osmtracker/gpx/ExportToStorageTaskTest.java | 9 +++++++++ .../net/osmtracker/gpx/ExportToTempFileTaskTest.java | 1 + .../layout/DownloadCustomLayoutTaskTest.java | 1 + .../net/osmtracker/layout/URLValidatorTaskTest.java | 1 + .../test/java/net/osmtracker/util/ArrayUtilsTest.java | 6 +++++- .../net/osmtracker/util/CustomLayoutsUtilsTest.java | 6 ++++++ .../java/net/osmtracker/util/FileSystemUtilsTest.java | 10 ++++++++++ .../net/osmtracker/util/MercatorProjectionTest.java | 2 ++ .../java/net/osmtracker/util/ThemeValidatorTest.java | 2 ++ .../test/java/net/osmtracker/util/URLCreatorTest.java | 5 +++++ 14 files changed, 53 insertions(+), 2 deletions(-) diff --git a/app/src/test/java/net/osmtracker/activity/ButtonsPresetsTest.java b/app/src/test/java/net/osmtracker/activity/ButtonsPresetsTest.java index e41c0e96..2f13d4d9 100644 --- a/app/src/test/java/net/osmtracker/activity/ButtonsPresetsTest.java +++ b/app/src/test/java/net/osmtracker/activity/ButtonsPresetsTest.java @@ -36,6 +36,7 @@ public class ButtonsPresetsTest { @Before public void setUp() { + if(true) return; // Build and start the activity lifecycle activity = Robolectric.buildActivity(ButtonsPresets.class) .create() @@ -46,6 +47,7 @@ public void setUp() { @Test public void getIsoTest() throws Exception { + if(true) return; int VALUE = 0, EXPECTED = 1; String[][] cases = { {"test_es.xml", "es"}, @@ -66,6 +68,7 @@ public void getIsoTest() throws Exception { @Test public void testSelectLayout_UpdatesUIAndPreferences() throws Exception { + if(true) return; // 1. Setup: Create two CheckBoxes to simulate "old" and "new" selection CheckBox oldCheckBox = new CheckBox(activity); oldCheckBox.setText("Default"); @@ -108,6 +111,7 @@ public void testSelectLayout_UpdatesUIAndPreferences() throws Exception { @Test @SuppressWarnings("unchecked") // Suppress cast warning for the internal Hashtable public void testRefreshActivity_PopulatesUIFromFilesystem() throws Exception { + if(true) return; // 1. Setup: Mock the SD Card being mounted ShadowEnvironment.setExternalStorageState(Environment.MEDIA_MOUNTED); diff --git a/app/src/test/java/net/osmtracker/activity/OpenStreetMapNotesUploadTest.java b/app/src/test/java/net/osmtracker/activity/OpenStreetMapNotesUploadTest.java index 75e11858..7548b0ec 100644 --- a/app/src/test/java/net/osmtracker/activity/OpenStreetMapNotesUploadTest.java +++ b/app/src/test/java/net/osmtracker/activity/OpenStreetMapNotesUploadTest.java @@ -57,6 +57,7 @@ public void setUp() { */ @Test public void onCreate_populatesViewsCorrectly() { + if(true) return; // Launch Activity OpenStreetMapNotesUpload activity = Robolectric.buildActivity( OpenStreetMapNotesUpload.class, intent) @@ -84,6 +85,7 @@ public void onCreate_populatesViewsCorrectly() { */ @Test public void startUpload_withExistingToken_skipsAuthFlow() { + if(true) return; // Inject a fake token into SharedPreferences SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences( ApplicationProvider.getApplicationContext()); diff --git a/app/src/test/java/net/osmtracker/activity/TrackDetailEditorTest.java b/app/src/test/java/net/osmtracker/activity/TrackDetailEditorTest.java index 2fb14016..ea591264 100644 --- a/app/src/test/java/net/osmtracker/activity/TrackDetailEditorTest.java +++ b/app/src/test/java/net/osmtracker/activity/TrackDetailEditorTest.java @@ -33,6 +33,7 @@ protected void onCreate(Bundle savedInstanceState) { } @Before public void setup() { + if(true) return; activity = buildActivity(TrackDetailEditorActivity.class).create().get(); // Ensure Spinner is populated as it would be from XML @@ -45,6 +46,7 @@ public void setup() { @Test public void testBindTrackSetsCorrectSpinnerPosition() { + if(true) return; Track t = new Track(); t.setVisibility(Track.OSMVisibility.Trackable); @@ -57,6 +59,7 @@ public void testBindTrackSetsCorrectSpinnerPosition() { @Test public void testSaveCapturesCorrectEnumValue() { + if(true) return; // Simulate user selecting "Public" (Index 1) activity.spVisibility.setSelection(Track.OSMVisibility.Public.position); diff --git a/app/src/test/java/net/osmtracker/db/DataHelperNoteTest.java b/app/src/test/java/net/osmtracker/db/DataHelperNoteTest.java index b243fc9f..ab9d7898 100644 --- a/app/src/test/java/net/osmtracker/db/DataHelperNoteTest.java +++ b/app/src/test/java/net/osmtracker/db/DataHelperNoteTest.java @@ -29,6 +29,7 @@ public void setup() { @Test public void testDeleteNote_RemovesFromDatabase() { + if(true) return; String noteUUID = UUID.randomUUID().toString(); long trackId = 1L; @@ -65,4 +66,4 @@ private boolean noteExists(long TrackId) { } return exists; } -} \ No newline at end of file +} diff --git a/app/src/test/java/net/osmtracker/gpx/ExportToStorageTaskTest.java b/app/src/test/java/net/osmtracker/gpx/ExportToStorageTaskTest.java index 51a024b2..ffb9dd5c 100644 --- a/app/src/test/java/net/osmtracker/gpx/ExportToStorageTaskTest.java +++ b/app/src/test/java/net/osmtracker/gpx/ExportToStorageTaskTest.java @@ -62,6 +62,7 @@ public void setUp() { @Test public void testBuildGPXFilename_OnlyTrackName() { + if(true) return; setupFilenamePreference(Preferences.VAL_OUTPUT_FILENAME_NAME); Assert.assertEquals("MyTrack.gpx", executeBuildFilename(TRACK_NAME, createDate())); @@ -69,6 +70,7 @@ public void testBuildGPXFilename_OnlyTrackName() { @Test public void testBuildGPXFilename_TrackNameAndDate() { + if(true) return; setupFilenamePreference(Preferences.VAL_OUTPUT_FILENAME_NAME_DATE); assertEquals("MyTrack_" + DATE_STRING + ".gpx", executeBuildFilename(TRACK_NAME, createDate())); @@ -76,6 +78,7 @@ public void testBuildGPXFilename_TrackNameAndDate() { @Test public void testBuildGPXFilename_DateAndTrackName() { + if(true) return; setupFilenamePreference(Preferences.VAL_OUTPUT_FILENAME_DATE_NAME); assertEquals(DATE_STRING + "_MyTrack" + ".gpx", executeBuildFilename(TRACK_NAME, createDate())); @@ -83,6 +86,7 @@ public void testBuildGPXFilename_DateAndTrackName() { @Test public void testBuildGPXFilename_OnlyDate() { + if(true) return; setupFilenamePreference(Preferences.VAL_OUTPUT_FILENAME_DATE); assertEquals(DATE_STRING + ".gpx", executeBuildFilename(TRACK_NAME, createDate())); @@ -90,6 +94,7 @@ public void testBuildGPXFilename_OnlyDate() { @Test public void testBuildGPXFilename_Sanitization() { + if(true) return; String dirtyName = ":M/y*T@r~a\\c?k:"; setupFilenamePreference(Preferences.VAL_OUTPUT_FILENAME_NAME); assertEquals(";M_y_T_r_a_c_k;.gpx", @@ -98,6 +103,7 @@ public void testBuildGPXFilename_Sanitization() { @Test public void testBuildGPXFilename_FallbackToDateWhenNameEmpty() { + if(true) return; String emptyName = ""; setupFilenamePreference(Preferences.VAL_OUTPUT_FILENAME_NAME); // Should fallback to the timestamp if name is missing @@ -109,6 +115,7 @@ public void testBuildGPXFilename_FallbackToDateWhenNameEmpty() { @Test public void testGetExportDirectory_CreatesMissingFolders() throws Exception { + if(true) return; ShadowEnvironment.setExternalStorageState(Environment.MEDIA_MOUNTED); prefs.edit().putString(Preferences.KEY_STORAGE_DIR, "NewAppFolder").apply(); @@ -120,12 +127,14 @@ public void testGetExportDirectory_CreatesMissingFolders() throws Exception { @Test public void testGetExportDirectory_ThrowsWhenNotWritable() { + if(true) return; ShadowEnvironment.setExternalStorageState(Environment.MEDIA_MOUNTED_READ_ONLY); assertThrows(ExportTrackException.class, () -> task.getBaseExportDirectory()); } @Test public void testGetSanitizedTrackName_ReplacesSlashes() { + if(true) return; Track mockTrack = new Track(); mockTrack.setName("Category/Sub/Track"); when(mockDataHelper.getTrackByStartDate(any(Date.class))).thenReturn(mockTrack); diff --git a/app/src/test/java/net/osmtracker/gpx/ExportToTempFileTaskTest.java b/app/src/test/java/net/osmtracker/gpx/ExportToTempFileTaskTest.java index 6b55aa5a..b76b69ec 100644 --- a/app/src/test/java/net/osmtracker/gpx/ExportToTempFileTaskTest.java +++ b/app/src/test/java/net/osmtracker/gpx/ExportToTempFileTaskTest.java @@ -86,6 +86,7 @@ public void tearDown() { @Test public void testExportMatchesGpxResource() throws Exception { + if(true) return; try ( MatrixCursor pointCursor = createPointCursor(); MatrixCursor wptCursor = createWptCursor() diff --git a/app/src/test/java/net/osmtracker/layout/DownloadCustomLayoutTaskTest.java b/app/src/test/java/net/osmtracker/layout/DownloadCustomLayoutTaskTest.java index a8104161..31e51a9b 100644 --- a/app/src/test/java/net/osmtracker/layout/DownloadCustomLayoutTaskTest.java +++ b/app/src/test/java/net/osmtracker/layout/DownloadCustomLayoutTaskTest.java @@ -53,6 +53,7 @@ public void setUp() { @Test public void downloadLayoutWithoutIconsTest() { + if(true) return; boolean result = downloadCustomLayoutTask.downloadLayout(layoutName, iso); assertTrue("Download should return true", result); diff --git a/app/src/test/java/net/osmtracker/layout/URLValidatorTaskTest.java b/app/src/test/java/net/osmtracker/layout/URLValidatorTaskTest.java index 936cdb0a..c2d724bf 100644 --- a/app/src/test/java/net/osmtracker/layout/URLValidatorTaskTest.java +++ b/app/src/test/java/net/osmtracker/layout/URLValidatorTaskTest.java @@ -12,6 +12,7 @@ public class URLValidatorTaskTest { @Test public void customLayoutsRepoValidatorTest() { + if(true) return; String validUser = OSMTracker.Preferences.VAL_GITHUB_USERNAME; String validRepository = OSMTracker.Preferences.VAL_REPOSITORY_NAME; String validBranch = OSMTracker.Preferences.VAL_BRANCH_NAME; diff --git a/app/src/test/java/net/osmtracker/util/ArrayUtilsTest.java b/app/src/test/java/net/osmtracker/util/ArrayUtilsTest.java index 6e7060e8..6215ed77 100644 --- a/app/src/test/java/net/osmtracker/util/ArrayUtilsTest.java +++ b/app/src/test/java/net/osmtracker/util/ArrayUtilsTest.java @@ -12,25 +12,29 @@ public class ArrayUtilsTest { @Test public void findMinAsc() { + if(true) return; double min = ArrayUtils.findMin(arrayAsc, 0); assertTrue(min == 1); } @Test public void findMinDesc() { + if(true) return; double min = ArrayUtils.findMin(arrayDesc, 2); assertTrue(min == 1); } @Test public void findMaxAsc() { + if(true) return; double max = ArrayUtils.findMax(arrayAsc, 0); assertTrue(max == 3); } @Test public void findMaxDesc() { + if(true) return; double max = ArrayUtils.findMax(arrayDesc, 2); assertTrue(max == 3); } -} \ No newline at end of file +} diff --git a/app/src/test/java/net/osmtracker/util/CustomLayoutsUtilsTest.java b/app/src/test/java/net/osmtracker/util/CustomLayoutsUtilsTest.java index 7d1b0052..0609326c 100644 --- a/app/src/test/java/net/osmtracker/util/CustomLayoutsUtilsTest.java +++ b/app/src/test/java/net/osmtracker/util/CustomLayoutsUtilsTest.java @@ -38,22 +38,26 @@ public void setUp() { @Test public void convertFileName() { + if(true) return; assertEquals("public transport", CustomLayoutsUtils.convertFileName("public_transport.xml")); assertEquals("simple", CustomLayoutsUtils.convertFileName("simple.xml")); } @Test public void unconvertFileName() { + if(true) return; assertEquals("public_transport.xml", CustomLayoutsUtils.unconvertFileName("public transport")); } @Test public void createFileName() { + if(true) return; assertEquals("public_transport_es.xml", CustomLayoutsUtils.createFileName("public transport", "es")); } @Test public void getStringFromStream() throws IOException { + if(true) return; String content = "GPX Test Content" + System.lineSeparator() + "Second Line"; InputStream inputStream = new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8)); String result = CustomLayoutsUtils.getStringFromStream(inputStream); @@ -62,6 +66,7 @@ public void getStringFromStream() throws IOException { @Test public void getCurrentLayoutName() { + if(true) return; // Set value in real Robolectric preferences prefs.edit().putString(OSMTracker.Preferences.KEY_UI_BUTTONS_LAYOUT, "transporte publico").apply(); String result = CustomLayoutsUtils.getCurrentLayoutName(context); @@ -70,6 +75,7 @@ public void getCurrentLayoutName() { @Test public void getCurrentLayoutName_ReturnsDefaultWhenEmpty() { + if(true) return; // Test fallback logic String result = CustomLayoutsUtils.getCurrentLayoutName(context); assertEquals(OSMTracker.Preferences.VAL_UI_BUTTONS_LAYOUT, result); diff --git a/app/src/test/java/net/osmtracker/util/FileSystemUtilsTest.java b/app/src/test/java/net/osmtracker/util/FileSystemUtilsTest.java index 4ce032fb..1a9b8e6a 100644 --- a/app/src/test/java/net/osmtracker/util/FileSystemUtilsTest.java +++ b/app/src/test/java/net/osmtracker/util/FileSystemUtilsTest.java @@ -43,12 +43,14 @@ public void tearDown() { @Test public void testCopyFileSuccess() { + if(true) return; assertTrue(FileSystemUtils.copyFile(destinationDirectory, sourceFile, "target.txt")); assertTrue(targetFile.exists()); } @Test public void testCopyFileFailure() { + if(true) return; // Attempt to copy to a non-existent directory File nonExistentDirectory = new File(temporaryFolder.getRoot(), "nonExistentDir"); assertFalse(FileSystemUtils.copyFile(nonExistentDirectory, sourceFile, "target.txt")); @@ -56,6 +58,7 @@ public void testCopyFileFailure() { @Test public void testCopyDirectoryContentsSuccess() throws IOException { + if(true) return; // Create a file in the source directory File fileInSourceDirectory = new File(sourceDirectory, "fileInSource.txt"); assertTrue(fileInSourceDirectory.createNewFile()); @@ -66,6 +69,7 @@ public void testCopyDirectoryContentsSuccess() throws IOException { @Test public void testCopyDirectoryContentsFailure() { + if(true) return; // Attempt to copy from a non-existent directory File nonExistentDirectory = new File(temporaryFolder.getRoot(), "nonExistentDir"); assertFalse(FileSystemUtils.copyDirectoryContents(destinationDirectory, nonExistentDirectory)); @@ -73,30 +77,35 @@ public void testCopyDirectoryContentsFailure() { @Test public void testCopyDirectoryContentsDestinationNull() { + if(true) return; // Attempt to copy with a null destination directory assertFalse(FileSystemUtils.copyDirectoryContents(null, sourceDirectory)); } @Test public void testCopyDirectoryContentsSourceNull() { + if(true) return; // Attempt to copy with a null source directory assertFalse(FileSystemUtils.copyDirectoryContents(destinationDirectory, null)); } @Test public void testDeleteFileSuccess() { + if(true) return; assertTrue(FileSystemUtils.delete(sourceFile, false)); assertFalse(sourceFile.exists()); } @Test public void testDeleteDirectorySuccess() { + if(true) return; assertTrue(FileSystemUtils.delete(sourceDirectory, true)); assertFalse(sourceDirectory.exists()); } @Test public void testDeleteDirectoryFailure() throws IOException { + if(true) return; // Create a nested directory structure File nestedDirectory = new File(sourceDirectory, "nestedDir"); assertTrue(nestedDirectory.mkdir()); @@ -109,6 +118,7 @@ public void testDeleteDirectoryFailure() throws IOException { @Test public void testGetUniqueChildNameFor() throws IOException { + if(true) return; String uniqueName = FileSystemUtils.getUniqueChildNameFor(destinationDirectory, "test", ".txt"); assertEquals("test.txt", uniqueName); diff --git a/app/src/test/java/net/osmtracker/util/MercatorProjectionTest.java b/app/src/test/java/net/osmtracker/util/MercatorProjectionTest.java index 7bbff9d6..ab6d4945 100644 --- a/app/src/test/java/net/osmtracker/util/MercatorProjectionTest.java +++ b/app/src/test/java/net/osmtracker/util/MercatorProjectionTest.java @@ -60,6 +60,7 @@ public static Collection data() { @Test public void testProject() { + if(true) return; MercatorProjection projection = new MercatorProjection(minLat, minLon, maxLat, maxLon, 720, 1280); int[] point = projection.project(lon, lat); assertNotNull(point); @@ -70,6 +71,7 @@ public void testProject() { @Test public void testFormatDegreesAsDMS() { + if(true) return; String formattedDms = MercatorProjection.formatDegreesAsDMS(degre, isLat); assertEquals(expectedDms, formattedDms); } diff --git a/app/src/test/java/net/osmtracker/util/ThemeValidatorTest.java b/app/src/test/java/net/osmtracker/util/ThemeValidatorTest.java index 78be7b67..4e5cb928 100644 --- a/app/src/test/java/net/osmtracker/util/ThemeValidatorTest.java +++ b/app/src/test/java/net/osmtracker/util/ThemeValidatorTest.java @@ -47,6 +47,7 @@ public void setUp() { @Test public void validateDefaultTheme(){ + if(true) return; // Set a valid theme in preferences realPrefs.edit().putString( OSMTracker.Preferences.KEY_UI_THEME, @@ -62,6 +63,7 @@ public void validateDefaultTheme(){ * verify methods of the mocked editor so that the preferences are saved.*/ @Test public void validateWrongTheme(){ + if(true) return; // Set an invalid theme in preferences realPrefs.edit().putString( OSMTracker.Preferences.KEY_UI_THEME, diff --git a/app/src/test/java/net/osmtracker/util/URLCreatorTest.java b/app/src/test/java/net/osmtracker/util/URLCreatorTest.java index 8aac745d..e60f3ce5 100644 --- a/app/src/test/java/net/osmtracker/util/URLCreatorTest.java +++ b/app/src/test/java/net/osmtracker/util/URLCreatorTest.java @@ -25,6 +25,7 @@ public void setUp() { @Test public void createMetadataDirUrl() { + if(true) return; String result = URLCreator.createMetadataDirUrl(context); String expected = "https://api.github.com/repos/labexp/osmtracker-android-layouts/contents/layouts/metadata?ref=master"; assertEquals(expected, result); @@ -32,6 +33,7 @@ public void createMetadataDirUrl() { @Test public void createMetadataFileURL() { + if(true) return; String result = URLCreator.createMetadataFileURL(context, "transporte_publico"); String expected = "https://raw.githubusercontent.com/labexp/osmtracker-android-layouts/master/layouts/metadata/transporte_publico.xml"; assertEquals(expected, result); @@ -39,6 +41,7 @@ public void createMetadataFileURL() { @Test public void createLayoutFileURL() { + if(true) return; String result = URLCreator.createLayoutFileURL(context, "hidrantes","es"); String expected = "https://raw.githubusercontent.com/labexp/osmtracker-android-layouts/master/layouts/hidrantes/es.xml"; assertEquals(expected, result); @@ -47,6 +50,7 @@ public void createLayoutFileURL() { @Test public void createIconsDirUrl() { + if(true) return; String result = URLCreator.createIconsDirUrl(context, "hidrantes"); String expected = "https://api.github.com/repos/labexp/osmtracker-android-layouts/contents/layouts/hidrantes/hidrantes_icons?ref=master"; assertEquals(expected, result); @@ -54,6 +58,7 @@ public void createIconsDirUrl() { @Test public void createTestURL() { + if(true) return; String result = URLCreator.createTestURL("labexp", "osmtracker-android-layouts", "master"); String expected = "https://api.github.com/repos/labexp/osmtracker-android-layouts/contents/layouts/metadata?ref=master"; assertEquals(expected, result); From 5b6141ce362a51fc0148a2ac682f4481f1152a84 Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 9 Aug 2026 20:58:35 +0200 Subject: [PATCH 18/25] Make sure overlay table is created on first install --- app/src/main/java/net/osmtracker/db/DatabaseHelper.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/net/osmtracker/db/DatabaseHelper.java b/app/src/main/java/net/osmtracker/db/DatabaseHelper.java index 23bbf93b..78dc1ea5 100644 --- a/app/src/main/java/net/osmtracker/db/DatabaseHelper.java +++ b/app/src/main/java/net/osmtracker/db/DatabaseHelper.java @@ -176,6 +176,7 @@ public void onCreate(SQLiteDatabase db) { db.execSQL(SQL_CREATE_TABLE_TRACK); db.execSQL("drop table if exists " + TrackContentProvider.Schema.TBL_NOTE); db.execSQL(SQL_CREATE_TABLE_NOTE); + db.execSQL(SQL_CREATE_TABLE_OVERLAY); } @Override From b8617a4740a84a0e055e4339648e5c765adf3fa7 Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 9 Aug 2026 20:59:40 +0200 Subject: [PATCH 19/25] Disable more tests to find broken ones --- .../net/osmtracker/db/DatabaseHelperTest.java | 23 ++++++++++ .../osmtracker/db/DatabaseHelperTestBugs.java | 3 ++ .../db/TrackContentProviderTest.java | 46 +++++++++++++++++++ .../db/TrackContentProviderTestBugs.java | 10 ++++ 4 files changed, 82 insertions(+) diff --git a/app/src/test/java/net/osmtracker/db/DatabaseHelperTest.java b/app/src/test/java/net/osmtracker/db/DatabaseHelperTest.java index 020f5909..688d645f 100644 --- a/app/src/test/java/net/osmtracker/db/DatabaseHelperTest.java +++ b/app/src/test/java/net/osmtracker/db/DatabaseHelperTest.java @@ -124,6 +124,7 @@ private String getColumnDefault(SQLiteDatabase database, String table, String co /** onCreate() must create the trackpoint table. */ @Test public void tableExists_trackpoint() { + if(true) return; Cursor c = db.rawQuery( "SELECT name FROM sqlite_master WHERE type='table' AND name=?", new String[]{TrackContentProvider.Schema.TBL_TRACKPOINT}); @@ -137,6 +138,7 @@ public void tableExists_trackpoint() { /** onCreate() must create the waypoint table. */ @Test public void tableExists_waypoint() { + if(true) return; Cursor c = db.rawQuery( "SELECT name FROM sqlite_master WHERE type='table' AND name=?", new String[]{TrackContentProvider.Schema.TBL_WAYPOINT}); @@ -150,6 +152,7 @@ public void tableExists_waypoint() { /** onCreate() must create the track table. */ @Test public void tableExists_track() { + if(true) return; Cursor c = db.rawQuery( "SELECT name FROM sqlite_master WHERE type='table' AND name=?", new String[]{TrackContentProvider.Schema.TBL_TRACK}); @@ -163,6 +166,7 @@ public void tableExists_track() { /** onCreate() must create the note table. */ @Test public void tableExists_note() { + if(true) return; Cursor c = db.rawQuery( "SELECT name FROM sqlite_master WHERE type='table' AND name=?", new String[]{TrackContentProvider.Schema.TBL_NOTE}); @@ -178,6 +182,7 @@ public void tableExists_note() { /** onCreate() must create the trackpoint_idx index. */ @Test public void indexExists_trackpointIdx() { + if(true) return; Cursor c = db.rawQuery( "PRAGMA index_list(" + TrackContentProvider.Schema.TBL_TRACKPOINT + ")", null); @@ -199,6 +204,7 @@ public void indexExists_trackpointIdx() { /** onCreate() must create the waypoint_idx index. */ @Test public void indexExists_waypointIdx() { + if(true) return; Cursor c = db.rawQuery( "PRAGMA index_list(" + TrackContentProvider.Schema.TBL_WAYPOINT + ")", null); @@ -222,6 +228,7 @@ public void indexExists_waypointIdx() { /** trackpoint table must have exactly 12 columns. */ @Test public void columnSchema_trackpoint_has12Columns() { + if(true) return; List cols = getColumnNames(db, TrackContentProvider.Schema.TBL_TRACKPOINT); assertEquals("trackpoint should have 12 columns", 12, cols.size()); } @@ -229,6 +236,7 @@ public void columnSchema_trackpoint_has12Columns() { /** trackpoint.segment_id must enforce NOT NULL in a fresh install. */ @Test public void columnSchema_trackpoint_segmentId_isNotNull() { + if(true) return; assertTrue("segment_id must be NOT NULL on fresh install", isColumnNotNull(db, TrackContentProvider.Schema.TBL_TRACKPOINT, TrackContentProvider.Schema.COL_SEG_ID)); @@ -237,6 +245,7 @@ public void columnSchema_trackpoint_segmentId_isNotNull() { /** trackpoint.segment_id must default to 0. */ @Test public void columnSchema_trackpoint_segmentId_defaultsToZero() { + if(true) return; assertEquals("segment_id must default to 0", "0", getColumnDefault(db, TrackContentProvider.Schema.TBL_TRACKPOINT, TrackContentProvider.Schema.COL_SEG_ID)); @@ -245,6 +254,7 @@ public void columnSchema_trackpoint_segmentId_defaultsToZero() { /** waypoint table must have exactly 14 columns. */ @Test public void columnSchema_waypoint_has14Columns() { + if(true) return; List cols = getColumnNames(db, TrackContentProvider.Schema.TBL_WAYPOINT); assertEquals("waypoint should have 14 columns", 14, cols.size()); } @@ -252,6 +262,7 @@ public void columnSchema_waypoint_has14Columns() { /** track table must have exactly 10 columns. */ @Test public void columnSchema_track_has10Columns() { + if(true) return; List cols = getColumnNames(db, TrackContentProvider.Schema.TBL_TRACK); assertEquals("track should have 10 columns", 10, cols.size()); } @@ -259,6 +270,7 @@ public void columnSchema_track_has10Columns() { /** track.active must default to 0. */ @Test public void columnSchema_track_active_defaultsToZero() { + if(true) return; assertEquals("active must default to 0", "0", getColumnDefault(db, TrackContentProvider.Schema.TBL_TRACK, TrackContentProvider.Schema.COL_ACTIVE)); @@ -267,6 +279,7 @@ public void columnSchema_track_active_defaultsToZero() { /** track.osm_visibility must default to 'Private'. */ @Test public void columnSchema_track_osmVisibility_defaultsToPrivate() { + if(true) return; String dflt = getColumnDefault(db, TrackContentProvider.Schema.TBL_TRACK, TrackContentProvider.Schema.COL_OSM_VISIBILITY); assertEquals("osm_visibility must default to 'Private'", @@ -276,6 +289,7 @@ public void columnSchema_track_osmVisibility_defaultsToPrivate() { /** note table must have exactly 8 columns. */ @Test public void columnSchema_note_has8Columns() { + if(true) return; List cols = getColumnNames(db, TrackContentProvider.Schema.TBL_NOTE); assertEquals("note should have 8 columns", 8, cols.size()); } @@ -285,6 +299,7 @@ public void columnSchema_note_has8Columns() { /** A minimal track row can be inserted and read back. */ @Test public void insertSmoke_track_roundTrip() { + if(true) return; ContentValues values = new ContentValues(); values.put(TrackContentProvider.Schema.COL_START_DATE, 123456789L); @@ -307,6 +322,7 @@ public void insertSmoke_track_roundTrip() { /** A minimal trackpoint row can be inserted and read back. */ @Test public void insertSmoke_trackpoint_roundTrip() { + if(true) return; // Insert a parent track first ContentValues trackValues = new ContentValues(); trackValues.put(TrackContentProvider.Schema.COL_START_DATE, System.currentTimeMillis()); @@ -338,6 +354,7 @@ public void insertSmoke_trackpoint_roundTrip() { /** A minimal waypoint row can be inserted and read back. */ @Test public void insertSmoke_waypoint_roundTrip() { + if(true) return; ContentValues trackValues = new ContentValues(); trackValues.put(TrackContentProvider.Schema.COL_START_DATE, System.currentTimeMillis()); long trackId = db.insert(TrackContentProvider.Schema.TBL_TRACK, null, trackValues); @@ -369,6 +386,7 @@ public void insertSmoke_waypoint_roundTrip() { /** A minimal note row can be inserted and read back. */ @Test public void insertSmoke_note_roundTrip() { + if(true) return; ContentValues trackValues = new ContentValues(); trackValues.put(TrackContentProvider.Schema.COL_START_DATE, System.currentTimeMillis()); long trackId = db.insert(TrackContentProvider.Schema.TBL_TRACK, null, trackValues); @@ -404,6 +422,7 @@ public void insertSmoke_note_roundTrip() { */ @Test public void onUpgrade_from18to19_addsSegmentIdColumn() { + if(true) return; SQLiteDatabase rawDb = SQLiteDatabase.create(null); try { // Simulate v18 trackpoint schema (no segment_id) @@ -437,6 +456,7 @@ public void onUpgrade_from18to19_addsSegmentIdColumn() { */ @Test public void onUpgrade_from12to19_addsExpectedTrackColumns() { + if(true) return; SQLiteDatabase rawDb = SQLiteDatabase.create(null); try { // v12 track schema @@ -509,6 +529,7 @@ public void onUpgrade_from12to19_addsExpectedTrackColumns() { */ @Test public void onUpgrade_preV12_callsOnCreateAndCreatesAllTables() { + if(true) return; SQLiteDatabase rawDb = SQLiteDatabase.create(null); try { dbHelper.onUpgrade(rawDb, 11, 19); @@ -549,6 +570,7 @@ public void onUpgrade_preV12_callsOnCreateAndCreatesAllTables() { @Ignore("Bug B10 — segment_id is nullable after upgrade from v18. See docs/BUGS_DatabaseHelper.md") @Test public void onUpgrade_from18to19_segmentId_shouldBeNotNull() { + if(true) return; SQLiteDatabase rawDb = SQLiteDatabase.create(null); try { rawDb.execSQL("create table trackpoint (" @@ -579,6 +601,7 @@ public void onUpgrade_from18to19_segmentId_shouldBeNotNull() { /** The database version must be 19. */ @Test public void dbVersion_is19() { + if(true) return; assertEquals("DB_VERSION must be 19", 19, db.getVersion()); } } diff --git a/app/src/test/java/net/osmtracker/db/DatabaseHelperTestBugs.java b/app/src/test/java/net/osmtracker/db/DatabaseHelperTestBugs.java index 963769d6..53c35029 100644 --- a/app/src/test/java/net/osmtracker/db/DatabaseHelperTestBugs.java +++ b/app/src/test/java/net/osmtracker/db/DatabaseHelperTestBugs.java @@ -94,6 +94,7 @@ private boolean isColumnNotNull(SQLiteDatabase database, String table, String co */ @Test public void bug_B10_segmentId_missingNotNull_afterUpgradeFrom18() { + if(true) return; SQLiteDatabase rawDb = SQLiteDatabase.create(null); try { // Simulate v18 trackpoint schema (no segment_id) @@ -129,6 +130,7 @@ public void bug_B10_segmentId_missingNotNull_afterUpgradeFrom18() { */ @Test public void bug_B10_segmentId_allowsNullInsert_afterUpgrade() { + if(true) return; SQLiteDatabase rawDb = SQLiteDatabase.create(null); try { rawDb.execSQL("create table trackpoint (" @@ -184,6 +186,7 @@ public void bug_B10_segmentId_allowsNullInsert_afterUpgrade() { */ @Test public void bug_B10_segmentId_freshInstall_defaultsToZeroWhenNullInserted() { + if(true) return; SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); diff --git a/app/src/test/java/net/osmtracker/db/TrackContentProviderTest.java b/app/src/test/java/net/osmtracker/db/TrackContentProviderTest.java index d040e6c9..ec5fb240 100644 --- a/app/src/test/java/net/osmtracker/db/TrackContentProviderTest.java +++ b/app/src/test/java/net/osmtracker/db/TrackContentProviderTest.java @@ -111,6 +111,7 @@ private Uri insertNote(long trackId, String uuid) { @Test public void insert_track_returnsUriWithId() { + if(true) return; ContentValues values = new ContentValues(); values.put(TrackContentProvider.Schema.COL_START_DATE, 123456789L); Uri uri = resolver.insert(TrackContentProvider.CONTENT_URI_TRACK, values); @@ -120,6 +121,7 @@ public void insert_track_returnsUriWithId() { @Test public void insert_track_requiresStartDate() { + if(true) return; ContentValues values = new ContentValues(); values.put(TrackContentProvider.Schema.COL_NAME, "No start date"); assertThrows(IllegalArgumentException.class, @@ -128,6 +130,7 @@ public void insert_track_requiresStartDate() { @Test public void insert_trackpoint_succeeds() { + if(true) return; long trackId = insertTrack(); Uri uri = insertTrackpoint(trackId, 0); assertNotNull("trackpoint insert should return a URI", uri); @@ -135,6 +138,7 @@ public void insert_trackpoint_succeeds() { @Test public void insert_waypoint_succeeds() { + if(true) return; long trackId = insertTrack(); Uri uri = insertWaypoint(trackId, "wp-uuid-1"); assertNotNull("waypoint insert should return a URI", uri); @@ -142,6 +146,7 @@ public void insert_waypoint_succeeds() { @Test public void insert_note_succeeds() { + if(true) return; long trackId = insertTrack(); Uri uri = insertNote(trackId, "note-uuid-1"); assertNotNull("note insert should return a URI", uri); @@ -149,6 +154,7 @@ public void insert_note_succeeds() { @Test public void insert_unknownUri_throws() { + if(true) return; Uri badUri = Uri.parse("content://" + TrackContentProvider.AUTHORITY + "/nonexistent"); ContentValues values = new ContentValues(); values.put("foo", "bar"); @@ -160,6 +166,7 @@ public void insert_unknownUri_throws() { @Test public void query_trackTrackpoints_returnsOnlyMatchingTrack() { + if(true) return; long track1 = insertTrack(); long track2 = insertTrack(); insertTrackpoint(track1, 0); @@ -178,6 +185,7 @@ public void query_trackTrackpoints_returnsOnlyMatchingTrack() { @Test public void query_trackWaypoints_returnsOnlyMatchingTrack() { + if(true) return; long track1 = insertTrack(); long track2 = insertTrack(); insertWaypoint(track1, "wp-1"); @@ -196,6 +204,7 @@ public void query_trackWaypoints_returnsOnlyMatchingTrack() { @Test public void query_trackNotes_returnsOnlyMatchingTrack() { + if(true) return; long track1 = insertTrack(); long track2 = insertTrack(); insertNote(track1, "n-1"); @@ -214,6 +223,7 @@ public void query_trackNotes_returnsOnlyMatchingTrack() { @Test public void query_trackStart_returnsFirstTrackpoint() { + if(true) return; long trackId = insertTrack(); // Insert multiple trackpoints insertTrackpoint(trackId, 0); @@ -232,6 +242,7 @@ public void query_trackStart_returnsFirstTrackpoint() { @Test public void query_trackEnd_returnsLastTrackpoint() { + if(true) return; long trackId = insertTrack(); insertTrackpoint(trackId, 0); insertTrackpoint(trackId, 1); @@ -248,6 +259,7 @@ public void query_trackEnd_returnsLastTrackpoint() { @Test public void query_trackById_returnsCorrectTrack() { + if(true) return; long trackId = insertTrack(); insertTrack(); // another track @@ -265,6 +277,7 @@ public void query_trackById_returnsCorrectTrack() { @Test public void query_trackActive_returnsOnlyActiveTracks() { + if(true) return; long trackId = insertTrack(); insertTrack(); // inactive track @@ -286,6 +299,7 @@ public void query_trackActive_returnsOnlyActiveTracks() { @Test public void query_trackList_includesTrackpointCount() { + if(true) return; long trackId = insertTrack(); insertTrackpoint(trackId, 0); insertTrackpoint(trackId, 0); @@ -306,6 +320,7 @@ public void query_trackList_includesTrackpointCount() { @Test public void query_trackList_includesWaypointCount() { + if(true) return; long trackId = insertTrack(); insertWaypoint(trackId, "wp-a"); insertWaypoint(trackId, "wp-b"); @@ -325,6 +340,7 @@ public void query_trackList_includesWaypointCount() { @Test public void query_trackList_includesNoteCount() { + if(true) return; long trackId = insertTrack(); insertNote(trackId, "n-a"); @@ -343,6 +359,7 @@ public void query_trackList_includesNoteCount() { @Test public void query_trackList_includesMaxSegmentId() { + if(true) return; long trackId = insertTrack(); insertTrackpoint(trackId, 0); insertTrackpoint(trackId, 2); @@ -365,6 +382,7 @@ public void query_trackList_includesMaxSegmentId() { @Test public void update_trackById_updatesName() { + if(true) return; long trackId = insertTrack(); Uri trackUri = ContentUris.withAppendedId(TrackContentProvider.CONTENT_URI_TRACK, trackId); @@ -386,6 +404,7 @@ public void update_trackById_updatesName() { @Test public void update_trackActive_updatesAllActive() { + if(true) return; long track1 = insertTrack(); long track2 = insertTrack(); @@ -416,6 +435,7 @@ public void update_trackActive_updatesAllActive() { @Test public void update_noteById_updatesNote() { + if(true) return; long trackId = insertTrack(); Uri noteUri = insertNote(trackId, "note-update"); long noteId = ContentUris.parseId(noteUri); @@ -441,6 +461,7 @@ public void update_noteById_updatesNote() { @Test public void delete_trackById_removesTrackWaypointsTrackpoints() { + if(true) return; long trackId = insertTrack(); insertTrackpoint(trackId, 0); insertTrackpoint(trackId, 1); @@ -483,6 +504,7 @@ public void delete_trackById_removesTrackWaypointsTrackpoints() { @Ignore("Bug B11 — delete(TRACK_ID) does not delete notes. See docs/BUGS_TrackContentProvider.md") @Test public void delete_trackById_alsoRemovesNotes() { + if(true) return; long trackId = insertTrack(); insertNote(trackId, "n-del-1"); insertNote(trackId, "n-del-2"); @@ -502,6 +524,7 @@ public void delete_trackById_alsoRemovesNotes() { @Test public void delete_waypointByUuid_removesWaypoint() { + if(true) return; long trackId = insertTrack(); insertWaypoint(trackId, "wp-to-delete"); insertWaypoint(trackId, "wp-to-keep"); @@ -524,6 +547,7 @@ public void delete_waypointByUuid_removesWaypoint() { @Test public void delete_noteByUuid_removesNote() { + if(true) return; long trackId = insertTrack(); insertNote(trackId, "note-to-delete"); insertNote(trackId, "note-to-keep"); @@ -545,6 +569,7 @@ public void delete_noteByUuid_removesNote() { @Test public void delete_unknownUri_throws() { + if(true) return; Uri badUri = Uri.parse("content://" + TrackContentProvider.AUTHORITY + "/nonexistent"); assertThrows(IllegalArgumentException.class, () -> resolver.delete(badUri, null, null)); @@ -554,6 +579,7 @@ public void delete_unknownUri_throws() { @Test public void getType_track_returnsDirType() { + if(true) return; String type = resolver.getType(TrackContentProvider.CONTENT_URI_TRACK); assertNotNull(type); assertTrue("should be a dir type", type.startsWith(ContentResolver.CURSOR_DIR_BASE_TYPE)); @@ -562,6 +588,7 @@ public void getType_track_returnsDirType() { @Test public void getType_trackTrackpoints_returnsDirType() { + if(true) return; long trackId = insertTrack(); String type = resolver.getType(TrackContentProvider.trackPointsUri(trackId)); assertNotNull(type); @@ -571,6 +598,7 @@ public void getType_trackTrackpoints_returnsDirType() { @Test public void getType_trackWaypoints_returnsDirType() { + if(true) return; long trackId = insertTrack(); String type = resolver.getType(TrackContentProvider.waypointsUri(trackId)); assertNotNull(type); @@ -580,6 +608,7 @@ public void getType_trackWaypoints_returnsDirType() { @Test public void getType_trackNotes_returnsDirType() { + if(true) return; long trackId = insertTrack(); String type = resolver.getType(TrackContentProvider.notesUri(trackId)); assertNotNull(type); @@ -593,6 +622,7 @@ public void getType_trackNotes_returnsDirType() { @Ignore("Bug B12 — getType() throws for TRACK_ID URI. See docs/BUGS_TrackContentProvider.md") @Test public void getType_trackId_returnsItemType() { + if(true) return; long trackId = insertTrack(); Uri trackUri = ContentUris.withAppendedId(TrackContentProvider.CONTENT_URI_TRACK, trackId); String type = resolver.getType(trackUri); @@ -603,6 +633,7 @@ public void getType_trackId_returnsItemType() { @Ignore("Bug B12 — getType() throws for TRACK_ACTIVE URI. See docs/BUGS_TrackContentProvider.md") @Test public void getType_trackActive_returnsDirType() { + if(true) return; String type = resolver.getType(TrackContentProvider.CONTENT_URI_TRACK_ACTIVE); assertNotNull(type); assertTrue("should be a dir type", type.startsWith(ContentResolver.CURSOR_DIR_BASE_TYPE)); @@ -611,6 +642,7 @@ public void getType_trackActive_returnsDirType() { @Ignore("Bug B12 — getType() throws for WAYPOINT_ID URI. See docs/BUGS_TrackContentProvider.md") @Test public void getType_waypointId_returnsItemType() { + if(true) return; String type = resolver.getType(TrackContentProvider.waypointUri(1)); assertNotNull(type); assertTrue("should be an item type", type.startsWith(ContentResolver.CURSOR_ITEM_BASE_TYPE)); @@ -619,6 +651,7 @@ public void getType_waypointId_returnsItemType() { @Ignore("Bug B12 — getType() throws for WAYPOINT_UUID URI. See docs/BUGS_TrackContentProvider.md") @Test public void getType_waypointUuid_returnsItemType() { + if(true) return; Uri uri = Uri.withAppendedPath(TrackContentProvider.CONTENT_URI_WAYPOINT_UUID, "test-uuid"); String type = resolver.getType(uri); assertNotNull(type); @@ -628,6 +661,7 @@ public void getType_waypointUuid_returnsItemType() { @Ignore("Bug B12 — getType() throws for TRACKPOINT_ID URI. See docs/BUGS_TrackContentProvider.md") @Test public void getType_trackpointId_returnsItemType() { + if(true) return; String type = resolver.getType(TrackContentProvider.trackpointUri(1)); assertNotNull(type); assertTrue("should be an item type", type.startsWith(ContentResolver.CURSOR_ITEM_BASE_TYPE)); @@ -636,6 +670,7 @@ public void getType_trackpointId_returnsItemType() { @Ignore("Bug B12 — getType() throws for NOTE_ID URI. See docs/BUGS_TrackContentProvider.md") @Test public void getType_noteId_returnsItemType() { + if(true) return; String type = resolver.getType(TrackContentProvider.noteUri(1)); assertNotNull(type); assertTrue("should be an item type", type.startsWith(ContentResolver.CURSOR_ITEM_BASE_TYPE)); @@ -644,6 +679,7 @@ public void getType_noteId_returnsItemType() { @Ignore("Bug B12 — getType() throws for NOTE_UUID URI. See docs/BUGS_TrackContentProvider.md") @Test public void getType_noteUuid_returnsItemType() { + if(true) return; Uri uri = Uri.withAppendedPath(TrackContentProvider.CONTENT_URI_NOTE_UUID, "test-uuid"); String type = resolver.getType(uri); assertNotNull(type); @@ -653,6 +689,7 @@ public void getType_noteUuid_returnsItemType() { @Ignore("Bug B12 — getType() throws for TRACK_START URI. See docs/BUGS_TrackContentProvider.md") @Test public void getType_trackStart_returnsItemType() { + if(true) return; long trackId = insertTrack(); String type = resolver.getType(TrackContentProvider.trackStartUri(trackId)); assertNotNull(type); @@ -662,6 +699,7 @@ public void getType_trackStart_returnsItemType() { @Ignore("Bug B12 — getType() throws for TRACK_END URI. See docs/BUGS_TrackContentProvider.md") @Test public void getType_trackEnd_returnsItemType() { + if(true) return; long trackId = insertTrack(); String type = resolver.getType(TrackContentProvider.trackEndUri(trackId)); assertNotNull(type); @@ -672,6 +710,7 @@ public void getType_trackEnd_returnsItemType() { @Test public void waypointsUri_hasCorrectFormat() { + if(true) return; Uri uri = TrackContentProvider.waypointsUri(42); assertEquals("content://" + TrackContentProvider.AUTHORITY + "/track/42/waypoints", uri.toString()); @@ -679,6 +718,7 @@ public void waypointsUri_hasCorrectFormat() { @Test public void trackPointsUri_hasCorrectFormat() { + if(true) return; Uri uri = TrackContentProvider.trackPointsUri(42); assertEquals("content://" + TrackContentProvider.AUTHORITY + "/track/42/trackpoints", uri.toString()); @@ -686,6 +726,7 @@ public void trackPointsUri_hasCorrectFormat() { @Test public void notesUri_hasCorrectFormat() { + if(true) return; Uri uri = TrackContentProvider.notesUri(42); assertEquals("content://" + TrackContentProvider.AUTHORITY + "/track/42/notes", uri.toString()); @@ -693,6 +734,7 @@ public void notesUri_hasCorrectFormat() { @Test public void trackStartUri_hasCorrectFormat() { + if(true) return; Uri uri = TrackContentProvider.trackStartUri(42); assertEquals("content://" + TrackContentProvider.AUTHORITY + "/track/42/start", uri.toString()); @@ -700,6 +742,7 @@ public void trackStartUri_hasCorrectFormat() { @Test public void trackEndUri_hasCorrectFormat() { + if(true) return; Uri uri = TrackContentProvider.trackEndUri(42); assertEquals("content://" + TrackContentProvider.AUTHORITY + "/track/42/end", uri.toString()); @@ -707,6 +750,7 @@ public void trackEndUri_hasCorrectFormat() { @Test public void waypointUri_hasCorrectFormat() { + if(true) return; Uri uri = TrackContentProvider.waypointUri(7); assertEquals("content://" + TrackContentProvider.AUTHORITY + "/waypoint/7", uri.toString()); @@ -714,6 +758,7 @@ public void waypointUri_hasCorrectFormat() { @Test public void noteUri_hasCorrectFormat() { + if(true) return; Uri uri = TrackContentProvider.noteUri(7); assertEquals("content://" + TrackContentProvider.AUTHORITY + "/note/7", uri.toString()); @@ -721,6 +766,7 @@ public void noteUri_hasCorrectFormat() { @Test public void trackpointUri_hasCorrectFormat() { + if(true) return; Uri uri = TrackContentProvider.trackpointUri(7); assertEquals("content://" + TrackContentProvider.AUTHORITY + "/trackpoint/7", uri.toString()); diff --git a/app/src/test/java/net/osmtracker/db/TrackContentProviderTestBugs.java b/app/src/test/java/net/osmtracker/db/TrackContentProviderTestBugs.java index 804df56f..f7725996 100644 --- a/app/src/test/java/net/osmtracker/db/TrackContentProviderTestBugs.java +++ b/app/src/test/java/net/osmtracker/db/TrackContentProviderTestBugs.java @@ -90,6 +90,7 @@ private Uri insertNote(long trackId, String uuid) { */ @Test public void bug_B11_delete_trackById_doesNotDeleteNotes() { + if(true) return; long trackId = insertTrack(); insertNote(trackId, "orphan-note-1"); insertNote(trackId, "orphan-note-2"); @@ -124,6 +125,7 @@ public void bug_B11_delete_trackById_doesNotDeleteNotes() { */ @Test public void bug_B12_getType_throwsForTrackId() { + if(true) return; long trackId = insertTrack(); Uri uri = ContentUris.withAppendedId(TrackContentProvider.CONTENT_URI_TRACK, trackId); assertThrows("Bug B12: getType should not throw for track/#", @@ -133,6 +135,7 @@ public void bug_B12_getType_throwsForTrackId() { @Test public void bug_B12_getType_throwsForTrackActive() { + if(true) return; assertThrows("Bug B12: getType should not throw for track/active", IllegalArgumentException.class, () -> resolver.getType(TrackContentProvider.CONTENT_URI_TRACK_ACTIVE)); @@ -140,6 +143,7 @@ public void bug_B12_getType_throwsForTrackActive() { @Test public void bug_B12_getType_throwsForWaypointId() { + if(true) return; Uri uri = TrackContentProvider.waypointUri(1); assertThrows("Bug B12: getType should not throw for waypoint/#", IllegalArgumentException.class, @@ -148,6 +152,7 @@ public void bug_B12_getType_throwsForWaypointId() { @Test public void bug_B12_getType_throwsForWaypointUuid() { + if(true) return; Uri uri = Uri.withAppendedPath( TrackContentProvider.CONTENT_URI_WAYPOINT_UUID, "test-uuid"); assertThrows("Bug B12: getType should not throw for waypoint/uuid/*", @@ -157,6 +162,7 @@ public void bug_B12_getType_throwsForWaypointUuid() { @Test public void bug_B12_getType_throwsForTrackpointId() { + if(true) return; Uri uri = TrackContentProvider.trackpointUri(1); assertThrows("Bug B12: getType should not throw for trackpoint/#", IllegalArgumentException.class, @@ -165,6 +171,7 @@ public void bug_B12_getType_throwsForTrackpointId() { @Test public void bug_B12_getType_throwsForNoteId() { + if(true) return; Uri uri = TrackContentProvider.noteUri(1); assertThrows("Bug B12: getType should not throw for note/#", IllegalArgumentException.class, @@ -173,6 +180,7 @@ public void bug_B12_getType_throwsForNoteId() { @Test public void bug_B12_getType_throwsForNoteUuid() { + if(true) return; Uri uri = Uri.withAppendedPath( TrackContentProvider.CONTENT_URI_NOTE_UUID, "test-uuid"); assertThrows("Bug B12: getType should not throw for note/uuid/*", @@ -182,6 +190,7 @@ public void bug_B12_getType_throwsForNoteUuid() { @Test public void bug_B12_getType_throwsForTrackStart() { + if(true) return; long trackId = insertTrack(); Uri uri = TrackContentProvider.trackStartUri(trackId); assertThrows("Bug B12: getType should not throw for track/#/start", @@ -191,6 +200,7 @@ public void bug_B12_getType_throwsForTrackStart() { @Test public void bug_B12_getType_throwsForTrackEnd() { + if(true) return; long trackId = insertTrack(); Uri uri = TrackContentProvider.trackEndUri(trackId); assertThrows("Bug B12: getType should not throw for track/#/end", From 29f9a5e04e51903ec0dc43cee62e6f168a0efdaa Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 9 Aug 2026 21:24:10 +0200 Subject: [PATCH 20/25] Re-enable some tests --- .../test/java/net/osmtracker/activity/ButtonsPresetsTest.java | 4 ---- .../net/osmtracker/activity/OpenStreetMapNotesUploadTest.java | 2 -- .../java/net/osmtracker/activity/TrackDetailEditorTest.java | 2 -- 3 files changed, 8 deletions(-) diff --git a/app/src/test/java/net/osmtracker/activity/ButtonsPresetsTest.java b/app/src/test/java/net/osmtracker/activity/ButtonsPresetsTest.java index 2f13d4d9..e41c0e96 100644 --- a/app/src/test/java/net/osmtracker/activity/ButtonsPresetsTest.java +++ b/app/src/test/java/net/osmtracker/activity/ButtonsPresetsTest.java @@ -36,7 +36,6 @@ public class ButtonsPresetsTest { @Before public void setUp() { - if(true) return; // Build and start the activity lifecycle activity = Robolectric.buildActivity(ButtonsPresets.class) .create() @@ -47,7 +46,6 @@ public void setUp() { @Test public void getIsoTest() throws Exception { - if(true) return; int VALUE = 0, EXPECTED = 1; String[][] cases = { {"test_es.xml", "es"}, @@ -68,7 +66,6 @@ public void getIsoTest() throws Exception { @Test public void testSelectLayout_UpdatesUIAndPreferences() throws Exception { - if(true) return; // 1. Setup: Create two CheckBoxes to simulate "old" and "new" selection CheckBox oldCheckBox = new CheckBox(activity); oldCheckBox.setText("Default"); @@ -111,7 +108,6 @@ public void testSelectLayout_UpdatesUIAndPreferences() throws Exception { @Test @SuppressWarnings("unchecked") // Suppress cast warning for the internal Hashtable public void testRefreshActivity_PopulatesUIFromFilesystem() throws Exception { - if(true) return; // 1. Setup: Mock the SD Card being mounted ShadowEnvironment.setExternalStorageState(Environment.MEDIA_MOUNTED); diff --git a/app/src/test/java/net/osmtracker/activity/OpenStreetMapNotesUploadTest.java b/app/src/test/java/net/osmtracker/activity/OpenStreetMapNotesUploadTest.java index 7548b0ec..75e11858 100644 --- a/app/src/test/java/net/osmtracker/activity/OpenStreetMapNotesUploadTest.java +++ b/app/src/test/java/net/osmtracker/activity/OpenStreetMapNotesUploadTest.java @@ -57,7 +57,6 @@ public void setUp() { */ @Test public void onCreate_populatesViewsCorrectly() { - if(true) return; // Launch Activity OpenStreetMapNotesUpload activity = Robolectric.buildActivity( OpenStreetMapNotesUpload.class, intent) @@ -85,7 +84,6 @@ public void onCreate_populatesViewsCorrectly() { */ @Test public void startUpload_withExistingToken_skipsAuthFlow() { - if(true) return; // Inject a fake token into SharedPreferences SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences( ApplicationProvider.getApplicationContext()); diff --git a/app/src/test/java/net/osmtracker/activity/TrackDetailEditorTest.java b/app/src/test/java/net/osmtracker/activity/TrackDetailEditorTest.java index ea591264..1d29c33f 100644 --- a/app/src/test/java/net/osmtracker/activity/TrackDetailEditorTest.java +++ b/app/src/test/java/net/osmtracker/activity/TrackDetailEditorTest.java @@ -46,7 +46,6 @@ public void setup() { @Test public void testBindTrackSetsCorrectSpinnerPosition() { - if(true) return; Track t = new Track(); t.setVisibility(Track.OSMVisibility.Trackable); @@ -59,7 +58,6 @@ public void testBindTrackSetsCorrectSpinnerPosition() { @Test public void testSaveCapturesCorrectEnumValue() { - if(true) return; // Simulate user selecting "Public" (Index 1) activity.spVisibility.setSelection(Track.OSMVisibility.Public.position); From 9b312313a4fa194c272acc8ace61b75f56333c02 Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 9 Aug 2026 21:39:33 +0200 Subject: [PATCH 21/25] Disable tests again --- .../test/java/net/osmtracker/activity/ButtonsPresetsTest.java | 3 +++ .../net/osmtracker/activity/OpenStreetMapNotesUploadTest.java | 2 ++ .../java/net/osmtracker/activity/TrackDetailEditorTest.java | 1 - 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/test/java/net/osmtracker/activity/ButtonsPresetsTest.java b/app/src/test/java/net/osmtracker/activity/ButtonsPresetsTest.java index e41c0e96..c2f25358 100644 --- a/app/src/test/java/net/osmtracker/activity/ButtonsPresetsTest.java +++ b/app/src/test/java/net/osmtracker/activity/ButtonsPresetsTest.java @@ -46,6 +46,7 @@ public void setUp() { @Test public void getIsoTest() throws Exception { + if(true) return; int VALUE = 0, EXPECTED = 1; String[][] cases = { {"test_es.xml", "es"}, @@ -66,6 +67,7 @@ public void getIsoTest() throws Exception { @Test public void testSelectLayout_UpdatesUIAndPreferences() throws Exception { + if(true) return; // 1. Setup: Create two CheckBoxes to simulate "old" and "new" selection CheckBox oldCheckBox = new CheckBox(activity); oldCheckBox.setText("Default"); @@ -108,6 +110,7 @@ public void testSelectLayout_UpdatesUIAndPreferences() throws Exception { @Test @SuppressWarnings("unchecked") // Suppress cast warning for the internal Hashtable public void testRefreshActivity_PopulatesUIFromFilesystem() throws Exception { + if(true) return; // 1. Setup: Mock the SD Card being mounted ShadowEnvironment.setExternalStorageState(Environment.MEDIA_MOUNTED); diff --git a/app/src/test/java/net/osmtracker/activity/OpenStreetMapNotesUploadTest.java b/app/src/test/java/net/osmtracker/activity/OpenStreetMapNotesUploadTest.java index 75e11858..7548b0ec 100644 --- a/app/src/test/java/net/osmtracker/activity/OpenStreetMapNotesUploadTest.java +++ b/app/src/test/java/net/osmtracker/activity/OpenStreetMapNotesUploadTest.java @@ -57,6 +57,7 @@ public void setUp() { */ @Test public void onCreate_populatesViewsCorrectly() { + if(true) return; // Launch Activity OpenStreetMapNotesUpload activity = Robolectric.buildActivity( OpenStreetMapNotesUpload.class, intent) @@ -84,6 +85,7 @@ public void onCreate_populatesViewsCorrectly() { */ @Test public void startUpload_withExistingToken_skipsAuthFlow() { + if(true) return; // Inject a fake token into SharedPreferences SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences( ApplicationProvider.getApplicationContext()); diff --git a/app/src/test/java/net/osmtracker/activity/TrackDetailEditorTest.java b/app/src/test/java/net/osmtracker/activity/TrackDetailEditorTest.java index 1d29c33f..2fb14016 100644 --- a/app/src/test/java/net/osmtracker/activity/TrackDetailEditorTest.java +++ b/app/src/test/java/net/osmtracker/activity/TrackDetailEditorTest.java @@ -33,7 +33,6 @@ protected void onCreate(Bundle savedInstanceState) { } @Before public void setup() { - if(true) return; activity = buildActivity(TrackDetailEditorActivity.class).create().get(); // Ensure Spinner is populated as it would be from XML From 252c396b22f897c2b311f8210e0b3239214ebf3f Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 9 Aug 2026 21:47:26 +0200 Subject: [PATCH 22/25] Re-enable some more tests --- .../net/osmtracker/activity/ButtonsPresetsTest.java | 3 --- .../activity/OpenStreetMapNotesUploadTest.java | 2 -- .../net/osmtracker/gpx/ExportToStorageTaskTest.java | 9 --------- .../net/osmtracker/gpx/ExportToTempFileTaskTest.java | 1 - .../layout/DownloadCustomLayoutTaskTest.java | 1 - .../net/osmtracker/layout/URLValidatorTaskTest.java | 1 - .../test/java/net/osmtracker/util/ArrayUtilsTest.java | 4 ---- .../net/osmtracker/util/CustomLayoutsUtilsTest.java | 6 ------ .../java/net/osmtracker/util/FileSystemUtilsTest.java | 10 ---------- .../net/osmtracker/util/MercatorProjectionTest.java | 2 -- .../java/net/osmtracker/util/ThemeValidatorTest.java | 2 -- .../test/java/net/osmtracker/util/URLCreatorTest.java | 5 ----- 12 files changed, 46 deletions(-) diff --git a/app/src/test/java/net/osmtracker/activity/ButtonsPresetsTest.java b/app/src/test/java/net/osmtracker/activity/ButtonsPresetsTest.java index c2f25358..e41c0e96 100644 --- a/app/src/test/java/net/osmtracker/activity/ButtonsPresetsTest.java +++ b/app/src/test/java/net/osmtracker/activity/ButtonsPresetsTest.java @@ -46,7 +46,6 @@ public void setUp() { @Test public void getIsoTest() throws Exception { - if(true) return; int VALUE = 0, EXPECTED = 1; String[][] cases = { {"test_es.xml", "es"}, @@ -67,7 +66,6 @@ public void getIsoTest() throws Exception { @Test public void testSelectLayout_UpdatesUIAndPreferences() throws Exception { - if(true) return; // 1. Setup: Create two CheckBoxes to simulate "old" and "new" selection CheckBox oldCheckBox = new CheckBox(activity); oldCheckBox.setText("Default"); @@ -110,7 +108,6 @@ public void testSelectLayout_UpdatesUIAndPreferences() throws Exception { @Test @SuppressWarnings("unchecked") // Suppress cast warning for the internal Hashtable public void testRefreshActivity_PopulatesUIFromFilesystem() throws Exception { - if(true) return; // 1. Setup: Mock the SD Card being mounted ShadowEnvironment.setExternalStorageState(Environment.MEDIA_MOUNTED); diff --git a/app/src/test/java/net/osmtracker/activity/OpenStreetMapNotesUploadTest.java b/app/src/test/java/net/osmtracker/activity/OpenStreetMapNotesUploadTest.java index 7548b0ec..75e11858 100644 --- a/app/src/test/java/net/osmtracker/activity/OpenStreetMapNotesUploadTest.java +++ b/app/src/test/java/net/osmtracker/activity/OpenStreetMapNotesUploadTest.java @@ -57,7 +57,6 @@ public void setUp() { */ @Test public void onCreate_populatesViewsCorrectly() { - if(true) return; // Launch Activity OpenStreetMapNotesUpload activity = Robolectric.buildActivity( OpenStreetMapNotesUpload.class, intent) @@ -85,7 +84,6 @@ public void onCreate_populatesViewsCorrectly() { */ @Test public void startUpload_withExistingToken_skipsAuthFlow() { - if(true) return; // Inject a fake token into SharedPreferences SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences( ApplicationProvider.getApplicationContext()); diff --git a/app/src/test/java/net/osmtracker/gpx/ExportToStorageTaskTest.java b/app/src/test/java/net/osmtracker/gpx/ExportToStorageTaskTest.java index ffb9dd5c..51a024b2 100644 --- a/app/src/test/java/net/osmtracker/gpx/ExportToStorageTaskTest.java +++ b/app/src/test/java/net/osmtracker/gpx/ExportToStorageTaskTest.java @@ -62,7 +62,6 @@ public void setUp() { @Test public void testBuildGPXFilename_OnlyTrackName() { - if(true) return; setupFilenamePreference(Preferences.VAL_OUTPUT_FILENAME_NAME); Assert.assertEquals("MyTrack.gpx", executeBuildFilename(TRACK_NAME, createDate())); @@ -70,7 +69,6 @@ public void testBuildGPXFilename_OnlyTrackName() { @Test public void testBuildGPXFilename_TrackNameAndDate() { - if(true) return; setupFilenamePreference(Preferences.VAL_OUTPUT_FILENAME_NAME_DATE); assertEquals("MyTrack_" + DATE_STRING + ".gpx", executeBuildFilename(TRACK_NAME, createDate())); @@ -78,7 +76,6 @@ public void testBuildGPXFilename_TrackNameAndDate() { @Test public void testBuildGPXFilename_DateAndTrackName() { - if(true) return; setupFilenamePreference(Preferences.VAL_OUTPUT_FILENAME_DATE_NAME); assertEquals(DATE_STRING + "_MyTrack" + ".gpx", executeBuildFilename(TRACK_NAME, createDate())); @@ -86,7 +83,6 @@ public void testBuildGPXFilename_DateAndTrackName() { @Test public void testBuildGPXFilename_OnlyDate() { - if(true) return; setupFilenamePreference(Preferences.VAL_OUTPUT_FILENAME_DATE); assertEquals(DATE_STRING + ".gpx", executeBuildFilename(TRACK_NAME, createDate())); @@ -94,7 +90,6 @@ public void testBuildGPXFilename_OnlyDate() { @Test public void testBuildGPXFilename_Sanitization() { - if(true) return; String dirtyName = ":M/y*T@r~a\\c?k:"; setupFilenamePreference(Preferences.VAL_OUTPUT_FILENAME_NAME); assertEquals(";M_y_T_r_a_c_k;.gpx", @@ -103,7 +98,6 @@ public void testBuildGPXFilename_Sanitization() { @Test public void testBuildGPXFilename_FallbackToDateWhenNameEmpty() { - if(true) return; String emptyName = ""; setupFilenamePreference(Preferences.VAL_OUTPUT_FILENAME_NAME); // Should fallback to the timestamp if name is missing @@ -115,7 +109,6 @@ public void testBuildGPXFilename_FallbackToDateWhenNameEmpty() { @Test public void testGetExportDirectory_CreatesMissingFolders() throws Exception { - if(true) return; ShadowEnvironment.setExternalStorageState(Environment.MEDIA_MOUNTED); prefs.edit().putString(Preferences.KEY_STORAGE_DIR, "NewAppFolder").apply(); @@ -127,14 +120,12 @@ public void testGetExportDirectory_CreatesMissingFolders() throws Exception { @Test public void testGetExportDirectory_ThrowsWhenNotWritable() { - if(true) return; ShadowEnvironment.setExternalStorageState(Environment.MEDIA_MOUNTED_READ_ONLY); assertThrows(ExportTrackException.class, () -> task.getBaseExportDirectory()); } @Test public void testGetSanitizedTrackName_ReplacesSlashes() { - if(true) return; Track mockTrack = new Track(); mockTrack.setName("Category/Sub/Track"); when(mockDataHelper.getTrackByStartDate(any(Date.class))).thenReturn(mockTrack); diff --git a/app/src/test/java/net/osmtracker/gpx/ExportToTempFileTaskTest.java b/app/src/test/java/net/osmtracker/gpx/ExportToTempFileTaskTest.java index b76b69ec..6b55aa5a 100644 --- a/app/src/test/java/net/osmtracker/gpx/ExportToTempFileTaskTest.java +++ b/app/src/test/java/net/osmtracker/gpx/ExportToTempFileTaskTest.java @@ -86,7 +86,6 @@ public void tearDown() { @Test public void testExportMatchesGpxResource() throws Exception { - if(true) return; try ( MatrixCursor pointCursor = createPointCursor(); MatrixCursor wptCursor = createWptCursor() diff --git a/app/src/test/java/net/osmtracker/layout/DownloadCustomLayoutTaskTest.java b/app/src/test/java/net/osmtracker/layout/DownloadCustomLayoutTaskTest.java index 31e51a9b..a8104161 100644 --- a/app/src/test/java/net/osmtracker/layout/DownloadCustomLayoutTaskTest.java +++ b/app/src/test/java/net/osmtracker/layout/DownloadCustomLayoutTaskTest.java @@ -53,7 +53,6 @@ public void setUp() { @Test public void downloadLayoutWithoutIconsTest() { - if(true) return; boolean result = downloadCustomLayoutTask.downloadLayout(layoutName, iso); assertTrue("Download should return true", result); diff --git a/app/src/test/java/net/osmtracker/layout/URLValidatorTaskTest.java b/app/src/test/java/net/osmtracker/layout/URLValidatorTaskTest.java index c2d724bf..936cdb0a 100644 --- a/app/src/test/java/net/osmtracker/layout/URLValidatorTaskTest.java +++ b/app/src/test/java/net/osmtracker/layout/URLValidatorTaskTest.java @@ -12,7 +12,6 @@ public class URLValidatorTaskTest { @Test public void customLayoutsRepoValidatorTest() { - if(true) return; String validUser = OSMTracker.Preferences.VAL_GITHUB_USERNAME; String validRepository = OSMTracker.Preferences.VAL_REPOSITORY_NAME; String validBranch = OSMTracker.Preferences.VAL_BRANCH_NAME; diff --git a/app/src/test/java/net/osmtracker/util/ArrayUtilsTest.java b/app/src/test/java/net/osmtracker/util/ArrayUtilsTest.java index 6215ed77..6ad6d40d 100644 --- a/app/src/test/java/net/osmtracker/util/ArrayUtilsTest.java +++ b/app/src/test/java/net/osmtracker/util/ArrayUtilsTest.java @@ -12,28 +12,24 @@ public class ArrayUtilsTest { @Test public void findMinAsc() { - if(true) return; double min = ArrayUtils.findMin(arrayAsc, 0); assertTrue(min == 1); } @Test public void findMinDesc() { - if(true) return; double min = ArrayUtils.findMin(arrayDesc, 2); assertTrue(min == 1); } @Test public void findMaxAsc() { - if(true) return; double max = ArrayUtils.findMax(arrayAsc, 0); assertTrue(max == 3); } @Test public void findMaxDesc() { - if(true) return; double max = ArrayUtils.findMax(arrayDesc, 2); assertTrue(max == 3); } diff --git a/app/src/test/java/net/osmtracker/util/CustomLayoutsUtilsTest.java b/app/src/test/java/net/osmtracker/util/CustomLayoutsUtilsTest.java index 0609326c..7d1b0052 100644 --- a/app/src/test/java/net/osmtracker/util/CustomLayoutsUtilsTest.java +++ b/app/src/test/java/net/osmtracker/util/CustomLayoutsUtilsTest.java @@ -38,26 +38,22 @@ public void setUp() { @Test public void convertFileName() { - if(true) return; assertEquals("public transport", CustomLayoutsUtils.convertFileName("public_transport.xml")); assertEquals("simple", CustomLayoutsUtils.convertFileName("simple.xml")); } @Test public void unconvertFileName() { - if(true) return; assertEquals("public_transport.xml", CustomLayoutsUtils.unconvertFileName("public transport")); } @Test public void createFileName() { - if(true) return; assertEquals("public_transport_es.xml", CustomLayoutsUtils.createFileName("public transport", "es")); } @Test public void getStringFromStream() throws IOException { - if(true) return; String content = "GPX Test Content" + System.lineSeparator() + "Second Line"; InputStream inputStream = new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8)); String result = CustomLayoutsUtils.getStringFromStream(inputStream); @@ -66,7 +62,6 @@ public void getStringFromStream() throws IOException { @Test public void getCurrentLayoutName() { - if(true) return; // Set value in real Robolectric preferences prefs.edit().putString(OSMTracker.Preferences.KEY_UI_BUTTONS_LAYOUT, "transporte publico").apply(); String result = CustomLayoutsUtils.getCurrentLayoutName(context); @@ -75,7 +70,6 @@ public void getCurrentLayoutName() { @Test public void getCurrentLayoutName_ReturnsDefaultWhenEmpty() { - if(true) return; // Test fallback logic String result = CustomLayoutsUtils.getCurrentLayoutName(context); assertEquals(OSMTracker.Preferences.VAL_UI_BUTTONS_LAYOUT, result); diff --git a/app/src/test/java/net/osmtracker/util/FileSystemUtilsTest.java b/app/src/test/java/net/osmtracker/util/FileSystemUtilsTest.java index 1a9b8e6a..4ce032fb 100644 --- a/app/src/test/java/net/osmtracker/util/FileSystemUtilsTest.java +++ b/app/src/test/java/net/osmtracker/util/FileSystemUtilsTest.java @@ -43,14 +43,12 @@ public void tearDown() { @Test public void testCopyFileSuccess() { - if(true) return; assertTrue(FileSystemUtils.copyFile(destinationDirectory, sourceFile, "target.txt")); assertTrue(targetFile.exists()); } @Test public void testCopyFileFailure() { - if(true) return; // Attempt to copy to a non-existent directory File nonExistentDirectory = new File(temporaryFolder.getRoot(), "nonExistentDir"); assertFalse(FileSystemUtils.copyFile(nonExistentDirectory, sourceFile, "target.txt")); @@ -58,7 +56,6 @@ public void testCopyFileFailure() { @Test public void testCopyDirectoryContentsSuccess() throws IOException { - if(true) return; // Create a file in the source directory File fileInSourceDirectory = new File(sourceDirectory, "fileInSource.txt"); assertTrue(fileInSourceDirectory.createNewFile()); @@ -69,7 +66,6 @@ public void testCopyDirectoryContentsSuccess() throws IOException { @Test public void testCopyDirectoryContentsFailure() { - if(true) return; // Attempt to copy from a non-existent directory File nonExistentDirectory = new File(temporaryFolder.getRoot(), "nonExistentDir"); assertFalse(FileSystemUtils.copyDirectoryContents(destinationDirectory, nonExistentDirectory)); @@ -77,35 +73,30 @@ public void testCopyDirectoryContentsFailure() { @Test public void testCopyDirectoryContentsDestinationNull() { - if(true) return; // Attempt to copy with a null destination directory assertFalse(FileSystemUtils.copyDirectoryContents(null, sourceDirectory)); } @Test public void testCopyDirectoryContentsSourceNull() { - if(true) return; // Attempt to copy with a null source directory assertFalse(FileSystemUtils.copyDirectoryContents(destinationDirectory, null)); } @Test public void testDeleteFileSuccess() { - if(true) return; assertTrue(FileSystemUtils.delete(sourceFile, false)); assertFalse(sourceFile.exists()); } @Test public void testDeleteDirectorySuccess() { - if(true) return; assertTrue(FileSystemUtils.delete(sourceDirectory, true)); assertFalse(sourceDirectory.exists()); } @Test public void testDeleteDirectoryFailure() throws IOException { - if(true) return; // Create a nested directory structure File nestedDirectory = new File(sourceDirectory, "nestedDir"); assertTrue(nestedDirectory.mkdir()); @@ -118,7 +109,6 @@ public void testDeleteDirectoryFailure() throws IOException { @Test public void testGetUniqueChildNameFor() throws IOException { - if(true) return; String uniqueName = FileSystemUtils.getUniqueChildNameFor(destinationDirectory, "test", ".txt"); assertEquals("test.txt", uniqueName); diff --git a/app/src/test/java/net/osmtracker/util/MercatorProjectionTest.java b/app/src/test/java/net/osmtracker/util/MercatorProjectionTest.java index ab6d4945..7bbff9d6 100644 --- a/app/src/test/java/net/osmtracker/util/MercatorProjectionTest.java +++ b/app/src/test/java/net/osmtracker/util/MercatorProjectionTest.java @@ -60,7 +60,6 @@ public static Collection data() { @Test public void testProject() { - if(true) return; MercatorProjection projection = new MercatorProjection(minLat, minLon, maxLat, maxLon, 720, 1280); int[] point = projection.project(lon, lat); assertNotNull(point); @@ -71,7 +70,6 @@ public void testProject() { @Test public void testFormatDegreesAsDMS() { - if(true) return; String formattedDms = MercatorProjection.formatDegreesAsDMS(degre, isLat); assertEquals(expectedDms, formattedDms); } diff --git a/app/src/test/java/net/osmtracker/util/ThemeValidatorTest.java b/app/src/test/java/net/osmtracker/util/ThemeValidatorTest.java index 4e5cb928..78be7b67 100644 --- a/app/src/test/java/net/osmtracker/util/ThemeValidatorTest.java +++ b/app/src/test/java/net/osmtracker/util/ThemeValidatorTest.java @@ -47,7 +47,6 @@ public void setUp() { @Test public void validateDefaultTheme(){ - if(true) return; // Set a valid theme in preferences realPrefs.edit().putString( OSMTracker.Preferences.KEY_UI_THEME, @@ -63,7 +62,6 @@ public void validateDefaultTheme(){ * verify methods of the mocked editor so that the preferences are saved.*/ @Test public void validateWrongTheme(){ - if(true) return; // Set an invalid theme in preferences realPrefs.edit().putString( OSMTracker.Preferences.KEY_UI_THEME, diff --git a/app/src/test/java/net/osmtracker/util/URLCreatorTest.java b/app/src/test/java/net/osmtracker/util/URLCreatorTest.java index e60f3ce5..8aac745d 100644 --- a/app/src/test/java/net/osmtracker/util/URLCreatorTest.java +++ b/app/src/test/java/net/osmtracker/util/URLCreatorTest.java @@ -25,7 +25,6 @@ public void setUp() { @Test public void createMetadataDirUrl() { - if(true) return; String result = URLCreator.createMetadataDirUrl(context); String expected = "https://api.github.com/repos/labexp/osmtracker-android-layouts/contents/layouts/metadata?ref=master"; assertEquals(expected, result); @@ -33,7 +32,6 @@ public void createMetadataDirUrl() { @Test public void createMetadataFileURL() { - if(true) return; String result = URLCreator.createMetadataFileURL(context, "transporte_publico"); String expected = "https://raw.githubusercontent.com/labexp/osmtracker-android-layouts/master/layouts/metadata/transporte_publico.xml"; assertEquals(expected, result); @@ -41,7 +39,6 @@ public void createMetadataFileURL() { @Test public void createLayoutFileURL() { - if(true) return; String result = URLCreator.createLayoutFileURL(context, "hidrantes","es"); String expected = "https://raw.githubusercontent.com/labexp/osmtracker-android-layouts/master/layouts/hidrantes/es.xml"; assertEquals(expected, result); @@ -50,7 +47,6 @@ public void createLayoutFileURL() { @Test public void createIconsDirUrl() { - if(true) return; String result = URLCreator.createIconsDirUrl(context, "hidrantes"); String expected = "https://api.github.com/repos/labexp/osmtracker-android-layouts/contents/layouts/hidrantes/hidrantes_icons?ref=master"; assertEquals(expected, result); @@ -58,7 +54,6 @@ public void createIconsDirUrl() { @Test public void createTestURL() { - if(true) return; String result = URLCreator.createTestURL("labexp", "osmtracker-android-layouts", "master"); String expected = "https://api.github.com/repos/labexp/osmtracker-android-layouts/contents/layouts/metadata?ref=master"; assertEquals(expected, result); From e212f892a95303790d993a2849882b503b2072d5 Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 9 Aug 2026 22:13:07 +0200 Subject: [PATCH 23/25] Some more tests re-enabled. DB version also updated in test. --- .../net/osmtracker/db/DatabaseHelperTest.java | 29 ++----------------- .../osmtracker/db/DatabaseHelperTestBugs.java | 3 -- 2 files changed, 3 insertions(+), 29 deletions(-) diff --git a/app/src/test/java/net/osmtracker/db/DatabaseHelperTest.java b/app/src/test/java/net/osmtracker/db/DatabaseHelperTest.java index 688d645f..0030d34f 100644 --- a/app/src/test/java/net/osmtracker/db/DatabaseHelperTest.java +++ b/app/src/test/java/net/osmtracker/db/DatabaseHelperTest.java @@ -124,7 +124,6 @@ private String getColumnDefault(SQLiteDatabase database, String table, String co /** onCreate() must create the trackpoint table. */ @Test public void tableExists_trackpoint() { - if(true) return; Cursor c = db.rawQuery( "SELECT name FROM sqlite_master WHERE type='table' AND name=?", new String[]{TrackContentProvider.Schema.TBL_TRACKPOINT}); @@ -138,7 +137,6 @@ public void tableExists_trackpoint() { /** onCreate() must create the waypoint table. */ @Test public void tableExists_waypoint() { - if(true) return; Cursor c = db.rawQuery( "SELECT name FROM sqlite_master WHERE type='table' AND name=?", new String[]{TrackContentProvider.Schema.TBL_WAYPOINT}); @@ -152,7 +150,6 @@ public void tableExists_waypoint() { /** onCreate() must create the track table. */ @Test public void tableExists_track() { - if(true) return; Cursor c = db.rawQuery( "SELECT name FROM sqlite_master WHERE type='table' AND name=?", new String[]{TrackContentProvider.Schema.TBL_TRACK}); @@ -166,7 +163,6 @@ public void tableExists_track() { /** onCreate() must create the note table. */ @Test public void tableExists_note() { - if(true) return; Cursor c = db.rawQuery( "SELECT name FROM sqlite_master WHERE type='table' AND name=?", new String[]{TrackContentProvider.Schema.TBL_NOTE}); @@ -182,7 +178,6 @@ public void tableExists_note() { /** onCreate() must create the trackpoint_idx index. */ @Test public void indexExists_trackpointIdx() { - if(true) return; Cursor c = db.rawQuery( "PRAGMA index_list(" + TrackContentProvider.Schema.TBL_TRACKPOINT + ")", null); @@ -204,7 +199,6 @@ public void indexExists_trackpointIdx() { /** onCreate() must create the waypoint_idx index. */ @Test public void indexExists_waypointIdx() { - if(true) return; Cursor c = db.rawQuery( "PRAGMA index_list(" + TrackContentProvider.Schema.TBL_WAYPOINT + ")", null); @@ -228,7 +222,6 @@ public void indexExists_waypointIdx() { /** trackpoint table must have exactly 12 columns. */ @Test public void columnSchema_trackpoint_has12Columns() { - if(true) return; List cols = getColumnNames(db, TrackContentProvider.Schema.TBL_TRACKPOINT); assertEquals("trackpoint should have 12 columns", 12, cols.size()); } @@ -236,7 +229,6 @@ public void columnSchema_trackpoint_has12Columns() { /** trackpoint.segment_id must enforce NOT NULL in a fresh install. */ @Test public void columnSchema_trackpoint_segmentId_isNotNull() { - if(true) return; assertTrue("segment_id must be NOT NULL on fresh install", isColumnNotNull(db, TrackContentProvider.Schema.TBL_TRACKPOINT, TrackContentProvider.Schema.COL_SEG_ID)); @@ -245,7 +237,6 @@ public void columnSchema_trackpoint_segmentId_isNotNull() { /** trackpoint.segment_id must default to 0. */ @Test public void columnSchema_trackpoint_segmentId_defaultsToZero() { - if(true) return; assertEquals("segment_id must default to 0", "0", getColumnDefault(db, TrackContentProvider.Schema.TBL_TRACKPOINT, TrackContentProvider.Schema.COL_SEG_ID)); @@ -254,7 +245,6 @@ public void columnSchema_trackpoint_segmentId_defaultsToZero() { /** waypoint table must have exactly 14 columns. */ @Test public void columnSchema_waypoint_has14Columns() { - if(true) return; List cols = getColumnNames(db, TrackContentProvider.Schema.TBL_WAYPOINT); assertEquals("waypoint should have 14 columns", 14, cols.size()); } @@ -262,7 +252,6 @@ public void columnSchema_waypoint_has14Columns() { /** track table must have exactly 10 columns. */ @Test public void columnSchema_track_has10Columns() { - if(true) return; List cols = getColumnNames(db, TrackContentProvider.Schema.TBL_TRACK); assertEquals("track should have 10 columns", 10, cols.size()); } @@ -270,7 +259,6 @@ public void columnSchema_track_has10Columns() { /** track.active must default to 0. */ @Test public void columnSchema_track_active_defaultsToZero() { - if(true) return; assertEquals("active must default to 0", "0", getColumnDefault(db, TrackContentProvider.Schema.TBL_TRACK, TrackContentProvider.Schema.COL_ACTIVE)); @@ -279,7 +267,6 @@ public void columnSchema_track_active_defaultsToZero() { /** track.osm_visibility must default to 'Private'. */ @Test public void columnSchema_track_osmVisibility_defaultsToPrivate() { - if(true) return; String dflt = getColumnDefault(db, TrackContentProvider.Schema.TBL_TRACK, TrackContentProvider.Schema.COL_OSM_VISIBILITY); assertEquals("osm_visibility must default to 'Private'", @@ -289,7 +276,6 @@ public void columnSchema_track_osmVisibility_defaultsToPrivate() { /** note table must have exactly 8 columns. */ @Test public void columnSchema_note_has8Columns() { - if(true) return; List cols = getColumnNames(db, TrackContentProvider.Schema.TBL_NOTE); assertEquals("note should have 8 columns", 8, cols.size()); } @@ -299,7 +285,6 @@ public void columnSchema_note_has8Columns() { /** A minimal track row can be inserted and read back. */ @Test public void insertSmoke_track_roundTrip() { - if(true) return; ContentValues values = new ContentValues(); values.put(TrackContentProvider.Schema.COL_START_DATE, 123456789L); @@ -322,7 +307,6 @@ public void insertSmoke_track_roundTrip() { /** A minimal trackpoint row can be inserted and read back. */ @Test public void insertSmoke_trackpoint_roundTrip() { - if(true) return; // Insert a parent track first ContentValues trackValues = new ContentValues(); trackValues.put(TrackContentProvider.Schema.COL_START_DATE, System.currentTimeMillis()); @@ -354,7 +338,6 @@ public void insertSmoke_trackpoint_roundTrip() { /** A minimal waypoint row can be inserted and read back. */ @Test public void insertSmoke_waypoint_roundTrip() { - if(true) return; ContentValues trackValues = new ContentValues(); trackValues.put(TrackContentProvider.Schema.COL_START_DATE, System.currentTimeMillis()); long trackId = db.insert(TrackContentProvider.Schema.TBL_TRACK, null, trackValues); @@ -386,7 +369,6 @@ public void insertSmoke_waypoint_roundTrip() { /** A minimal note row can be inserted and read back. */ @Test public void insertSmoke_note_roundTrip() { - if(true) return; ContentValues trackValues = new ContentValues(); trackValues.put(TrackContentProvider.Schema.COL_START_DATE, System.currentTimeMillis()); long trackId = db.insert(TrackContentProvider.Schema.TBL_TRACK, null, trackValues); @@ -422,7 +404,6 @@ public void insertSmoke_note_roundTrip() { */ @Test public void onUpgrade_from18to19_addsSegmentIdColumn() { - if(true) return; SQLiteDatabase rawDb = SQLiteDatabase.create(null); try { // Simulate v18 trackpoint schema (no segment_id) @@ -456,7 +437,6 @@ public void onUpgrade_from18to19_addsSegmentIdColumn() { */ @Test public void onUpgrade_from12to19_addsExpectedTrackColumns() { - if(true) return; SQLiteDatabase rawDb = SQLiteDatabase.create(null); try { // v12 track schema @@ -529,7 +509,6 @@ public void onUpgrade_from12to19_addsExpectedTrackColumns() { */ @Test public void onUpgrade_preV12_callsOnCreateAndCreatesAllTables() { - if(true) return; SQLiteDatabase rawDb = SQLiteDatabase.create(null); try { dbHelper.onUpgrade(rawDb, 11, 19); @@ -570,7 +549,6 @@ public void onUpgrade_preV12_callsOnCreateAndCreatesAllTables() { @Ignore("Bug B10 — segment_id is nullable after upgrade from v18. See docs/BUGS_DatabaseHelper.md") @Test public void onUpgrade_from18to19_segmentId_shouldBeNotNull() { - if(true) return; SQLiteDatabase rawDb = SQLiteDatabase.create(null); try { rawDb.execSQL("create table trackpoint (" @@ -598,10 +576,9 @@ public void onUpgrade_from18to19_segmentId_shouldBeNotNull() { // ── Group VII: Version ──────────────────────────────────────────────────── - /** The database version must be 19. */ + /** The database version must be 20. */ @Test - public void dbVersion_is19() { - if(true) return; - assertEquals("DB_VERSION must be 19", 19, db.getVersion()); + public void dbVersion_is20() { + assertEquals("DB_VERSION must be 20", 20, db.getVersion()); } } diff --git a/app/src/test/java/net/osmtracker/db/DatabaseHelperTestBugs.java b/app/src/test/java/net/osmtracker/db/DatabaseHelperTestBugs.java index 53c35029..963769d6 100644 --- a/app/src/test/java/net/osmtracker/db/DatabaseHelperTestBugs.java +++ b/app/src/test/java/net/osmtracker/db/DatabaseHelperTestBugs.java @@ -94,7 +94,6 @@ private boolean isColumnNotNull(SQLiteDatabase database, String table, String co */ @Test public void bug_B10_segmentId_missingNotNull_afterUpgradeFrom18() { - if(true) return; SQLiteDatabase rawDb = SQLiteDatabase.create(null); try { // Simulate v18 trackpoint schema (no segment_id) @@ -130,7 +129,6 @@ public void bug_B10_segmentId_missingNotNull_afterUpgradeFrom18() { */ @Test public void bug_B10_segmentId_allowsNullInsert_afterUpgrade() { - if(true) return; SQLiteDatabase rawDb = SQLiteDatabase.create(null); try { rawDb.execSQL("create table trackpoint (" @@ -186,7 +184,6 @@ public void bug_B10_segmentId_allowsNullInsert_afterUpgrade() { */ @Test public void bug_B10_segmentId_freshInstall_defaultsToZeroWhenNullInserted() { - if(true) return; SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); From bc625b774bca7c1fe48aaf049e094d9fe3ad115e Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 9 Aug 2026 22:31:51 +0200 Subject: [PATCH 24/25] Re-enable some more tests --- .../java/net/osmtracker/db/DataHelperNoteTest.java | 1 - .../osmtracker/db/TrackContentProviderTestBugs.java | 10 ---------- 2 files changed, 11 deletions(-) diff --git a/app/src/test/java/net/osmtracker/db/DataHelperNoteTest.java b/app/src/test/java/net/osmtracker/db/DataHelperNoteTest.java index ab9d7898..cb62e5ff 100644 --- a/app/src/test/java/net/osmtracker/db/DataHelperNoteTest.java +++ b/app/src/test/java/net/osmtracker/db/DataHelperNoteTest.java @@ -29,7 +29,6 @@ public void setup() { @Test public void testDeleteNote_RemovesFromDatabase() { - if(true) return; String noteUUID = UUID.randomUUID().toString(); long trackId = 1L; diff --git a/app/src/test/java/net/osmtracker/db/TrackContentProviderTestBugs.java b/app/src/test/java/net/osmtracker/db/TrackContentProviderTestBugs.java index f7725996..804df56f 100644 --- a/app/src/test/java/net/osmtracker/db/TrackContentProviderTestBugs.java +++ b/app/src/test/java/net/osmtracker/db/TrackContentProviderTestBugs.java @@ -90,7 +90,6 @@ private Uri insertNote(long trackId, String uuid) { */ @Test public void bug_B11_delete_trackById_doesNotDeleteNotes() { - if(true) return; long trackId = insertTrack(); insertNote(trackId, "orphan-note-1"); insertNote(trackId, "orphan-note-2"); @@ -125,7 +124,6 @@ public void bug_B11_delete_trackById_doesNotDeleteNotes() { */ @Test public void bug_B12_getType_throwsForTrackId() { - if(true) return; long trackId = insertTrack(); Uri uri = ContentUris.withAppendedId(TrackContentProvider.CONTENT_URI_TRACK, trackId); assertThrows("Bug B12: getType should not throw for track/#", @@ -135,7 +133,6 @@ public void bug_B12_getType_throwsForTrackId() { @Test public void bug_B12_getType_throwsForTrackActive() { - if(true) return; assertThrows("Bug B12: getType should not throw for track/active", IllegalArgumentException.class, () -> resolver.getType(TrackContentProvider.CONTENT_URI_TRACK_ACTIVE)); @@ -143,7 +140,6 @@ public void bug_B12_getType_throwsForTrackActive() { @Test public void bug_B12_getType_throwsForWaypointId() { - if(true) return; Uri uri = TrackContentProvider.waypointUri(1); assertThrows("Bug B12: getType should not throw for waypoint/#", IllegalArgumentException.class, @@ -152,7 +148,6 @@ public void bug_B12_getType_throwsForWaypointId() { @Test public void bug_B12_getType_throwsForWaypointUuid() { - if(true) return; Uri uri = Uri.withAppendedPath( TrackContentProvider.CONTENT_URI_WAYPOINT_UUID, "test-uuid"); assertThrows("Bug B12: getType should not throw for waypoint/uuid/*", @@ -162,7 +157,6 @@ public void bug_B12_getType_throwsForWaypointUuid() { @Test public void bug_B12_getType_throwsForTrackpointId() { - if(true) return; Uri uri = TrackContentProvider.trackpointUri(1); assertThrows("Bug B12: getType should not throw for trackpoint/#", IllegalArgumentException.class, @@ -171,7 +165,6 @@ public void bug_B12_getType_throwsForTrackpointId() { @Test public void bug_B12_getType_throwsForNoteId() { - if(true) return; Uri uri = TrackContentProvider.noteUri(1); assertThrows("Bug B12: getType should not throw for note/#", IllegalArgumentException.class, @@ -180,7 +173,6 @@ public void bug_B12_getType_throwsForNoteId() { @Test public void bug_B12_getType_throwsForNoteUuid() { - if(true) return; Uri uri = Uri.withAppendedPath( TrackContentProvider.CONTENT_URI_NOTE_UUID, "test-uuid"); assertThrows("Bug B12: getType should not throw for note/uuid/*", @@ -190,7 +182,6 @@ public void bug_B12_getType_throwsForNoteUuid() { @Test public void bug_B12_getType_throwsForTrackStart() { - if(true) return; long trackId = insertTrack(); Uri uri = TrackContentProvider.trackStartUri(trackId); assertThrows("Bug B12: getType should not throw for track/#/start", @@ -200,7 +191,6 @@ public void bug_B12_getType_throwsForTrackStart() { @Test public void bug_B12_getType_throwsForTrackEnd() { - if(true) return; long trackId = insertTrack(); Uri uri = TrackContentProvider.trackEndUri(trackId); assertThrows("Bug B12: getType should not throw for track/#/end", From 144fabe52df85d9eccbb4cd5b3cb33e2fba3c5d0 Mon Sep 17 00:00:00 2001 From: Alain Knaff Date: Sun, 9 Aug 2026 22:38:58 +0200 Subject: [PATCH 25/25] Re-enable the remaining tests --- .../db/TrackContentProviderTest.java | 46 ------------------- 1 file changed, 46 deletions(-) diff --git a/app/src/test/java/net/osmtracker/db/TrackContentProviderTest.java b/app/src/test/java/net/osmtracker/db/TrackContentProviderTest.java index ec5fb240..d040e6c9 100644 --- a/app/src/test/java/net/osmtracker/db/TrackContentProviderTest.java +++ b/app/src/test/java/net/osmtracker/db/TrackContentProviderTest.java @@ -111,7 +111,6 @@ private Uri insertNote(long trackId, String uuid) { @Test public void insert_track_returnsUriWithId() { - if(true) return; ContentValues values = new ContentValues(); values.put(TrackContentProvider.Schema.COL_START_DATE, 123456789L); Uri uri = resolver.insert(TrackContentProvider.CONTENT_URI_TRACK, values); @@ -121,7 +120,6 @@ public void insert_track_returnsUriWithId() { @Test public void insert_track_requiresStartDate() { - if(true) return; ContentValues values = new ContentValues(); values.put(TrackContentProvider.Schema.COL_NAME, "No start date"); assertThrows(IllegalArgumentException.class, @@ -130,7 +128,6 @@ public void insert_track_requiresStartDate() { @Test public void insert_trackpoint_succeeds() { - if(true) return; long trackId = insertTrack(); Uri uri = insertTrackpoint(trackId, 0); assertNotNull("trackpoint insert should return a URI", uri); @@ -138,7 +135,6 @@ public void insert_trackpoint_succeeds() { @Test public void insert_waypoint_succeeds() { - if(true) return; long trackId = insertTrack(); Uri uri = insertWaypoint(trackId, "wp-uuid-1"); assertNotNull("waypoint insert should return a URI", uri); @@ -146,7 +142,6 @@ public void insert_waypoint_succeeds() { @Test public void insert_note_succeeds() { - if(true) return; long trackId = insertTrack(); Uri uri = insertNote(trackId, "note-uuid-1"); assertNotNull("note insert should return a URI", uri); @@ -154,7 +149,6 @@ public void insert_note_succeeds() { @Test public void insert_unknownUri_throws() { - if(true) return; Uri badUri = Uri.parse("content://" + TrackContentProvider.AUTHORITY + "/nonexistent"); ContentValues values = new ContentValues(); values.put("foo", "bar"); @@ -166,7 +160,6 @@ public void insert_unknownUri_throws() { @Test public void query_trackTrackpoints_returnsOnlyMatchingTrack() { - if(true) return; long track1 = insertTrack(); long track2 = insertTrack(); insertTrackpoint(track1, 0); @@ -185,7 +178,6 @@ public void query_trackTrackpoints_returnsOnlyMatchingTrack() { @Test public void query_trackWaypoints_returnsOnlyMatchingTrack() { - if(true) return; long track1 = insertTrack(); long track2 = insertTrack(); insertWaypoint(track1, "wp-1"); @@ -204,7 +196,6 @@ public void query_trackWaypoints_returnsOnlyMatchingTrack() { @Test public void query_trackNotes_returnsOnlyMatchingTrack() { - if(true) return; long track1 = insertTrack(); long track2 = insertTrack(); insertNote(track1, "n-1"); @@ -223,7 +214,6 @@ public void query_trackNotes_returnsOnlyMatchingTrack() { @Test public void query_trackStart_returnsFirstTrackpoint() { - if(true) return; long trackId = insertTrack(); // Insert multiple trackpoints insertTrackpoint(trackId, 0); @@ -242,7 +232,6 @@ public void query_trackStart_returnsFirstTrackpoint() { @Test public void query_trackEnd_returnsLastTrackpoint() { - if(true) return; long trackId = insertTrack(); insertTrackpoint(trackId, 0); insertTrackpoint(trackId, 1); @@ -259,7 +248,6 @@ public void query_trackEnd_returnsLastTrackpoint() { @Test public void query_trackById_returnsCorrectTrack() { - if(true) return; long trackId = insertTrack(); insertTrack(); // another track @@ -277,7 +265,6 @@ public void query_trackById_returnsCorrectTrack() { @Test public void query_trackActive_returnsOnlyActiveTracks() { - if(true) return; long trackId = insertTrack(); insertTrack(); // inactive track @@ -299,7 +286,6 @@ public void query_trackActive_returnsOnlyActiveTracks() { @Test public void query_trackList_includesTrackpointCount() { - if(true) return; long trackId = insertTrack(); insertTrackpoint(trackId, 0); insertTrackpoint(trackId, 0); @@ -320,7 +306,6 @@ public void query_trackList_includesTrackpointCount() { @Test public void query_trackList_includesWaypointCount() { - if(true) return; long trackId = insertTrack(); insertWaypoint(trackId, "wp-a"); insertWaypoint(trackId, "wp-b"); @@ -340,7 +325,6 @@ public void query_trackList_includesWaypointCount() { @Test public void query_trackList_includesNoteCount() { - if(true) return; long trackId = insertTrack(); insertNote(trackId, "n-a"); @@ -359,7 +343,6 @@ public void query_trackList_includesNoteCount() { @Test public void query_trackList_includesMaxSegmentId() { - if(true) return; long trackId = insertTrack(); insertTrackpoint(trackId, 0); insertTrackpoint(trackId, 2); @@ -382,7 +365,6 @@ public void query_trackList_includesMaxSegmentId() { @Test public void update_trackById_updatesName() { - if(true) return; long trackId = insertTrack(); Uri trackUri = ContentUris.withAppendedId(TrackContentProvider.CONTENT_URI_TRACK, trackId); @@ -404,7 +386,6 @@ public void update_trackById_updatesName() { @Test public void update_trackActive_updatesAllActive() { - if(true) return; long track1 = insertTrack(); long track2 = insertTrack(); @@ -435,7 +416,6 @@ public void update_trackActive_updatesAllActive() { @Test public void update_noteById_updatesNote() { - if(true) return; long trackId = insertTrack(); Uri noteUri = insertNote(trackId, "note-update"); long noteId = ContentUris.parseId(noteUri); @@ -461,7 +441,6 @@ public void update_noteById_updatesNote() { @Test public void delete_trackById_removesTrackWaypointsTrackpoints() { - if(true) return; long trackId = insertTrack(); insertTrackpoint(trackId, 0); insertTrackpoint(trackId, 1); @@ -504,7 +483,6 @@ public void delete_trackById_removesTrackWaypointsTrackpoints() { @Ignore("Bug B11 — delete(TRACK_ID) does not delete notes. See docs/BUGS_TrackContentProvider.md") @Test public void delete_trackById_alsoRemovesNotes() { - if(true) return; long trackId = insertTrack(); insertNote(trackId, "n-del-1"); insertNote(trackId, "n-del-2"); @@ -524,7 +502,6 @@ public void delete_trackById_alsoRemovesNotes() { @Test public void delete_waypointByUuid_removesWaypoint() { - if(true) return; long trackId = insertTrack(); insertWaypoint(trackId, "wp-to-delete"); insertWaypoint(trackId, "wp-to-keep"); @@ -547,7 +524,6 @@ public void delete_waypointByUuid_removesWaypoint() { @Test public void delete_noteByUuid_removesNote() { - if(true) return; long trackId = insertTrack(); insertNote(trackId, "note-to-delete"); insertNote(trackId, "note-to-keep"); @@ -569,7 +545,6 @@ public void delete_noteByUuid_removesNote() { @Test public void delete_unknownUri_throws() { - if(true) return; Uri badUri = Uri.parse("content://" + TrackContentProvider.AUTHORITY + "/nonexistent"); assertThrows(IllegalArgumentException.class, () -> resolver.delete(badUri, null, null)); @@ -579,7 +554,6 @@ public void delete_unknownUri_throws() { @Test public void getType_track_returnsDirType() { - if(true) return; String type = resolver.getType(TrackContentProvider.CONTENT_URI_TRACK); assertNotNull(type); assertTrue("should be a dir type", type.startsWith(ContentResolver.CURSOR_DIR_BASE_TYPE)); @@ -588,7 +562,6 @@ public void getType_track_returnsDirType() { @Test public void getType_trackTrackpoints_returnsDirType() { - if(true) return; long trackId = insertTrack(); String type = resolver.getType(TrackContentProvider.trackPointsUri(trackId)); assertNotNull(type); @@ -598,7 +571,6 @@ public void getType_trackTrackpoints_returnsDirType() { @Test public void getType_trackWaypoints_returnsDirType() { - if(true) return; long trackId = insertTrack(); String type = resolver.getType(TrackContentProvider.waypointsUri(trackId)); assertNotNull(type); @@ -608,7 +580,6 @@ public void getType_trackWaypoints_returnsDirType() { @Test public void getType_trackNotes_returnsDirType() { - if(true) return; long trackId = insertTrack(); String type = resolver.getType(TrackContentProvider.notesUri(trackId)); assertNotNull(type); @@ -622,7 +593,6 @@ public void getType_trackNotes_returnsDirType() { @Ignore("Bug B12 — getType() throws for TRACK_ID URI. See docs/BUGS_TrackContentProvider.md") @Test public void getType_trackId_returnsItemType() { - if(true) return; long trackId = insertTrack(); Uri trackUri = ContentUris.withAppendedId(TrackContentProvider.CONTENT_URI_TRACK, trackId); String type = resolver.getType(trackUri); @@ -633,7 +603,6 @@ public void getType_trackId_returnsItemType() { @Ignore("Bug B12 — getType() throws for TRACK_ACTIVE URI. See docs/BUGS_TrackContentProvider.md") @Test public void getType_trackActive_returnsDirType() { - if(true) return; String type = resolver.getType(TrackContentProvider.CONTENT_URI_TRACK_ACTIVE); assertNotNull(type); assertTrue("should be a dir type", type.startsWith(ContentResolver.CURSOR_DIR_BASE_TYPE)); @@ -642,7 +611,6 @@ public void getType_trackActive_returnsDirType() { @Ignore("Bug B12 — getType() throws for WAYPOINT_ID URI. See docs/BUGS_TrackContentProvider.md") @Test public void getType_waypointId_returnsItemType() { - if(true) return; String type = resolver.getType(TrackContentProvider.waypointUri(1)); assertNotNull(type); assertTrue("should be an item type", type.startsWith(ContentResolver.CURSOR_ITEM_BASE_TYPE)); @@ -651,7 +619,6 @@ public void getType_waypointId_returnsItemType() { @Ignore("Bug B12 — getType() throws for WAYPOINT_UUID URI. See docs/BUGS_TrackContentProvider.md") @Test public void getType_waypointUuid_returnsItemType() { - if(true) return; Uri uri = Uri.withAppendedPath(TrackContentProvider.CONTENT_URI_WAYPOINT_UUID, "test-uuid"); String type = resolver.getType(uri); assertNotNull(type); @@ -661,7 +628,6 @@ public void getType_waypointUuid_returnsItemType() { @Ignore("Bug B12 — getType() throws for TRACKPOINT_ID URI. See docs/BUGS_TrackContentProvider.md") @Test public void getType_trackpointId_returnsItemType() { - if(true) return; String type = resolver.getType(TrackContentProvider.trackpointUri(1)); assertNotNull(type); assertTrue("should be an item type", type.startsWith(ContentResolver.CURSOR_ITEM_BASE_TYPE)); @@ -670,7 +636,6 @@ public void getType_trackpointId_returnsItemType() { @Ignore("Bug B12 — getType() throws for NOTE_ID URI. See docs/BUGS_TrackContentProvider.md") @Test public void getType_noteId_returnsItemType() { - if(true) return; String type = resolver.getType(TrackContentProvider.noteUri(1)); assertNotNull(type); assertTrue("should be an item type", type.startsWith(ContentResolver.CURSOR_ITEM_BASE_TYPE)); @@ -679,7 +644,6 @@ public void getType_noteId_returnsItemType() { @Ignore("Bug B12 — getType() throws for NOTE_UUID URI. See docs/BUGS_TrackContentProvider.md") @Test public void getType_noteUuid_returnsItemType() { - if(true) return; Uri uri = Uri.withAppendedPath(TrackContentProvider.CONTENT_URI_NOTE_UUID, "test-uuid"); String type = resolver.getType(uri); assertNotNull(type); @@ -689,7 +653,6 @@ public void getType_noteUuid_returnsItemType() { @Ignore("Bug B12 — getType() throws for TRACK_START URI. See docs/BUGS_TrackContentProvider.md") @Test public void getType_trackStart_returnsItemType() { - if(true) return; long trackId = insertTrack(); String type = resolver.getType(TrackContentProvider.trackStartUri(trackId)); assertNotNull(type); @@ -699,7 +662,6 @@ public void getType_trackStart_returnsItemType() { @Ignore("Bug B12 — getType() throws for TRACK_END URI. See docs/BUGS_TrackContentProvider.md") @Test public void getType_trackEnd_returnsItemType() { - if(true) return; long trackId = insertTrack(); String type = resolver.getType(TrackContentProvider.trackEndUri(trackId)); assertNotNull(type); @@ -710,7 +672,6 @@ public void getType_trackEnd_returnsItemType() { @Test public void waypointsUri_hasCorrectFormat() { - if(true) return; Uri uri = TrackContentProvider.waypointsUri(42); assertEquals("content://" + TrackContentProvider.AUTHORITY + "/track/42/waypoints", uri.toString()); @@ -718,7 +679,6 @@ public void waypointsUri_hasCorrectFormat() { @Test public void trackPointsUri_hasCorrectFormat() { - if(true) return; Uri uri = TrackContentProvider.trackPointsUri(42); assertEquals("content://" + TrackContentProvider.AUTHORITY + "/track/42/trackpoints", uri.toString()); @@ -726,7 +686,6 @@ public void trackPointsUri_hasCorrectFormat() { @Test public void notesUri_hasCorrectFormat() { - if(true) return; Uri uri = TrackContentProvider.notesUri(42); assertEquals("content://" + TrackContentProvider.AUTHORITY + "/track/42/notes", uri.toString()); @@ -734,7 +693,6 @@ public void notesUri_hasCorrectFormat() { @Test public void trackStartUri_hasCorrectFormat() { - if(true) return; Uri uri = TrackContentProvider.trackStartUri(42); assertEquals("content://" + TrackContentProvider.AUTHORITY + "/track/42/start", uri.toString()); @@ -742,7 +700,6 @@ public void trackStartUri_hasCorrectFormat() { @Test public void trackEndUri_hasCorrectFormat() { - if(true) return; Uri uri = TrackContentProvider.trackEndUri(42); assertEquals("content://" + TrackContentProvider.AUTHORITY + "/track/42/end", uri.toString()); @@ -750,7 +707,6 @@ public void trackEndUri_hasCorrectFormat() { @Test public void waypointUri_hasCorrectFormat() { - if(true) return; Uri uri = TrackContentProvider.waypointUri(7); assertEquals("content://" + TrackContentProvider.AUTHORITY + "/waypoint/7", uri.toString()); @@ -758,7 +714,6 @@ public void waypointUri_hasCorrectFormat() { @Test public void noteUri_hasCorrectFormat() { - if(true) return; Uri uri = TrackContentProvider.noteUri(7); assertEquals("content://" + TrackContentProvider.AUTHORITY + "/note/7", uri.toString()); @@ -766,7 +721,6 @@ public void noteUri_hasCorrectFormat() { @Test public void trackpointUri_hasCorrectFormat() { - if(true) return; Uri uri = TrackContentProvider.trackpointUri(7); assertEquals("content://" + TrackContentProvider.AUTHORITY + "/trackpoint/7", uri.toString());