This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
Attempt: ./gradlew --no-daemon :core:jvmTest :platform-jvm:test :androidApp:assembleDebug :androidApp:assembleDebugAndroidTest :androidApp:lintDebug
|
||||
Fetching the official Gradle 8.14.5 wrapper; a pinned SHA-256 is required.
|
||||
% Total % Received % Xferd Average Speed Time Time Time Current
|
||||
Dload Upload Total Spent Left Speed
|
||||
␍ 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (6) Could not resolve host: raw.githubusercontent.com
|
||||
|
||||
Exit status: 6
|
||||
[3JTERM environment variable not set.
|
||||
@@ -0,0 +1,8 @@
|
||||
Full-project archive checks (2026-09-24)
|
||||
PASS ZIP CRC integrity and unique, safe paths under fileworkbench/.
|
||||
PASS SHA-256 manifest for every packaged file other than the manifest itself.
|
||||
PASS all files from the 0.2.2 source archive are retained.
|
||||
PASS no build/cache/IDE/SDK-local state, generated test JAR, signing key or APK.
|
||||
PASS project/source/pin checks run successfully from a fresh archive extraction.
|
||||
INFO external Gradle wrapper JAR remains a verified first-run bootstrap download.
|
||||
These package/source checks do not constitute an Android build or device test.
|
||||
@@ -0,0 +1,9 @@
|
||||
PASS baseline accepted
|
||||
PASS stale Gradle distribution rejected
|
||||
PASS wrong daemon JVM rejected
|
||||
PASS duplicate JVM alias rejected
|
||||
PASS catalog maps two aliases to JVM rejected
|
||||
PASS extra direct plugin request rejected
|
||||
PASS stale shell bootstrap rejected
|
||||
PASS stale Windows bootstrap rejected
|
||||
Build-guard regression: 8/8 cases passed. Not a Gradle build.
|
||||
@@ -0,0 +1,114 @@
|
||||
Prepared 112 production-core/JVM checks.
|
||||
PASS CoreTests.pdfMagicWinsOverName
|
||||
PASS CoreTests.imageMagicWinsOverName
|
||||
PASS CoreTests.caseInsensitiveExtensions
|
||||
PASS CoreTests.mimeFallbackHandlesMissingExtension
|
||||
PASS CoreTests.htmlAndSvgAreOnlyText
|
||||
PASS CoreTests.unknownBinaryIsNotAssumedText
|
||||
PASS CoreTests.legacyBinaryDetected
|
||||
PASS CoreTests.zipMagicDisallowsTextPretence
|
||||
PASS CoreTests.extensionlessOfficeInspected
|
||||
PASS CoreTests.utf8BomAndUnicode
|
||||
PASS CoreTests.utf16LittleEndian
|
||||
PASS CoreTests.utf16BigEndian
|
||||
PASS CoreTests.utf16RejectsOddBytes
|
||||
PASS CoreTests.utf16RejectsLoneSurrogate
|
||||
PASS CoreTests.invalidUtf8Rejected
|
||||
PASS CoreTests.nulBinaryRejected
|
||||
PASS CoreTests.xmlPreservesMixedContent
|
||||
PASS CoreTests.xmlDecodesSafeEntities
|
||||
PASS CoreTests.xmlCdataIsLiteral
|
||||
PASS CoreTests.xmlRejectsDtd
|
||||
PASS CoreTests.xmlRejectsCustomEntity
|
||||
PASS CoreTests.xmlRejectsMismatchedTags
|
||||
PASS CoreTests.xmlRejectsMultipleRoots
|
||||
PASS CoreTests.xmlRejectsDeepNesting
|
||||
PASS CoreTests.xmlRejectsTooManyNodes
|
||||
PASS CoreTests.xmlRejectsTooManyAttributes
|
||||
PASS CoreTests.xmlRejectsDuplicateAttribute
|
||||
PASS CoreTests.xmlRejectsUnquotedAttribute
|
||||
PASS CoreTests.xmlRejectsInvalidCharacterReference
|
||||
PASS CoreTests.packagePathsStayInsideRoot
|
||||
PASS CoreTests.packageRootEscapeRejected
|
||||
PASS CoreTests.externalRelationshipsRejected
|
||||
PASS CoreTests.csvQuotedDelimitersAndNewlines
|
||||
PASS CoreTests.csvEscapedQuotes
|
||||
PASS CoreTests.csvEmptyTrailingCells
|
||||
PASS CoreTests.csvWindowsNewlines
|
||||
PASS CoreTests.csvSemicolonDetection
|
||||
PASS CoreTests.csvFormulaRemainsLiteral
|
||||
PASS CoreTests.csvBadQuotesFailClearly
|
||||
PASS CoreTests.csvRowLimit
|
||||
PASS CoreTests.csvColumnLimit
|
||||
PASS CoreTests.basicMarkdownHasHeadingsAndCode
|
||||
PASS CoreTests.textByteLimit
|
||||
PASS CoreTests.columnLabelsBeyondZ
|
||||
PASS CoreTests.docxReadingTextAndTables
|
||||
PASS CoreTests.xlsxSparseCellsAndSharedStrings
|
||||
PASS CoreTests.xlsxTooWideRejected
|
||||
PASS CoreTests.pptxFollowsRelationshipOrderNotFilenames
|
||||
PASS CoreTests.odtMixedTextSpacesAndHeadings
|
||||
PASS CoreTests.odsRepeatedPaddingDoesNotExplode
|
||||
PASS CoreTests.odsRepeatedNonemptyRowsRejected
|
||||
PASS CoreTests.odpSlideNamesPreserved
|
||||
PASS CoreTests.malformedOfficePartRejected
|
||||
PASS CoreTests.zipIndexDoesNotReadEntries
|
||||
PASS CoreTests.literalSearchAndHitCap
|
||||
PASS CoreTests.tableSearchUsesActualRows
|
||||
PASS CoreTests.textExportContainsSectionNamesAndValues
|
||||
PASS CoreTests.repeatedContentAmplificationBounded
|
||||
PASS CoreTests.veryLongSingleBlockRejected
|
||||
PASS CoreTests.macroExtensionsNotReclassifiedAsZip
|
||||
PASS CoreTests.renamedMacroPackageRejected
|
||||
PASS CoreTests.publicCoreFacadeReadsText
|
||||
PASS CoreTests.publicCoreFacadeRejectsBinary
|
||||
PASS BrowserTests.directoriesRemainFirstWhenDescending
|
||||
PASS BrowserTests.filtersNamesCaseInsensitively
|
||||
PASS BrowserTests.searchIsLiteralNotRegex
|
||||
PASS BrowserTests.hidesDotFilesUnlessEnabled
|
||||
PASS BrowserTests.unknownSizesRemainLastInBothDirections
|
||||
PASS BrowserTests.modifiedSortingUsesTimestamps
|
||||
PASS BrowserTests.typeSortingIsDeterministic
|
||||
PASS BrowserTests.duplicateProviderRowsDoNotDuplicateComposeKeys
|
||||
PASS BrowserTests.listingProcessingHasAnUpperBound
|
||||
PASS BrowserTests.labelsStripSpoofingButLeaveIdsUntouched
|
||||
PASS BrowserTests.labelsAreBoundedAndNonempty
|
||||
PASS BrowserTests.mimeMatchingHandlesWildcardsAndParameters
|
||||
PASS BrowserTests.malformedMimeRequestsFailClosed
|
||||
PASS BrowserTests.wildcardIsNotAnActualFileMimeType
|
||||
PASS BrowserTests.extraMimeTypesNarrowTheBaseType
|
||||
PASS BrowserTests.excessiveMimeTypesAreRejected
|
||||
PASS BrowserTests.foldersStayNavigableInFilteredPicker
|
||||
PASS BrowserTests.directoriesAndVirtualDocumentsCannotBeReturned
|
||||
PASS BrowserTests.singleSelectionReplacesPreviousSelection
|
||||
PASS BrowserTests.togglingSelectedFileRemovesIt
|
||||
PASS BrowserTests.multipleSelectionIsBounded
|
||||
PASS BrowserTests.unsupportedSelectionIsRejected
|
||||
PASS BrowserTests.emptySelectionIsRejected
|
||||
PASS BrowserTests.duplicateSelectionIsRejected
|
||||
PASS BrowserTests.singleRequestCannotReturnTwoFiles
|
||||
PASS BrowserTests.individualSizeBudgetIsChecked
|
||||
PASS BrowserTests.aggregateSizeBudgetIsChecked
|
||||
PASS BrowserTests.negativeSizeIsNotTrusted
|
||||
PASS BrowserTests.unknownSizesAreAllowedPendingStreamingLimit
|
||||
PASS BrowserTests.comparatorRemainsAntisymmetric
|
||||
PASS BrowserTests.actualStreamBytesAreLimitedEvenWithUnknownMetadata
|
||||
PASS BrowserTests.totalByteBudgetSpansFiles
|
||||
PASS BrowserTests.newFileResetsOnlyTheFileCounter
|
||||
PASS BrowserTests.zeroByteFilesAreAllowed
|
||||
PASS BrowserTests.negativeCopyCountsAreRejected
|
||||
PASS BrowserTests.byteCountersRejectHugeChunksWithoutOverflow
|
||||
PASS BrowserTests.invalidCopyBudgetsAreRejected
|
||||
PASS ZipTests.archiveRoundtrip
|
||||
PASS ZipTests.traversalRejected
|
||||
PASS ZipTests.absolutePathsRejected
|
||||
PASS ZipTests.backslashPathsRejected
|
||||
PASS ZipTests.tooManyEntriesRejected
|
||||
PASS ZipTests.oversizedEntryRejectedOnlyWhenRead
|
||||
PASS ZipTests.compressionBombRejected
|
||||
PASS ZipTests.cumulativeExpansionBudgetEnforced
|
||||
PASS ZipTests.repeatedReadsConsumeBudget
|
||||
PASS ZipTests.extensionlessOfficeLoadedThroughFullAdapter
|
||||
PASS ZipTests.textByteBudgetEnforcedBeforeRead
|
||||
PASS ZipTests.htmlRemainsInertSource
|
||||
RESULT: 112/112 checks passed
|
||||
@@ -0,0 +1,15 @@
|
||||
2026-09-24T09:31:01Z
|
||||
openjdk version "21.0.11" 2026-04-21
|
||||
OpenJDK Runtime Environment (build 21.0.11+10-1-deb13u2-Debian)
|
||||
OpenJDK 64-Bit Server VM (build 21.0.11+10-1-deb13u2-Debian, mixed mode, sharing)
|
||||
info: kotlinc-jvm 1.9.0 (JRE 21.0.11+10-1-deb13u2-Debian)
|
||||
|
||||
Android SDK variables
|
||||
ANDROID_HOME=not set
|
||||
ANDROID_SDK_ROOT=not set
|
||||
|
||||
Installed JVMs
|
||||
default-java
|
||||
java-1.21.0-openjdk-amd64
|
||||
java-21-openjdk-amd64
|
||||
openjdk-21
|
||||
@@ -0,0 +1,25 @@
|
||||
Source under test: /mnt/data/fw-0.2.3/fileworkbench/androidApp/src/main/kotlin/dev/fileworkbench/android/browser/SafBrowserStore.kt
|
||||
Extracted production cursor-reading block + real common models; Android APIs are test doubles.
|
||||
out/folder-listing/FolderListingHarness.kt:71:23: warning: variable 'loading' initializer is redundant
|
||||
var loading = false
|
||||
^
|
||||
out/folder-listing/FolderListingHarness.kt:72:36: warning: variable 'information' initializer is redundant
|
||||
var information: String? = null
|
||||
^
|
||||
PASS normal rows without extras are not rejected
|
||||
PASS empty cursor without extras is a valid empty directory
|
||||
PASS information-only cursor keeps rows and message
|
||||
PASS loading cursor without error keeps partial rows
|
||||
PASS loading cursor may initially contain no rows
|
||||
PASS provider error takes precedence over info without discarding available rows
|
||||
PASS actual null query result still raises the no-listing error
|
||||
PASS cursor closes when row iteration throws
|
||||
PASS cursor closes on cancellation during iteration
|
||||
PASS entry limit still marks an oversized directory truncated
|
||||
PASS exactly the entry limit is not marked truncated
|
||||
PASS duplicate provider IDs remain deduplicated
|
||||
PASS missing and oversized document IDs are skipped
|
||||
PASS provider messages still use the shared label sanitizer
|
||||
PASS diagnostic reflects a retained read grant without treating it as successful access
|
||||
PASS unavailable permission diagnostic cannot replace the original null-cursor error
|
||||
Folder-listing host regression: 16 passed, 0 failed. NOT an Android/device test.
|
||||
@@ -0,0 +1 @@
|
||||
Kotlin PSI syntax: 44 files, 0 parse errors. Android/Compose type resolution is NOT tested.
|
||||
@@ -0,0 +1 @@
|
||||
Shell syntax checks passed. PowerShell execution not available here.
|
||||
@@ -0,0 +1,23 @@
|
||||
PASS Gradle distribution is exactly 8.14.5
|
||||
PASS official 8.14.5 distribution SHA-256 is pinned
|
||||
PASS scripts/bootstrap-wrapper.sh uses matching 8.14.5 downloads and hashes
|
||||
PASS scripts/bootstrap-wrapper.ps1 uses matching 8.14.5 downloads and hashes
|
||||
PASS Gradle daemon requires JDK 17
|
||||
PASS Java-version hint is 17
|
||||
PASS settings reject conflicting Gradle/JVM overrides
|
||||
PASS androidApp uses toolchain 17
|
||||
PASS core uses toolchain 17
|
||||
PASS platform-jvm uses toolchain 17
|
||||
PASS Android Java bytecode targets 17
|
||||
PASS application version is 0.2.3/code 5
|
||||
PASS five root plugin aliases resolve to five distinct expected IDs
|
||||
PASS root has no extra direct plugin requests
|
||||
PASS Kotlin/AGP versions are unchanged
|
||||
PASS existing CI uses Java 17
|
||||
PASS source contains the diagnostic error and visible release marker
|
||||
PASS tracked Gradle properties contain no machine-specific JDK home
|
||||
INFO wrapper JAR is not bundled; the first wrapper launch bootstraps the verified binary.
|
||||
Build-configuration checks: 18 passed. Source checks only, not an Android build.
|
||||
PASS project invariants: XML, permission-free manifest, isolated PDF service, narrow FileProvider, portable core, no WebView/log calls.
|
||||
PASS browser source invariants: APP_FILES/GET_CONTENT, standard picker activity, no system-picker impersonation, narrow copied paths, read-only results, sanitized activity defaults, debug fixture excluded from main manifest.
|
||||
PASS PDF source regression guard: no PdfDocument().use call (pattern check only).
|
||||
Reference in New Issue
Block a user