@datarecce/ui 0.1.41 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -133
- package/dist/AuthModal-C8LetZNB.js +23 -0
- package/dist/AuthModal-C8LetZNB.js.map +1 -0
- package/dist/LineageCanvas-CR38SDYr.d.ts +41 -0
- package/dist/LineageCanvas-CR38SDYr.d.ts.map +1 -0
- package/dist/ResultErrorFallback-C7c-TN1p.js +3 -0
- package/dist/ResultErrorFallback-C7c-TN1p.js.map +1 -0
- package/dist/RouteConfigContext-z8YNimdP.d.ts +172 -0
- package/dist/RouteConfigContext-z8YNimdP.d.ts.map +1 -0
- package/dist/RunProgress-DyFIALbI.d.ts +429 -0
- package/dist/RunProgress-DyFIALbI.d.ts.map +1 -0
- package/dist/ScreenshotDataGrid-BfxYUThx.d.ts +64 -0
- package/dist/ScreenshotDataGrid-BfxYUThx.d.ts.map +1 -0
- package/dist/SplitPane-B-BLxZaQ.d.ts +1427 -0
- package/dist/SplitPane-B-BLxZaQ.d.ts.map +1 -0
- package/dist/advanced.d.ts +18 -0
- package/dist/advanced.d.ts.map +1 -0
- package/dist/advanced.js +3 -0
- package/dist/advanced.js.map +1 -0
- package/dist/api-ZZ4cc9b9.d.ts +255 -0
- package/dist/api-ZZ4cc9b9.d.ts.map +1 -0
- package/dist/api-_i6BZPkM.js +3 -0
- package/dist/api-_i6BZPkM.js.map +1 -0
- package/dist/api.d.ts +3 -2
- package/dist/api.js +2 -100
- package/dist/colors--47Kkns4.js +3 -0
- package/dist/colors--47Kkns4.js.map +1 -0
- package/dist/colors-vY9Yzui0.d.ts +255 -0
- package/dist/colors-vY9Yzui0.d.ts.map +1 -0
- package/dist/components-run.d.ts +8 -0
- package/dist/components-run.js +2 -0
- package/dist/components.d.ts +22 -2
- package/dist/components.js +2 -86
- package/dist/const-DbXBkrxT.js +3 -0
- package/dist/const-DbXBkrxT.js.map +1 -0
- package/dist/constants-DD5vJv2q.js +3 -0
- package/dist/constants-DD5vJv2q.js.map +1 -0
- package/dist/constants.d.ts +3 -0
- package/dist/constants.js +2 -0
- package/dist/contexts.d.ts +7 -0
- package/dist/contexts.js +2 -0
- package/dist/flag-CiR2E5oz.d.ts +898 -0
- package/dist/flag-CiR2E5oz.d.ts.map +1 -0
- package/dist/flag-koeDAqr3.js +3 -0
- package/dist/flag-koeDAqr3.js.map +1 -0
- package/dist/hooks.d.ts +15 -2
- package/dist/hooks.js +2 -43
- package/dist/index-BFkbe0aF.d.ts +698 -0
- package/dist/index-BFkbe0aF.d.ts.map +1 -0
- package/dist/index-Ba3hp2Ng.d.ts +471 -0
- package/dist/index-Ba3hp2Ng.d.ts.map +1 -0
- package/dist/index-C_kD4ZQ3.d.ts +1079 -0
- package/dist/index-C_kD4ZQ3.d.ts.map +1 -0
- package/dist/index-CiPcALu4.d.ts +146 -0
- package/dist/index-CiPcALu4.d.ts.map +1 -0
- package/dist/index-CkXLPYZY.d.ts +13 -0
- package/dist/index-CkXLPYZY.d.ts.map +1 -0
- package/dist/index-DTCpHvX_.d.ts +211 -0
- package/dist/index-DTCpHvX_.d.ts.map +1 -0
- package/dist/index-DVoQsx5c.d.ts +349 -0
- package/dist/index-DVoQsx5c.d.ts.map +1 -0
- package/dist/index-DmwYRgDR.d.ts +192 -0
- package/dist/index-DmwYRgDR.d.ts.map +1 -0
- package/dist/index-N8N7XmRj.d.ts +130 -0
- package/dist/index-N8N7XmRj.d.ts.map +1 -0
- package/dist/index-h_fw6R9U.d.ts +1501 -0
- package/dist/index-h_fw6R9U.d.ts.map +1 -0
- package/dist/index-o48TPoFN.d.ts +734 -0
- package/dist/index-o48TPoFN.d.ts.map +1 -0
- package/dist/index.d.ts +24 -2
- package/dist/index.js +2 -198
- package/dist/keepAlive-CEzyrDfg.js +3 -0
- package/dist/keepAlive-CEzyrDfg.js.map +1 -0
- package/dist/lib/api/axiosClient.d.ts +8 -0
- package/dist/lib/api/axiosClient.d.ts.map +1 -0
- package/dist/lib/api/axiosClient.js +3 -0
- package/dist/lib/api/axiosClient.js.map +1 -0
- package/dist/lib/api/track.d.ts +137 -0
- package/dist/lib/api/track.d.ts.map +1 -0
- package/dist/lib/api/track.js +2 -0
- package/dist/lib/api/user.d.ts +16 -0
- package/dist/lib/api/user.d.ts.map +1 -0
- package/dist/lib/api/user.js +2 -0
- package/dist/lib/const.d.ts +8 -0
- package/dist/lib/const.d.ts.map +1 -0
- package/dist/lib/const.js +2 -0
- package/dist/lib/result/ResultErrorFallback.d.ts +8 -0
- package/dist/lib/result/ResultErrorFallback.d.ts.map +1 -0
- package/dist/lib/result/ResultErrorFallback.js +2 -0
- package/dist/primitives-CgGUvwHB.d.ts +914 -0
- package/dist/primitives-CgGUvwHB.d.ts.map +1 -0
- package/dist/primitives.d.ts +12 -0
- package/dist/primitives.js +2 -0
- package/dist/result.d.ts +4 -0
- package/dist/result.js +2 -0
- package/dist/src-BgHSbbHk.js +67 -0
- package/dist/src-BgHSbbHk.js.map +1 -0
- package/dist/styles.css +478 -4
- package/dist/theme-CeWzymUn.js +64 -0
- package/dist/theme-CeWzymUn.js.map +1 -0
- package/dist/theme.d.ts +3 -2
- package/dist/theme.js +2 -9
- package/dist/track-9ZQpBlUK.js +3 -0
- package/dist/track-9ZQpBlUK.js.map +1 -0
- package/dist/types-CFbNxrx2.d.ts +171 -0
- package/dist/types-CFbNxrx2.d.ts.map +1 -0
- package/dist/types-CZre3j02.d.ts +231 -0
- package/dist/types-CZre3j02.d.ts.map +1 -0
- package/dist/types.d.ts +14 -2
- package/dist/types.js +3 -9
- package/dist/types.js.map +1 -0
- package/dist/useRecceServerFlag-Bg5R67J4.js +3 -0
- package/dist/useRecceServerFlag-Bg5R67J4.js.map +1 -0
- package/dist/useThemeColors--prVbMmM.js +3 -0
- package/dist/useThemeColors--prVbMmM.js.map +1 -0
- package/dist/useThemeColors-DHEroo8f.d.ts +104 -0
- package/dist/useThemeColors-DHEroo8f.d.ts.map +1 -0
- package/dist/user-DMT7E0fc.js +3 -0
- package/dist/user-DMT7E0fc.js.map +1 -0
- package/dist/utils-CW2skXm_.js +3 -0
- package/dist/utils-CW2skXm_.js.map +1 -0
- package/dist/utils-CXWhfyxC.js +5 -0
- package/dist/utils-CXWhfyxC.js.map +1 -0
- package/dist/utils.d.ts +7 -0
- package/dist/utils.js +2 -0
- package/package.json +115 -107
- package/LICENSE +0 -201
- package/dist/RecceCheckContext-BJprb2xR.js +0 -7968
- package/dist/RecceCheckContext-BJprb2xR.js.map +0 -1
- package/dist/RecceCheckContext-DPnWB_aU.css +0 -215
- package/dist/RecceCheckContext-DPnWB_aU.css.map +0 -1
- package/dist/RecceCheckContext-DbZ7BdRy.mjs +0 -7426
- package/dist/RecceCheckContext-DbZ7BdRy.mjs.map +0 -1
- package/dist/RecceCheckContext-DyxOeUsX.css +0 -215
- package/dist/RecceCheckContext-DyxOeUsX.css.map +0 -1
- package/dist/api.d.mts +0 -3
- package/dist/api.js.map +0 -1
- package/dist/api.mjs +0 -46
- package/dist/api.mjs.map +0 -1
- package/dist/components-BeAjVBV3.css +0 -70
- package/dist/components-BeAjVBV3.css.map +0 -1
- package/dist/components-DfXnN1Hx.js +0 -14689
- package/dist/components-DfXnN1Hx.js.map +0 -1
- package/dist/components-iUxcqtUB.css +0 -70
- package/dist/components-iUxcqtUB.css.map +0 -1
- package/dist/components-jh6r4tQn.mjs +0 -12348
- package/dist/components-jh6r4tQn.mjs.map +0 -1
- package/dist/components.d.mts +0 -3
- package/dist/components.mjs +0 -9
- package/dist/const-CaIm1Z8g.mjs +0 -12
- package/dist/const-CaIm1Z8g.mjs.map +0 -1
- package/dist/const-CvdZO0FN.js +0 -24
- package/dist/const-CvdZO0FN.js.map +0 -1
- package/dist/hooks-cQsBXBd1.js +0 -40
- package/dist/hooks-cQsBXBd1.js.map +0 -1
- package/dist/hooks-eaHm_yEp.mjs +0 -33
- package/dist/hooks-eaHm_yEp.mjs.map +0 -1
- package/dist/hooks.d.mts +0 -3
- package/dist/hooks.mjs +0 -8
- package/dist/html2canvas-pro.esm-CsuSOHXp.js +0 -7250
- package/dist/html2canvas-pro.esm-CsuSOHXp.js.map +0 -1
- package/dist/html2canvas-pro.esm-E7kpobrC.mjs +0 -7249
- package/dist/html2canvas-pro.esm-E7kpobrC.mjs.map +0 -1
- package/dist/index-B5bpmv0i.d.mts +0 -2172
- package/dist/index-B5bpmv0i.d.mts.map +0 -1
- package/dist/index-B9lSPJTi.d.ts +0 -2170
- package/dist/index-B9lSPJTi.d.ts.map +0 -1
- package/dist/index.d.mts +0 -3
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -20
- package/dist/index.mjs.map +0 -1
- package/dist/mui-theme-CUhybmBq.mjs +0 -696
- package/dist/mui-theme-CUhybmBq.mjs.map +0 -1
- package/dist/mui-theme-iBHkjXJq.js +0 -732
- package/dist/mui-theme-iBHkjXJq.js.map +0 -1
- package/dist/state-CTITyT0R.js +0 -795
- package/dist/state-CTITyT0R.js.map +0 -1
- package/dist/state-Sc2b4jri.mjs +0 -382
- package/dist/state-Sc2b4jri.mjs.map +0 -1
- package/dist/theme.d.mts +0 -3
- package/dist/theme.mjs +0 -4
- package/dist/tooltipMessage-BC5W7H3X.js +0 -13
- package/dist/tooltipMessage-BC5W7H3X.js.map +0 -1
- package/dist/tooltipMessage-B_xMIKWL.mjs +0 -7
- package/dist/tooltipMessage-B_xMIKWL.mjs.map +0 -1
- package/dist/types.d.mts +0 -3
- package/dist/types.mjs +0 -6
- package/dist/urls-BQW5wjg-.js +0 -13
- package/dist/urls-BQW5wjg-.js.map +0 -1
- package/dist/urls-DT7FVEcS.mjs +0 -7
- package/dist/urls-DT7FVEcS.mjs.map +0 -1
- package/dist/version-B9s8yne-.js +0 -300
- package/dist/version-B9s8yne-.js.map +0 -1
- package/dist/version-DP1kU_7v.mjs +0 -162
- package/dist/version-DP1kU_7v.mjs.map +0 -1
- package/recce-source/.editorconfig +0 -26
- package/recce-source/.flake8 +0 -37
- package/recce-source/.github/ISSUE_TEMPLATE/bug_report.yml +0 -67
- package/recce-source/.github/ISSUE_TEMPLATE/custom.md +0 -10
- package/recce-source/.github/ISSUE_TEMPLATE/feature_request.yml +0 -42
- package/recce-source/.github/PULL_REQUEST_TEMPLATE.md +0 -21
- package/recce-source/.github/copilot-instructions.md +0 -331
- package/recce-source/.github/instructions/backend-instructions.md +0 -541
- package/recce-source/.github/instructions/frontend-instructions.md +0 -317
- package/recce-source/.github/workflows/build-statics.yaml +0 -72
- package/recce-source/.github/workflows/bump.yaml +0 -48
- package/recce-source/.github/workflows/integration-tests-cloud.yaml +0 -92
- package/recce-source/.github/workflows/integration-tests-sqlmesh.yaml +0 -33
- package/recce-source/.github/workflows/integration-tests.yaml +0 -52
- package/recce-source/.github/workflows/nightly.yaml +0 -246
- package/recce-source/.github/workflows/release.yaml +0 -196
- package/recce-source/.github/workflows/tests-js.yaml +0 -58
- package/recce-source/.github/workflows/tests-python.yaml +0 -128
- package/recce-source/.pre-commit-config.yaml +0 -26
- package/recce-source/CLAUDE.md +0 -483
- package/recce-source/CODE_OF_CONDUCT.md +0 -128
- package/recce-source/CONTRIBUTING.md +0 -107
- package/recce-source/LICENSE +0 -201
- package/recce-source/Makefile +0 -126
- package/recce-source/README.md +0 -182
- package/recce-source/RECCE_CLOUD.md +0 -81
- package/recce-source/SECURITY.md +0 -25
- package/recce-source/docs/PACKAGING.md +0 -340
- package/recce-source/docs/README.md +0 -1
- package/recce-source/docs/plans/2024-12-31-csv-download-design.md +0 -121
- package/recce-source/docs/plans/2024-12-31-csv-download-implementation.md +0 -930
- package/recce-source/integration_tests/dbt/dbt_project.yml +0 -26
- package/recce-source/integration_tests/dbt/models/customers.sql +0 -69
- package/recce-source/integration_tests/dbt/models/docs.md +0 -14
- package/recce-source/integration_tests/dbt/models/orders.sql +0 -56
- package/recce-source/integration_tests/dbt/models/schema.yml +0 -82
- package/recce-source/integration_tests/dbt/models/staging/schema.yml +0 -31
- package/recce-source/integration_tests/dbt/models/staging/stg_customers.sql +0 -22
- package/recce-source/integration_tests/dbt/models/staging/stg_orders.sql +0 -23
- package/recce-source/integration_tests/dbt/models/staging/stg_payments.sql +0 -25
- package/recce-source/integration_tests/dbt/packages.yml +0 -7
- package/recce-source/integration_tests/dbt/profiles.yml +0 -8
- package/recce-source/integration_tests/dbt/seeds/raw_customers.csv +0 -101
- package/recce-source/integration_tests/dbt/seeds/raw_orders.csv +0 -100
- package/recce-source/integration_tests/dbt/seeds/raw_payments.csv +0 -114
- package/recce-source/integration_tests/dbt/seeds/raw_statuses.csv +0 -5
- package/recce-source/integration_tests/dbt/smoke_test.sh +0 -72
- package/recce-source/integration_tests/dbt/smoke_test_cloud.sh +0 -71
- package/recce-source/integration_tests/sqlmesh/__init__.py +0 -0
- package/recce-source/integration_tests/sqlmesh/audits/assert_item_price_above_zero.sql +0 -9
- package/recce-source/integration_tests/sqlmesh/audits/items.sql +0 -7
- package/recce-source/integration_tests/sqlmesh/audits/order_items.sql +0 -7
- package/recce-source/integration_tests/sqlmesh/config.py +0 -171
- package/recce-source/integration_tests/sqlmesh/helper.py +0 -20
- package/recce-source/integration_tests/sqlmesh/hooks/__init__.py +0 -0
- package/recce-source/integration_tests/sqlmesh/macros/__init__.py +0 -0
- package/recce-source/integration_tests/sqlmesh/macros/macros.py +0 -8
- package/recce-source/integration_tests/sqlmesh/macros/macros.sql +0 -8
- package/recce-source/integration_tests/sqlmesh/macros/utils.py +0 -11
- package/recce-source/integration_tests/sqlmesh/metrics/metrics.sql +0 -25
- package/recce-source/integration_tests/sqlmesh/models/customer_revenue_by_day.sql +0 -41
- package/recce-source/integration_tests/sqlmesh/models/customer_revenue_lifetime.sql +0 -60
- package/recce-source/integration_tests/sqlmesh/models/customers.sql +0 -32
- package/recce-source/integration_tests/sqlmesh/models/items.py +0 -95
- package/recce-source/integration_tests/sqlmesh/models/marketing.sql +0 -15
- package/recce-source/integration_tests/sqlmesh/models/order_items.py +0 -95
- package/recce-source/integration_tests/sqlmesh/models/orders.py +0 -70
- package/recce-source/integration_tests/sqlmesh/models/raw_marketing.py +0 -62
- package/recce-source/integration_tests/sqlmesh/models/top_waiters.sql +0 -23
- package/recce-source/integration_tests/sqlmesh/models/waiter_as_customer_by_day.sql +0 -29
- package/recce-source/integration_tests/sqlmesh/models/waiter_names.sql +0 -10
- package/recce-source/integration_tests/sqlmesh/models/waiter_revenue_by_day.sql +0 -29
- package/recce-source/integration_tests/sqlmesh/models/waiters.py +0 -62
- package/recce-source/integration_tests/sqlmesh/prep_env.sh +0 -16
- package/recce-source/integration_tests/sqlmesh/schema.yaml +0 -5
- package/recce-source/integration_tests/sqlmesh/seeds/waiter_names.csv +0 -11
- package/recce-source/integration_tests/sqlmesh/test_server.sh +0 -29
- package/recce-source/integration_tests/sqlmesh/tests/test_customer_revenue_by_day.yaml +0 -63
- package/recce-source/integration_tests/sqlmesh/tests/test_order_items.yaml +0 -72
- package/recce-source/js/.editorconfig +0 -27
- package/recce-source/js/.env.development +0 -5
- package/recce-source/js/.husky/pre-commit +0 -29
- package/recce-source/js/.nvmrc +0 -1
- package/recce-source/js/README.md +0 -39
- package/recce-source/js/app/(mainComponents)/DisplayModeToggle.tsx +0 -65
- package/recce-source/js/app/(mainComponents)/NavBar.tsx +0 -228
- package/recce-source/js/app/(mainComponents)/RecceVersionBadge.tsx +0 -107
- package/recce-source/js/app/(mainComponents)/TopBar.tsx +0 -252
- package/recce-source/js/app/@lineage/default.tsx +0 -20
- package/recce-source/js/app/@lineage/page.tsx +0 -14
- package/recce-source/js/app/MainLayout.tsx +0 -170
- package/recce-source/js/app/Providers.tsx +0 -49
- package/recce-source/js/app/checks/page.tsx +0 -296
- package/recce-source/js/app/error.tsx +0 -93
- package/recce-source/js/app/favicon.ico +0 -0
- package/recce-source/js/app/global-error.tsx +0 -115
- package/recce-source/js/app/global.css +0 -82
- package/recce-source/js/app/layout.tsx +0 -48
- package/recce-source/js/app/lineage/page.tsx +0 -15
- package/recce-source/js/app/page.tsx +0 -12
- package/recce-source/js/app/query/page.tsx +0 -8
- package/recce-source/js/biome.json +0 -313
- package/recce-source/js/jest.config.js +0 -34
- package/recce-source/js/jest.globals.d.ts +0 -32
- package/recce-source/js/jest.setup.js +0 -91
- package/recce-source/js/next.config.js +0 -16
- package/recce-source/js/package-lock.json +0 -13843
- package/recce-source/js/package.json +0 -123
- package/recce-source/js/pnpm-lock.yaml +0 -9235
- package/recce-source/js/pnpm-workspace.yaml +0 -6
- package/recce-source/js/postcss.config.js +0 -5
- package/recce-source/js/public/auth_callback.html +0 -68
- package/recce-source/js/public/imgs/feedback/thumbs-down.png +0 -0
- package/recce-source/js/public/imgs/feedback/thumbs-up.png +0 -0
- package/recce-source/js/public/imgs/reload-image.svg +0 -4
- package/recce-source/js/public/logo/recce-logo-white.png +0 -0
- package/recce-source/js/src/components/AuthModal/AuthModal.tsx +0 -202
- package/recce-source/js/src/components/app/AvatarDropdown.tsx +0 -159
- package/recce-source/js/src/components/app/EnvInfo.tsx +0 -357
- package/recce-source/js/src/components/app/Filename.tsx +0 -388
- package/recce-source/js/src/components/app/SetupConnectionPopover.tsx +0 -91
- package/recce-source/js/src/components/app/StateExporter.tsx +0 -57
- package/recce-source/js/src/components/app/StateImporter.tsx +0 -198
- package/recce-source/js/src/components/app/StateSharing.tsx +0 -145
- package/recce-source/js/src/components/app/StateSynchronizer.tsx +0 -205
- package/recce-source/js/src/components/charts/HistogramChart.tsx +0 -291
- package/recce-source/js/src/components/charts/SquareIcon.tsx +0 -51
- package/recce-source/js/src/components/charts/TopKSummaryList.tsx +0 -457
- package/recce-source/js/src/components/charts/chartTheme.ts +0 -74
- package/recce-source/js/src/components/check/CheckBreadcrumb.tsx +0 -97
- package/recce-source/js/src/components/check/CheckDescription.tsx +0 -134
- package/recce-source/js/src/components/check/CheckDetail.tsx +0 -797
- package/recce-source/js/src/components/check/CheckEmptyState.tsx +0 -84
- package/recce-source/js/src/components/check/CheckList.tsx +0 -320
- package/recce-source/js/src/components/check/LineageDiffView.tsx +0 -32
- package/recce-source/js/src/components/check/PresetCheckTemplateView.tsx +0 -48
- package/recce-source/js/src/components/check/SchemaDiffView.tsx +0 -290
- package/recce-source/js/src/components/check/check.ts +0 -25
- package/recce-source/js/src/components/check/timeline/CheckTimeline.tsx +0 -163
- package/recce-source/js/src/components/check/timeline/CommentInput.tsx +0 -84
- package/recce-source/js/src/components/check/timeline/TimelineEvent.tsx +0 -468
- package/recce-source/js/src/components/check/timeline/index.ts +0 -12
- package/recce-source/js/src/components/check/utils.ts +0 -12
- package/recce-source/js/src/components/data-grid/ScreenshotDataGrid.tsx +0 -333
- package/recce-source/js/src/components/data-grid/agGridStyles.css +0 -55
- package/recce-source/js/src/components/data-grid/agGridTheme.ts +0 -43
- package/recce-source/js/src/components/editor/CodeEditor.tsx +0 -107
- package/recce-source/js/src/components/editor/DiffEditor.tsx +0 -162
- package/recce-source/js/src/components/editor/index.ts +0 -12
- package/recce-source/js/src/components/errorboundary/ErrorBoundary.tsx +0 -87
- package/recce-source/js/src/components/histogram/HistogramDiffForm.tsx +0 -147
- package/recce-source/js/src/components/histogram/HistogramDiffResultView.tsx +0 -63
- package/recce-source/js/src/components/icons/index.tsx +0 -142
- package/recce-source/js/src/components/lineage/ActionControl.tsx +0 -63
- package/recce-source/js/src/components/lineage/ActionTag.tsx +0 -141
- package/recce-source/js/src/components/lineage/ChangeStatusLegend.tsx +0 -46
- package/recce-source/js/src/components/lineage/ColumnLevelLineageControl.tsx +0 -327
- package/recce-source/js/src/components/lineage/ColumnLevelLineageLegend.tsx +0 -57
- package/recce-source/js/src/components/lineage/GraphColumnNode.tsx +0 -199
- package/recce-source/js/src/components/lineage/GraphEdge.tsx +0 -59
- package/recce-source/js/src/components/lineage/GraphNode.tsx +0 -555
- package/recce-source/js/src/components/lineage/LineagePage.tsx +0 -10
- package/recce-source/js/src/components/lineage/LineageView.tsx +0 -1384
- package/recce-source/js/src/components/lineage/LineageViewContext.tsx +0 -86
- package/recce-source/js/src/components/lineage/LineageViewContextMenu.tsx +0 -637
- package/recce-source/js/src/components/lineage/LineageViewNotification.tsx +0 -64
- package/recce-source/js/src/components/lineage/LineageViewTopBar.tsx +0 -596
- package/recce-source/js/src/components/lineage/NodeSqlView.tsx +0 -136
- package/recce-source/js/src/components/lineage/NodeTag.tsx +0 -278
- package/recce-source/js/src/components/lineage/NodeView.tsx +0 -642
- package/recce-source/js/src/components/lineage/SandboxView.tsx +0 -436
- package/recce-source/js/src/components/lineage/ServerDisconnectedModalContent.tsx +0 -105
- package/recce-source/js/src/components/lineage/SetupConnectionBanner.tsx +0 -52
- package/recce-source/js/src/components/lineage/SingleEnvironmentQueryView.tsx +0 -152
- package/recce-source/js/src/components/lineage/graph.test.ts +0 -31
- package/recce-source/js/src/components/lineage/graph.ts +0 -58
- package/recce-source/js/src/components/lineage/lineage.test.ts +0 -169
- package/recce-source/js/src/components/lineage/lineage.ts +0 -521
- package/recce-source/js/src/components/lineage/styles.css +0 -42
- package/recce-source/js/src/components/lineage/styles.tsx +0 -165
- package/recce-source/js/src/components/lineage/useMultiNodesAction.ts +0 -352
- package/recce-source/js/src/components/lineage/useValueDiffAlertDialog.tsx +0 -108
- package/recce-source/js/src/components/onboarding-guide/Notification.tsx +0 -62
- package/recce-source/js/src/components/profile/ProfileDiffForm.tsx +0 -134
- package/recce-source/js/src/components/profile/ProfileDiffResultView.tsx +0 -243
- package/recce-source/js/src/components/query/ChangedOnlyCheckbox.tsx +0 -29
- package/recce-source/js/src/components/query/DiffText.tsx +0 -120
- package/recce-source/js/src/components/query/QueryDiffResultView.tsx +0 -468
- package/recce-source/js/src/components/query/QueryForm.tsx +0 -80
- package/recce-source/js/src/components/query/QueryPage.tsx +0 -282
- package/recce-source/js/src/components/query/QueryResultView.tsx +0 -180
- package/recce-source/js/src/components/query/SetupConnectionGuide.tsx +0 -57
- package/recce-source/js/src/components/query/SqlEditor.tsx +0 -245
- package/recce-source/js/src/components/query/ToggleSwitch.tsx +0 -84
- package/recce-source/js/src/components/query/styles.css +0 -21
- package/recce-source/js/src/components/routing/DirectUrlAccess.test.tsx +0 -428
- package/recce-source/js/src/components/routing/LineageStatePreservation.test.tsx +0 -311
- package/recce-source/js/src/components/routing/Navigation.test.tsx +0 -256
- package/recce-source/js/src/components/rowcount/RowCountDiffResultView.tsx +0 -108
- package/recce-source/js/src/components/rowcount/delta.test.ts +0 -51
- package/recce-source/js/src/components/rowcount/delta.ts +0 -16
- package/recce-source/js/src/components/run/RunList.tsx +0 -303
- package/recce-source/js/src/components/run/RunModal.tsx +0 -191
- package/recce-source/js/src/components/run/RunPage.tsx +0 -26
- package/recce-source/js/src/components/run/RunResultPane.tsx +0 -578
- package/recce-source/js/src/components/run/RunStatusAndDate.tsx +0 -106
- package/recce-source/js/src/components/run/RunToolbar.tsx +0 -70
- package/recce-source/js/src/components/run/RunView.tsx +0 -196
- package/recce-source/js/src/components/run/registry.ts +0 -214
- package/recce-source/js/src/components/run/types.ts +0 -14
- package/recce-source/js/src/components/schema/ColumnNameCell.test.tsx +0 -169
- package/recce-source/js/src/components/schema/ColumnNameCell.tsx +0 -198
- package/recce-source/js/src/components/schema/SchemaView.tsx +0 -336
- package/recce-source/js/src/components/schema/schemaDiff.ts +0 -32
- package/recce-source/js/src/components/schema/style.css +0 -134
- package/recce-source/js/src/components/screenshot/ScreenshotBox.tsx +0 -39
- package/recce-source/js/src/components/shared/HistoryToggle.tsx +0 -35
- package/recce-source/js/src/components/split/Split.tsx +0 -40
- package/recce-source/js/src/components/split/styles.css +0 -24
- package/recce-source/js/src/components/summary/ChangeSummary.tsx +0 -264
- package/recce-source/js/src/components/summary/SchemaSummary.tsx +0 -123
- package/recce-source/js/src/components/summary/SummaryView.tsx +0 -29
- package/recce-source/js/src/components/timeout/IdleTimeoutBadge.tsx +0 -48
- package/recce-source/js/src/components/top-k/TopKDiffForm.tsx +0 -58
- package/recce-source/js/src/components/top-k/TopKDiffResultView.tsx +0 -73
- package/recce-source/js/src/components/ui/dataGrid/DataFrameColumnGroupHeader.tsx +0 -228
- package/recce-source/js/src/components/ui/dataGrid/DataFrameColumnHeader.tsx +0 -113
- package/recce-source/js/src/components/ui/dataGrid/defaultRenderCell.tsx +0 -72
- package/recce-source/js/src/components/ui/dataGrid/index.ts +0 -23
- package/recce-source/js/src/components/ui/dataGrid/inlineRenderCell.test.tsx +0 -607
- package/recce-source/js/src/components/ui/dataGrid/inlineRenderCell.tsx +0 -211
- package/recce-source/js/src/components/ui/dataGrid/schemaCells.test.tsx +0 -452
- package/recce-source/js/src/components/ui/dataGrid/schemaCells.tsx +0 -142
- package/recce-source/js/src/components/ui/dataGrid/valueDiffCells.test.tsx +0 -178
- package/recce-source/js/src/components/ui/dataGrid/valueDiffCells.tsx +0 -275
- package/recce-source/js/src/components/ui/markdown/ExternalLinkConfirmDialog.tsx +0 -134
- package/recce-source/js/src/components/ui/markdown/MarkdownContent.tsx +0 -364
- package/recce-source/js/src/components/ui/mui/index.ts +0 -13
- package/recce-source/js/src/components/ui/mui-provider.tsx +0 -67
- package/recce-source/js/src/components/ui/mui-theme.ts +0 -1039
- package/recce-source/js/src/components/ui/mui-utils.ts +0 -113
- package/recce-source/js/src/components/ui/toaster.tsx +0 -288
- package/recce-source/js/src/components/valuediff/ValueDiffDetailResultView.tsx +0 -216
- package/recce-source/js/src/components/valuediff/ValueDiffForm.tsx +0 -246
- package/recce-source/js/src/components/valuediff/ValueDiffResultView.tsx +0 -81
- package/recce-source/js/src/components/valuediff/shared.ts +0 -33
- package/recce-source/js/src/constants/tooltipMessage.ts +0 -3
- package/recce-source/js/src/constants/urls.ts +0 -1
- package/recce-source/js/src/lib/UrlHash.ts +0 -12
- package/recce-source/js/src/lib/api/adhocQuery.ts +0 -70
- package/recce-source/js/src/lib/api/axiosClient.ts +0 -9
- package/recce-source/js/src/lib/api/cacheKeys.ts +0 -13
- package/recce-source/js/src/lib/api/checkEvents.ts +0 -252
- package/recce-source/js/src/lib/api/checks.ts +0 -129
- package/recce-source/js/src/lib/api/cll.ts +0 -53
- package/recce-source/js/src/lib/api/connectToCloud.ts +0 -13
- package/recce-source/js/src/lib/api/flag.ts +0 -37
- package/recce-source/js/src/lib/api/info.ts +0 -198
- package/recce-source/js/src/lib/api/instanceInfo.ts +0 -25
- package/recce-source/js/src/lib/api/keepAlive.ts +0 -108
- package/recce-source/js/src/lib/api/lineagecheck.ts +0 -35
- package/recce-source/js/src/lib/api/localStorageKeys.ts +0 -7
- package/recce-source/js/src/lib/api/models.ts +0 -59
- package/recce-source/js/src/lib/api/profile.ts +0 -65
- package/recce-source/js/src/lib/api/rowcount.ts +0 -19
- package/recce-source/js/src/lib/api/runs.ts +0 -174
- package/recce-source/js/src/lib/api/schemacheck.ts +0 -31
- package/recce-source/js/src/lib/api/select.ts +0 -25
- package/recce-source/js/src/lib/api/sessionStorageKeys.ts +0 -8
- package/recce-source/js/src/lib/api/state.ts +0 -117
- package/recce-source/js/src/lib/api/track.ts +0 -281
- package/recce-source/js/src/lib/api/types.ts +0 -284
- package/recce-source/js/src/lib/api/user.ts +0 -42
- package/recce-source/js/src/lib/api/valuediff.ts +0 -46
- package/recce-source/js/src/lib/api/version.ts +0 -40
- package/recce-source/js/src/lib/const.ts +0 -9
- package/recce-source/js/src/lib/csv/extractors.test.ts +0 -456
- package/recce-source/js/src/lib/csv/extractors.ts +0 -468
- package/recce-source/js/src/lib/csv/format.test.ts +0 -211
- package/recce-source/js/src/lib/csv/format.ts +0 -44
- package/recce-source/js/src/lib/csv/index.test.ts +0 -155
- package/recce-source/js/src/lib/csv/index.ts +0 -109
- package/recce-source/js/src/lib/dataGrid/crossFunctionConsistency.test.ts +0 -626
- package/recce-source/js/src/lib/dataGrid/dataGridFactory.test.ts +0 -2140
- package/recce-source/js/src/lib/dataGrid/dataGridFactory.ts +0 -397
- package/recce-source/js/src/lib/dataGrid/generators/rowCountUtils.test.ts +0 -132
- package/recce-source/js/src/lib/dataGrid/generators/rowCountUtils.ts +0 -126
- package/recce-source/js/src/lib/dataGrid/generators/toDataDiffGrid.test.ts +0 -1627
- package/recce-source/js/src/lib/dataGrid/generators/toDataDiffGrid.ts +0 -140
- package/recce-source/js/src/lib/dataGrid/generators/toDataGrid.ts +0 -67
- package/recce-source/js/src/lib/dataGrid/generators/toRowCountDataGrid.test.ts +0 -142
- package/recce-source/js/src/lib/dataGrid/generators/toRowCountDataGrid.ts +0 -71
- package/recce-source/js/src/lib/dataGrid/generators/toRowCountDiffDataGrid.test.ts +0 -258
- package/recce-source/js/src/lib/dataGrid/generators/toRowCountDiffDataGrid.ts +0 -153
- package/recce-source/js/src/lib/dataGrid/generators/toSchemaDataGrid.test.ts +0 -951
- package/recce-source/js/src/lib/dataGrid/generators/toSchemaDataGrid.ts +0 -221
- package/recce-source/js/src/lib/dataGrid/generators/toValueDataGrid.test.ts +0 -395
- package/recce-source/js/src/lib/dataGrid/generators/toValueDataGrid.ts +0 -184
- package/recce-source/js/src/lib/dataGrid/generators/toValueDiffGrid.test.ts +0 -884
- package/recce-source/js/src/lib/dataGrid/generators/toValueDiffGrid.ts +0 -113
- package/recce-source/js/src/lib/dataGrid/index.ts +0 -51
- package/recce-source/js/src/lib/dataGrid/propertyBased.test.ts +0 -858
- package/recce-source/js/src/lib/dataGrid/shared/columnBuilders.test.ts +0 -482
- package/recce-source/js/src/lib/dataGrid/shared/columnBuilders.ts +0 -345
- package/recce-source/js/src/lib/dataGrid/shared/dataTypeEdgeCases.test.ts +0 -698
- package/recce-source/js/src/lib/dataGrid/shared/diffColumnBuilder.test.tsx +0 -820
- package/recce-source/js/src/lib/dataGrid/shared/diffColumnBuilder.tsx +0 -277
- package/recce-source/js/src/lib/dataGrid/shared/gridUtils.test.ts +0 -785
- package/recce-source/js/src/lib/dataGrid/shared/gridUtils.ts +0 -370
- package/recce-source/js/src/lib/dataGrid/shared/index.ts +0 -81
- package/recce-source/js/src/lib/dataGrid/shared/rowBuilders.test.ts +0 -909
- package/recce-source/js/src/lib/dataGrid/shared/rowBuilders.ts +0 -325
- package/recce-source/js/src/lib/dataGrid/shared/simpleColumnBuilder.tsx +0 -240
- package/recce-source/js/src/lib/dataGrid/shared/toDiffColumn.test.tsx +0 -719
- package/recce-source/js/src/lib/dataGrid/shared/toDiffColumn.tsx +0 -231
- package/recce-source/js/src/lib/dataGrid/shared/validation.test.ts +0 -559
- package/recce-source/js/src/lib/dataGrid/shared/validation.ts +0 -367
- package/recce-source/js/src/lib/dataGrid/warehouseNamingConventions.test.ts +0 -1117
- package/recce-source/js/src/lib/formatSelect.ts +0 -50
- package/recce-source/js/src/lib/hooks/ApiConfigContext.tsx +0 -181
- package/recce-source/js/src/lib/hooks/IdleTimeoutContext.tsx +0 -177
- package/recce-source/js/src/lib/hooks/LineageGraphContext.tsx +0 -512
- package/recce-source/js/src/lib/hooks/RecceActionContext.tsx +0 -269
- package/recce-source/js/src/lib/hooks/RecceCheckContext.tsx +0 -33
- package/recce-source/js/src/lib/hooks/RecceContextProvider.tsx +0 -54
- package/recce-source/js/src/lib/hooks/RecceInstanceContext.tsx +0 -129
- package/recce-source/js/src/lib/hooks/RecceQueryContext.tsx +0 -98
- package/recce-source/js/src/lib/hooks/RecceShareStateContext.tsx +0 -59
- package/recce-source/js/src/lib/hooks/ScreenShot.tsx +0 -399
- package/recce-source/js/src/lib/hooks/useAppRouter.test.ts +0 -211
- package/recce-source/js/src/lib/hooks/useAppRouter.ts +0 -200
- package/recce-source/js/src/lib/hooks/useCSVExport.ts +0 -136
- package/recce-source/js/src/lib/hooks/useCheckEvents.ts +0 -99
- package/recce-source/js/src/lib/hooks/useCheckToast.tsx +0 -14
- package/recce-source/js/src/lib/hooks/useClipBoardToast.tsx +0 -27
- package/recce-source/js/src/lib/hooks/useCountdownToast.tsx +0 -102
- package/recce-source/js/src/lib/hooks/useFeedbackCollectionToast.tsx +0 -130
- package/recce-source/js/src/lib/hooks/useGuideToast.tsx +0 -45
- package/recce-source/js/src/lib/hooks/useIdleDetection.tsx +0 -185
- package/recce-source/js/src/lib/hooks/useModelColumns.tsx +0 -113
- package/recce-source/js/src/lib/hooks/useRecceInstanceInfo.tsx +0 -13
- package/recce-source/js/src/lib/hooks/useRecceServerFlag.tsx +0 -13
- package/recce-source/js/src/lib/hooks/useRun.tsx +0 -89
- package/recce-source/js/src/lib/hooks/useThemeColors.ts +0 -115
- package/recce-source/js/src/lib/mergeKeys.test.ts +0 -89
- package/recce-source/js/src/lib/mergeKeys.ts +0 -86
- package/recce-source/js/src/lib/result/ResultErrorFallback.tsx +0 -9
- package/recce-source/js/src/lib/utils/formatTime.ts +0 -84
- package/recce-source/js/src/lib/utils/urls.ts +0 -16
- package/recce-source/js/src/utils/DropdownValuesInput.tsx +0 -297
- package/recce-source/js/src/utils/formatters.tsx +0 -237
- package/recce-source/js/src/utils/transforms.ts +0 -81
- package/recce-source/js/tsconfig.json +0 -47
- package/recce-source/macros/README.md +0 -8
- package/recce-source/macros/recce_athena.sql +0 -73
- package/recce-source/pyproject.toml +0 -109
- package/recce-source/recce/VERSION +0 -1
- package/recce-source/recce/__init__.py +0 -84
- package/recce-source/recce/adapter/__init__.py +0 -0
- package/recce-source/recce/adapter/base.py +0 -109
- package/recce-source/recce/adapter/dbt_adapter/__init__.py +0 -1699
- package/recce-source/recce/adapter/dbt_adapter/dbt_version.py +0 -42
- package/recce-source/recce/adapter/sqlmesh_adapter.py +0 -141
- package/recce-source/recce/apis/__init__.py +0 -0
- package/recce-source/recce/apis/check_api.py +0 -203
- package/recce-source/recce/apis/check_events_api.py +0 -353
- package/recce-source/recce/apis/check_func.py +0 -130
- package/recce-source/recce/apis/run_api.py +0 -130
- package/recce-source/recce/apis/run_func.py +0 -258
- package/recce-source/recce/artifact.py +0 -266
- package/recce-source/recce/cli.py +0 -1846
- package/recce-source/recce/config.py +0 -127
- package/recce-source/recce/connect_to_cloud.py +0 -138
- package/recce-source/recce/core.py +0 -334
- package/recce-source/recce/diff.py +0 -26
- package/recce-source/recce/event/CONFIG +0 -1
- package/recce-source/recce/event/SENTRY_DNS +0 -1
- package/recce-source/recce/event/__init__.py +0 -304
- package/recce-source/recce/event/collector.py +0 -184
- package/recce-source/recce/event/track.py +0 -158
- package/recce-source/recce/exceptions.py +0 -21
- package/recce-source/recce/git.py +0 -77
- package/recce-source/recce/github.py +0 -222
- package/recce-source/recce/mcp_server.py +0 -885
- package/recce-source/recce/models/__init__.py +0 -6
- package/recce-source/recce/models/check.py +0 -481
- package/recce-source/recce/models/run.py +0 -46
- package/recce-source/recce/models/types.py +0 -218
- package/recce-source/recce/pull_request.py +0 -124
- package/recce-source/recce/run.py +0 -390
- package/recce-source/recce/server.py +0 -877
- package/recce-source/recce/state/__init__.py +0 -31
- package/recce-source/recce/state/cloud.py +0 -644
- package/recce-source/recce/state/const.py +0 -26
- package/recce-source/recce/state/local.py +0 -56
- package/recce-source/recce/state/state.py +0 -119
- package/recce-source/recce/state/state_loader.py +0 -174
- package/recce-source/recce/summary.py +0 -575
- package/recce-source/recce/tasks/__init__.py +0 -23
- package/recce-source/recce/tasks/core.py +0 -134
- package/recce-source/recce/tasks/dataframe.py +0 -170
- package/recce-source/recce/tasks/histogram.py +0 -433
- package/recce-source/recce/tasks/lineage.py +0 -19
- package/recce-source/recce/tasks/profile.py +0 -298
- package/recce-source/recce/tasks/query.py +0 -450
- package/recce-source/recce/tasks/rowcount.py +0 -277
- package/recce-source/recce/tasks/schema.py +0 -65
- package/recce-source/recce/tasks/top_k.py +0 -172
- package/recce-source/recce/tasks/utils.py +0 -147
- package/recce-source/recce/tasks/valuediff.py +0 -497
- package/recce-source/recce/util/__init__.py +0 -4
- package/recce-source/recce/util/api_token.py +0 -80
- package/recce-source/recce/util/breaking.py +0 -330
- package/recce-source/recce/util/cache.py +0 -25
- package/recce-source/recce/util/cll.py +0 -355
- package/recce-source/recce/util/cloud/__init__.py +0 -15
- package/recce-source/recce/util/cloud/base.py +0 -115
- package/recce-source/recce/util/cloud/check_events.py +0 -190
- package/recce-source/recce/util/cloud/checks.py +0 -242
- package/recce-source/recce/util/io.py +0 -120
- package/recce-source/recce/util/lineage.py +0 -83
- package/recce-source/recce/util/logger.py +0 -25
- package/recce-source/recce/util/onboarding_state.py +0 -45
- package/recce-source/recce/util/perf_tracking.py +0 -85
- package/recce-source/recce/util/pydantic_model.py +0 -22
- package/recce-source/recce/util/recce_cloud.py +0 -454
- package/recce-source/recce/util/singleton.py +0 -18
- package/recce-source/recce/util/startup_perf.py +0 -121
- package/recce-source/recce/yaml/__init__.py +0 -58
- package/recce-source/recce_cloud/README.md +0 -780
- package/recce-source/recce_cloud/VERSION +0 -1
- package/recce-source/recce_cloud/__init__.py +0 -24
- package/recce-source/recce_cloud/api/__init__.py +0 -17
- package/recce-source/recce_cloud/api/base.py +0 -132
- package/recce-source/recce_cloud/api/client.py +0 -186
- package/recce-source/recce_cloud/api/exceptions.py +0 -26
- package/recce-source/recce_cloud/api/factory.py +0 -63
- package/recce-source/recce_cloud/api/github.py +0 -106
- package/recce-source/recce_cloud/api/gitlab.py +0 -111
- package/recce-source/recce_cloud/artifact.py +0 -57
- package/recce-source/recce_cloud/ci_providers/__init__.py +0 -9
- package/recce-source/recce_cloud/ci_providers/base.py +0 -82
- package/recce-source/recce_cloud/ci_providers/detector.py +0 -147
- package/recce-source/recce_cloud/ci_providers/github_actions.py +0 -136
- package/recce-source/recce_cloud/ci_providers/gitlab_ci.py +0 -130
- package/recce-source/recce_cloud/cli.py +0 -434
- package/recce-source/recce_cloud/download.py +0 -230
- package/recce-source/recce_cloud/hatch_build.py +0 -20
- package/recce-source/recce_cloud/pyproject.toml +0 -49
- package/recce-source/recce_cloud/upload.py +0 -214
- package/recce-source/test.py +0 -0
- package/recce-source/tests/__init__.py +0 -0
- package/recce-source/tests/adapter/__init__.py +0 -0
- package/recce-source/tests/adapter/dbt_adapter/__init__.py +0 -0
- package/recce-source/tests/adapter/dbt_adapter/conftest.py +0 -17
- package/recce-source/tests/adapter/dbt_adapter/dbt_test_helper.py +0 -298
- package/recce-source/tests/adapter/dbt_adapter/test_dbt_adapter.py +0 -25
- package/recce-source/tests/adapter/dbt_adapter/test_dbt_cll.py +0 -717
- package/recce-source/tests/adapter/dbt_adapter/test_proj/dbt_project.yml +0 -4
- package/recce-source/tests/adapter/dbt_adapter/test_proj/manifest.json +0 -1
- package/recce-source/tests/adapter/dbt_adapter/test_proj/package-lock.yml +0 -8
- package/recce-source/tests/adapter/dbt_adapter/test_proj/packages.yml +0 -7
- package/recce-source/tests/adapter/dbt_adapter/test_proj/profiles.yml +0 -6
- package/recce-source/tests/adapter/dbt_adapter/test_selector.py +0 -205
- package/recce-source/tests/apis/__init__.py +0 -0
- package/recce-source/tests/apis/row_count_diff.json +0 -59
- package/recce-source/tests/apis/test_check_events_api.py +0 -615
- package/recce-source/tests/apis/test_run_func.py +0 -433
- package/recce-source/tests/catalog.json +0 -527
- package/recce-source/tests/data/manifest/base/catalog.json +0 -1
- package/recce-source/tests/data/manifest/base/manifest.json +0 -1
- package/recce-source/tests/data/manifest/pr2/catalog.json +0 -1
- package/recce-source/tests/data/manifest/pr2/manifest.json +0 -1
- package/recce-source/tests/manifest.json +0 -10655
- package/recce-source/tests/models/__init__.py +0 -0
- package/recce-source/tests/models/test_check.py +0 -731
- package/recce-source/tests/models/test_run_models.py +0 -295
- package/recce-source/tests/recce_cloud/__init__.py +0 -0
- package/recce-source/tests/recce_cloud/test_ci_providers.py +0 -351
- package/recce-source/tests/recce_cloud/test_cli.py +0 -735
- package/recce-source/tests/recce_cloud/test_client.py +0 -379
- package/recce-source/tests/recce_cloud/test_platform_clients.py +0 -483
- package/recce-source/tests/recce_state.json +0 -1
- package/recce-source/tests/state/test_cloud.py +0 -719
- package/recce-source/tests/state/test_local.py +0 -164
- package/recce-source/tests/state/test_state_loader.py +0 -211
- package/recce-source/tests/tasks/__init__.py +0 -0
- package/recce-source/tests/tasks/conftest.py +0 -4
- package/recce-source/tests/tasks/test_histogram.py +0 -129
- package/recce-source/tests/tasks/test_lineage.py +0 -55
- package/recce-source/tests/tasks/test_preset_checks.py +0 -64
- package/recce-source/tests/tasks/test_profile.py +0 -397
- package/recce-source/tests/tasks/test_query.py +0 -528
- package/recce-source/tests/tasks/test_row_count.py +0 -133
- package/recce-source/tests/tasks/test_schema.py +0 -122
- package/recce-source/tests/tasks/test_top_k.py +0 -77
- package/recce-source/tests/tasks/test_utils.py +0 -439
- package/recce-source/tests/tasks/test_valuediff.py +0 -361
- package/recce-source/tests/test_cli.py +0 -236
- package/recce-source/tests/test_cli_mcp_optional.py +0 -45
- package/recce-source/tests/test_cloud_listing_cli.py +0 -324
- package/recce-source/tests/test_config.py +0 -43
- package/recce-source/tests/test_connect_to_cloud.py +0 -82
- package/recce-source/tests/test_core.py +0 -174
- package/recce-source/tests/test_dbt.py +0 -36
- package/recce-source/tests/test_mcp_server.py +0 -505
- package/recce-source/tests/test_pull_request.py +0 -130
- package/recce-source/tests/test_server.py +0 -202
- package/recce-source/tests/test_server_lifespan.py +0 -138
- package/recce-source/tests/test_summary.py +0 -73
- package/recce-source/tests/util/__init__.py +0 -0
- package/recce-source/tests/util/cloud/__init__.py +0 -0
- package/recce-source/tests/util/cloud/test_check_events.py +0 -255
- package/recce-source/tests/util/cloud/test_checks.py +0 -204
- package/recce-source/tests/util/test_api_token.py +0 -119
- package/recce-source/tests/util/test_breaking.py +0 -1427
- package/recce-source/tests/util/test_cll.py +0 -706
- package/recce-source/tests/util/test_lineage.py +0 -122
- package/recce-source/tests/util/test_onboarding_state.py +0 -84
- package/recce-source/tests/util/test_recce_cloud.py +0 -231
- package/recce-source/tox.ini +0 -40
- package/recce-source/uv.lock +0 -3928
- package/src/api/index.ts +0 -32
- package/src/components/index.ts +0 -154
- package/src/global.d.ts +0 -14
- package/src/hooks/index.ts +0 -56
- package/src/index.ts +0 -17
- package/src/lib/hooks/RouteConfigContext.ts +0 -139
- package/src/lib/hooks/useAppRouter.ts +0 -240
- package/src/mui-augmentation.d.ts +0 -139
- package/src/theme/index.ts +0 -13
- package/src/theme.ts +0 -23
- package/src/types/index.ts +0 -23
|
@@ -1,295 +0,0 @@
|
|
|
1
|
-
from recce.models.types import Run, RunStatus, RunType
|
|
2
|
-
from recce.state import RecceState
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
class TestRecceStateWithRuns:
|
|
6
|
-
"""Test RecceState integration with Run objects and Run.__init__ result validation"""
|
|
7
|
-
|
|
8
|
-
def test_recce_state_with_query_result_validation(self):
|
|
9
|
-
"""Test RecceState correctly deserializes query results through Run.__init__"""
|
|
10
|
-
state_dict = {
|
|
11
|
-
"runs": [
|
|
12
|
-
{
|
|
13
|
-
"type": "query",
|
|
14
|
-
"name": "customer_query",
|
|
15
|
-
"params": {"sql": "SELECT * FROM customers"},
|
|
16
|
-
"status": "finished",
|
|
17
|
-
"result": {
|
|
18
|
-
"columns": [{"name": "customer_id", "type": "integer"}, {"name": "name", "type": "text"}],
|
|
19
|
-
"data": [[1, "Alice"], [2, "Bob"]],
|
|
20
|
-
"limit": None,
|
|
21
|
-
"more": False,
|
|
22
|
-
},
|
|
23
|
-
}
|
|
24
|
-
],
|
|
25
|
-
"checks": [],
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
state = RecceState(**state_dict)
|
|
29
|
-
run = state.runs[0]
|
|
30
|
-
|
|
31
|
-
# Verify Run was created correctly
|
|
32
|
-
assert isinstance(run, Run)
|
|
33
|
-
assert run.type == RunType.QUERY
|
|
34
|
-
assert run.status == RunStatus.FINISHED
|
|
35
|
-
|
|
36
|
-
# Verify Run.__init__ validated and preserved result structure
|
|
37
|
-
assert run.result is not None
|
|
38
|
-
assert "columns" in run.result
|
|
39
|
-
assert "data" in run.result
|
|
40
|
-
|
|
41
|
-
# Verify DataFrameColumn auto-set key=name (from DataFrameColumn.__init__)
|
|
42
|
-
assert run.result["columns"][0]["key"] == "customer_id"
|
|
43
|
-
assert run.result["columns"][0]["name"] == "customer_id"
|
|
44
|
-
|
|
45
|
-
def test_recce_state_with_profile_result_validation(self):
|
|
46
|
-
"""Test RecceState correctly deserializes profile results through Run.__init__"""
|
|
47
|
-
state_dict = {
|
|
48
|
-
"runs": [
|
|
49
|
-
{
|
|
50
|
-
"type": "profile",
|
|
51
|
-
"name": "customers_profile",
|
|
52
|
-
"params": {"model": "customers"},
|
|
53
|
-
"status": "finished",
|
|
54
|
-
"result": {
|
|
55
|
-
"current": {
|
|
56
|
-
"columns": [
|
|
57
|
-
{"name": "column_name", "type": "text"},
|
|
58
|
-
{"name": "row_count", "type": "integer"},
|
|
59
|
-
],
|
|
60
|
-
"data": [["customer_id", 100], ["name", 100]],
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
}
|
|
64
|
-
],
|
|
65
|
-
"checks": [],
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
state = RecceState(**state_dict)
|
|
69
|
-
run = state.runs[0]
|
|
70
|
-
|
|
71
|
-
assert run.type == RunType.PROFILE
|
|
72
|
-
assert run.result is not None
|
|
73
|
-
assert "current" in run.result
|
|
74
|
-
|
|
75
|
-
# Verify DataFrameColumn auto-set key=name in nested structure
|
|
76
|
-
assert run.result["current"]["columns"][0]["key"] == "column_name"
|
|
77
|
-
|
|
78
|
-
def test_recce_state_with_query_diff_result_validation(self):
|
|
79
|
-
"""Test RecceState correctly deserializes query_diff results through Run.__init__"""
|
|
80
|
-
state_dict = {
|
|
81
|
-
"runs": [
|
|
82
|
-
{
|
|
83
|
-
"type": "query_diff",
|
|
84
|
-
"name": "users_diff",
|
|
85
|
-
"status": "finished",
|
|
86
|
-
"result": {
|
|
87
|
-
"base": {"columns": [{"name": "id", "type": "integer"}], "data": [[1], [2]]},
|
|
88
|
-
"current": {"columns": [{"name": "id", "type": "integer"}], "data": [[1], [2], [3]]},
|
|
89
|
-
"diff": None,
|
|
90
|
-
},
|
|
91
|
-
}
|
|
92
|
-
],
|
|
93
|
-
"checks": [],
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
state = RecceState(**state_dict)
|
|
97
|
-
run = state.runs[0]
|
|
98
|
-
|
|
99
|
-
assert run.type == RunType.QUERY_DIFF
|
|
100
|
-
assert run.result is not None
|
|
101
|
-
assert "base" in run.result
|
|
102
|
-
assert "current" in run.result
|
|
103
|
-
# Verify both base and current DataFrames have auto-set keys
|
|
104
|
-
assert run.result["base"]["columns"][0]["key"] == "id"
|
|
105
|
-
assert run.result["current"]["columns"][0]["key"] == "id"
|
|
106
|
-
|
|
107
|
-
def test_recce_state_with_value_diff_result_validation(self):
|
|
108
|
-
"""Test RecceState correctly deserializes value_diff results through Run.__init__"""
|
|
109
|
-
state_dict = {
|
|
110
|
-
"runs": [
|
|
111
|
-
{
|
|
112
|
-
"type": "value_diff",
|
|
113
|
-
"name": "products_diff",
|
|
114
|
-
"status": "finished",
|
|
115
|
-
"result": {
|
|
116
|
-
"summary": {"total": 100, "added": 5, "removed": 2},
|
|
117
|
-
"data": {"columns": [{"name": "product_id", "type": "integer"}], "data": [[1], [2]]},
|
|
118
|
-
},
|
|
119
|
-
}
|
|
120
|
-
],
|
|
121
|
-
"checks": [],
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
state = RecceState(**state_dict)
|
|
125
|
-
run = state.runs[0]
|
|
126
|
-
|
|
127
|
-
assert run.type == RunType.VALUE_DIFF
|
|
128
|
-
assert run.result is not None
|
|
129
|
-
assert "summary" in run.result
|
|
130
|
-
assert run.result["summary"]["total"] == 100
|
|
131
|
-
# Verify nested DataFrame has auto-set key
|
|
132
|
-
assert run.result["data"]["columns"][0]["key"] == "product_id"
|
|
133
|
-
|
|
134
|
-
def test_recce_state_with_value_diff_detail_result_validation(self):
|
|
135
|
-
"""Test RecceState correctly deserializes value_diff_detail results through Run.__init__"""
|
|
136
|
-
state_dict = {
|
|
137
|
-
"runs": [
|
|
138
|
-
{
|
|
139
|
-
"type": "value_diff_detail",
|
|
140
|
-
"name": "detailed_diff",
|
|
141
|
-
"status": "finished",
|
|
142
|
-
"result": {
|
|
143
|
-
"columns": [{"name": "id", "type": "integer"}, {"name": "__diff_status__", "type": "text"}],
|
|
144
|
-
"data": [[1, "modified"], [2, "added"]],
|
|
145
|
-
},
|
|
146
|
-
}
|
|
147
|
-
],
|
|
148
|
-
"checks": [],
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
state = RecceState(**state_dict)
|
|
152
|
-
run = state.runs[0]
|
|
153
|
-
|
|
154
|
-
assert run.type == RunType.VALUE_DIFF_DETAIL
|
|
155
|
-
assert run.result is not None
|
|
156
|
-
assert "columns" in run.result
|
|
157
|
-
assert run.result["columns"][0]["key"] == "id"
|
|
158
|
-
|
|
159
|
-
def test_recce_state_with_profile_diff_result_validation(self):
|
|
160
|
-
"""Test RecceState correctly deserializes profile_diff results through Run.__init__"""
|
|
161
|
-
state_dict = {
|
|
162
|
-
"runs": [
|
|
163
|
-
{
|
|
164
|
-
"type": "profile_diff",
|
|
165
|
-
"name": "profile_comparison",
|
|
166
|
-
"status": "finished",
|
|
167
|
-
"result": {
|
|
168
|
-
"base": {"columns": [{"name": "stat", "type": "text"}], "data": [["count", 100]]},
|
|
169
|
-
"current": {"columns": [{"name": "stat", "type": "text"}], "data": [["count", 105]]},
|
|
170
|
-
},
|
|
171
|
-
}
|
|
172
|
-
],
|
|
173
|
-
"checks": [],
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
state = RecceState(**state_dict)
|
|
177
|
-
run = state.runs[0]
|
|
178
|
-
|
|
179
|
-
assert run.type == RunType.PROFILE_DIFF
|
|
180
|
-
assert run.result is not None
|
|
181
|
-
assert "base" in run.result
|
|
182
|
-
assert "current" in run.result
|
|
183
|
-
|
|
184
|
-
def test_recce_state_with_unvalidated_run_types(self):
|
|
185
|
-
"""Test RecceState with run types that don't go through Run.__init__ validation"""
|
|
186
|
-
state_dict = {
|
|
187
|
-
"runs": [
|
|
188
|
-
{
|
|
189
|
-
"type": "row_count_diff",
|
|
190
|
-
"name": "customers_row_count",
|
|
191
|
-
"status": "finished",
|
|
192
|
-
"result": {"customers": {"base": 95, "curr": 100}},
|
|
193
|
-
}
|
|
194
|
-
],
|
|
195
|
-
"checks": [],
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
state = RecceState(**state_dict)
|
|
199
|
-
run = state.runs[0]
|
|
200
|
-
|
|
201
|
-
# row_count_diff doesn't go through Run.__init__ validation
|
|
202
|
-
# so result stays as-is (dict without DataFrame structure)
|
|
203
|
-
assert run.type == RunType.ROW_COUNT_DIFF
|
|
204
|
-
assert run.result is not None
|
|
205
|
-
assert run.result["customers"]["base"] == 95
|
|
206
|
-
|
|
207
|
-
def test_recce_state_roundtrip_with_results(self):
|
|
208
|
-
"""Test RecceState serialization roundtrip preserves validated results"""
|
|
209
|
-
original_state = RecceState(
|
|
210
|
-
runs=[
|
|
211
|
-
Run(
|
|
212
|
-
type=RunType.QUERY,
|
|
213
|
-
status=RunStatus.FINISHED,
|
|
214
|
-
result={"columns": [{"name": "id", "type": "integer"}], "data": [[1], [2]]},
|
|
215
|
-
)
|
|
216
|
-
]
|
|
217
|
-
)
|
|
218
|
-
|
|
219
|
-
# Serialize and deserialize
|
|
220
|
-
json_str = original_state.to_json()
|
|
221
|
-
restored_state = RecceState.from_json(json_str)
|
|
222
|
-
|
|
223
|
-
# Verify result structure is preserved
|
|
224
|
-
assert len(restored_state.runs) == 1
|
|
225
|
-
run = restored_state.runs[0]
|
|
226
|
-
assert run.result is not None
|
|
227
|
-
assert run.result["columns"][0]["key"] == "id"
|
|
228
|
-
|
|
229
|
-
def test_recce_state_with_runs_without_results(self):
|
|
230
|
-
"""Test RecceState works with runs that have no results"""
|
|
231
|
-
state_dict = {
|
|
232
|
-
"runs": [
|
|
233
|
-
{"type": "query", "name": "pending_query", "status": "running"},
|
|
234
|
-
{"type": "profile", "name": "pending_profile", "status": "running"},
|
|
235
|
-
],
|
|
236
|
-
"checks": [],
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
state = RecceState(**state_dict)
|
|
240
|
-
|
|
241
|
-
assert len(state.runs) == 2
|
|
242
|
-
assert state.runs[0].result is None
|
|
243
|
-
assert state.runs[1].result is None
|
|
244
|
-
|
|
245
|
-
def test_recce_state_with_null_results(self):
|
|
246
|
-
"""Test RecceState handles runs with explicitly null results"""
|
|
247
|
-
state_dict = {
|
|
248
|
-
"runs": [
|
|
249
|
-
{
|
|
250
|
-
"type": "query",
|
|
251
|
-
"name": "failed_query",
|
|
252
|
-
"status": "failed",
|
|
253
|
-
"result": None,
|
|
254
|
-
"error": "Query execution failed",
|
|
255
|
-
}
|
|
256
|
-
],
|
|
257
|
-
"checks": [],
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
state = RecceState(**state_dict)
|
|
261
|
-
|
|
262
|
-
assert len(state.runs) == 1
|
|
263
|
-
assert state.runs[0].result is None
|
|
264
|
-
assert state.runs[0].error == "Query execution failed"
|
|
265
|
-
|
|
266
|
-
def test_recce_state_with_mixed_result_states(self):
|
|
267
|
-
"""Test RecceState with runs in various states (finished, running, failed, cancelled)"""
|
|
268
|
-
state_dict = {
|
|
269
|
-
"runs": [
|
|
270
|
-
{
|
|
271
|
-
"type": "query",
|
|
272
|
-
"name": "completed_query",
|
|
273
|
-
"status": "finished",
|
|
274
|
-
"result": {"columns": [{"name": "id", "type": "integer"}], "data": [[1]]},
|
|
275
|
-
},
|
|
276
|
-
{"type": "profile", "name": "running_profile", "status": "running"},
|
|
277
|
-
{
|
|
278
|
-
"type": "value_diff",
|
|
279
|
-
"name": "failed_diff",
|
|
280
|
-
"status": "failed",
|
|
281
|
-
"result": None,
|
|
282
|
-
"error": "Connection timeout",
|
|
283
|
-
},
|
|
284
|
-
{"type": "query_diff", "name": "cancelled_diff", "status": "cancelled"},
|
|
285
|
-
],
|
|
286
|
-
"checks": [],
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
state = RecceState(**state_dict)
|
|
290
|
-
|
|
291
|
-
assert len(state.runs) == 4
|
|
292
|
-
assert state.runs[0].result is not None # Finished with result
|
|
293
|
-
assert state.runs[1].result is None # Running, no result yet
|
|
294
|
-
assert state.runs[2].result is None # Failed, null result
|
|
295
|
-
assert state.runs[3].result is None # Cancelled, no result
|
|
File without changes
|
|
@@ -1,351 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Tests for CI provider detection and information extraction.
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
import json
|
|
6
|
-
import os
|
|
7
|
-
from unittest.mock import mock_open, patch
|
|
8
|
-
|
|
9
|
-
from recce_cloud.ci_providers import CIDetector, GitHubActionsProvider, GitLabCIProvider
|
|
10
|
-
from recce_cloud.ci_providers.base import CIInfo
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class TestGitHubActionsProvider:
|
|
14
|
-
"""Tests for GitHub Actions provider."""
|
|
15
|
-
|
|
16
|
-
def test_can_handle_true(self):
|
|
17
|
-
"""Test detection when GITHUB_ACTIONS is true."""
|
|
18
|
-
with patch.dict(os.environ, {"GITHUB_ACTIONS": "true"}):
|
|
19
|
-
provider = GitHubActionsProvider()
|
|
20
|
-
assert provider.can_handle() is True
|
|
21
|
-
|
|
22
|
-
def test_can_handle_false(self):
|
|
23
|
-
"""Test detection when GITHUB_ACTIONS is not set."""
|
|
24
|
-
with patch.dict(os.environ, {}, clear=True):
|
|
25
|
-
provider = GitHubActionsProvider()
|
|
26
|
-
assert provider.can_handle() is False
|
|
27
|
-
|
|
28
|
-
def test_extract_pr_number_from_event(self):
|
|
29
|
-
"""Test PR number extraction from event JSON."""
|
|
30
|
-
event_data = {"pull_request": {"number": 123}}
|
|
31
|
-
mock_file = mock_open(read_data=json.dumps(event_data))
|
|
32
|
-
|
|
33
|
-
with patch.dict(os.environ, {"GITHUB_EVENT_PATH": "/tmp/event.json"}):
|
|
34
|
-
with patch("builtins.open", mock_file):
|
|
35
|
-
with patch("os.path.exists", return_value=True):
|
|
36
|
-
provider = GitHubActionsProvider()
|
|
37
|
-
pr_number = provider._extract_pr_number()
|
|
38
|
-
assert pr_number == 123
|
|
39
|
-
|
|
40
|
-
def test_extract_pr_number_no_event(self):
|
|
41
|
-
"""Test PR number extraction when event path doesn't exist."""
|
|
42
|
-
with patch.dict(os.environ, {}, clear=True):
|
|
43
|
-
provider = GitHubActionsProvider()
|
|
44
|
-
pr_number = provider._extract_pr_number()
|
|
45
|
-
assert pr_number is None
|
|
46
|
-
|
|
47
|
-
def test_extract_commit_sha(self):
|
|
48
|
-
"""Test commit SHA extraction."""
|
|
49
|
-
with patch.dict(os.environ, {"GITHUB_SHA": "abc123def456"}):
|
|
50
|
-
provider = GitHubActionsProvider()
|
|
51
|
-
commit_sha = provider._extract_commit_sha()
|
|
52
|
-
assert commit_sha == "abc123def456"
|
|
53
|
-
|
|
54
|
-
def test_extract_commit_sha_fallback(self):
|
|
55
|
-
"""Test commit SHA extraction with git fallback."""
|
|
56
|
-
with patch.dict(os.environ, {}, clear=True):
|
|
57
|
-
with patch.object(GitHubActionsProvider, "run_git_command", return_value="git123456"):
|
|
58
|
-
provider = GitHubActionsProvider()
|
|
59
|
-
commit_sha = provider._extract_commit_sha()
|
|
60
|
-
assert commit_sha == "git123456"
|
|
61
|
-
|
|
62
|
-
def test_extract_base_branch(self):
|
|
63
|
-
"""Test base branch extraction."""
|
|
64
|
-
with patch.dict(os.environ, {"GITHUB_BASE_REF": "main"}):
|
|
65
|
-
provider = GitHubActionsProvider()
|
|
66
|
-
base_branch = provider._extract_base_branch()
|
|
67
|
-
assert base_branch == "main"
|
|
68
|
-
|
|
69
|
-
def test_extract_base_branch_default(self):
|
|
70
|
-
"""Test base branch extraction defaults to main."""
|
|
71
|
-
with patch.dict(os.environ, {}, clear=True):
|
|
72
|
-
provider = GitHubActionsProvider()
|
|
73
|
-
base_branch = provider._extract_base_branch()
|
|
74
|
-
assert base_branch == "main"
|
|
75
|
-
|
|
76
|
-
def test_extract_source_branch(self):
|
|
77
|
-
"""Test source branch extraction."""
|
|
78
|
-
with patch.dict(os.environ, {"GITHUB_HEAD_REF": "feature-branch"}):
|
|
79
|
-
provider = GitHubActionsProvider()
|
|
80
|
-
source_branch = provider._extract_source_branch()
|
|
81
|
-
assert source_branch == "feature-branch"
|
|
82
|
-
|
|
83
|
-
def test_extract_source_branch_fallback(self):
|
|
84
|
-
"""Test source branch extraction with fallback."""
|
|
85
|
-
with patch.dict(os.environ, {"GITHUB_REF_NAME": "develop"}, clear=True):
|
|
86
|
-
provider = GitHubActionsProvider()
|
|
87
|
-
source_branch = provider._extract_source_branch()
|
|
88
|
-
assert source_branch == "develop"
|
|
89
|
-
|
|
90
|
-
def test_extract_ci_info_pr_context(self):
|
|
91
|
-
"""Test full CI info extraction in PR context."""
|
|
92
|
-
event_data = {"pull_request": {"number": 456}}
|
|
93
|
-
mock_file = mock_open(read_data=json.dumps(event_data))
|
|
94
|
-
|
|
95
|
-
with patch.dict(
|
|
96
|
-
os.environ,
|
|
97
|
-
{
|
|
98
|
-
"GITHUB_ACTIONS": "true",
|
|
99
|
-
"GITHUB_EVENT_PATH": "/tmp/event.json",
|
|
100
|
-
"GITHUB_SHA": "abc123",
|
|
101
|
-
"GITHUB_BASE_REF": "main",
|
|
102
|
-
"GITHUB_HEAD_REF": "feature",
|
|
103
|
-
"GITHUB_REPOSITORY": "owner/repo",
|
|
104
|
-
},
|
|
105
|
-
):
|
|
106
|
-
with patch("builtins.open", mock_file):
|
|
107
|
-
with patch("os.path.exists", return_value=True):
|
|
108
|
-
provider = GitHubActionsProvider()
|
|
109
|
-
ci_info = provider.extract_ci_info()
|
|
110
|
-
|
|
111
|
-
assert ci_info.platform == "github-actions"
|
|
112
|
-
assert ci_info.cr_number == 456
|
|
113
|
-
assert ci_info.cr_url == "https://github.com/owner/repo/pull/456"
|
|
114
|
-
assert ci_info.session_type == "cr"
|
|
115
|
-
assert ci_info.commit_sha == "abc123"
|
|
116
|
-
assert ci_info.base_branch == "main"
|
|
117
|
-
assert ci_info.source_branch == "feature"
|
|
118
|
-
assert ci_info.repository == "owner/repo"
|
|
119
|
-
|
|
120
|
-
def test_extract_ci_info_main_branch(self):
|
|
121
|
-
"""Test CI info extraction for main branch."""
|
|
122
|
-
with patch.dict(
|
|
123
|
-
os.environ,
|
|
124
|
-
{
|
|
125
|
-
"GITHUB_ACTIONS": "true",
|
|
126
|
-
"GITHUB_SHA": "main123",
|
|
127
|
-
"GITHUB_REF_NAME": "main",
|
|
128
|
-
"GITHUB_REPOSITORY": "owner/repo",
|
|
129
|
-
},
|
|
130
|
-
clear=True,
|
|
131
|
-
):
|
|
132
|
-
provider = GitHubActionsProvider()
|
|
133
|
-
ci_info = provider.extract_ci_info()
|
|
134
|
-
|
|
135
|
-
assert ci_info.platform == "github-actions"
|
|
136
|
-
assert ci_info.cr_number is None
|
|
137
|
-
assert ci_info.session_type == "prod"
|
|
138
|
-
assert ci_info.source_branch == "main"
|
|
139
|
-
|
|
140
|
-
def test_extract_access_token(self):
|
|
141
|
-
"""Test GITHUB_TOKEN detection."""
|
|
142
|
-
with patch.dict(
|
|
143
|
-
os.environ,
|
|
144
|
-
{
|
|
145
|
-
"GITHUB_ACTIONS": "true",
|
|
146
|
-
"GITHUB_TOKEN": "ghp_test123token456",
|
|
147
|
-
"GITHUB_SHA": "abc123",
|
|
148
|
-
},
|
|
149
|
-
clear=True,
|
|
150
|
-
):
|
|
151
|
-
provider = GitHubActionsProvider()
|
|
152
|
-
ci_info = provider.extract_ci_info()
|
|
153
|
-
|
|
154
|
-
assert ci_info.access_token == "ghp_test123token456"
|
|
155
|
-
|
|
156
|
-
def test_extract_access_token_not_set(self):
|
|
157
|
-
"""Test when GITHUB_TOKEN is not set."""
|
|
158
|
-
with patch.dict(os.environ, {"GITHUB_ACTIONS": "true", "GITHUB_SHA": "abc123"}, clear=True):
|
|
159
|
-
provider = GitHubActionsProvider()
|
|
160
|
-
ci_info = provider.extract_ci_info()
|
|
161
|
-
|
|
162
|
-
assert ci_info.access_token is None
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
class TestGitLabCIProvider:
|
|
166
|
-
"""Tests for GitLab CI provider."""
|
|
167
|
-
|
|
168
|
-
def test_can_handle_true(self):
|
|
169
|
-
"""Test detection when GITLAB_CI is true."""
|
|
170
|
-
with patch.dict(os.environ, {"GITLAB_CI": "true"}):
|
|
171
|
-
provider = GitLabCIProvider()
|
|
172
|
-
assert provider.can_handle() is True
|
|
173
|
-
|
|
174
|
-
def test_can_handle_false(self):
|
|
175
|
-
"""Test detection when GITLAB_CI is not set."""
|
|
176
|
-
with patch.dict(os.environ, {}, clear=True):
|
|
177
|
-
provider = GitLabCIProvider()
|
|
178
|
-
assert provider.can_handle() is False
|
|
179
|
-
|
|
180
|
-
def test_extract_mr_number(self):
|
|
181
|
-
"""Test MR number extraction."""
|
|
182
|
-
with patch.dict(os.environ, {"CI_MERGE_REQUEST_IID": "789"}):
|
|
183
|
-
provider = GitLabCIProvider()
|
|
184
|
-
mr_number = provider._extract_mr_number()
|
|
185
|
-
assert mr_number == 789
|
|
186
|
-
|
|
187
|
-
def test_extract_mr_number_none(self):
|
|
188
|
-
"""Test MR number extraction when not set."""
|
|
189
|
-
with patch.dict(os.environ, {}, clear=True):
|
|
190
|
-
provider = GitLabCIProvider()
|
|
191
|
-
mr_number = provider._extract_mr_number()
|
|
192
|
-
assert mr_number is None
|
|
193
|
-
|
|
194
|
-
def test_extract_commit_sha(self):
|
|
195
|
-
"""Test commit SHA extraction."""
|
|
196
|
-
with patch.dict(os.environ, {"CI_COMMIT_SHA": "gitlab123"}):
|
|
197
|
-
provider = GitLabCIProvider()
|
|
198
|
-
commit_sha = provider._extract_commit_sha()
|
|
199
|
-
assert commit_sha == "gitlab123"
|
|
200
|
-
|
|
201
|
-
def test_extract_base_branch(self):
|
|
202
|
-
"""Test base branch extraction."""
|
|
203
|
-
with patch.dict(os.environ, {"CI_MERGE_REQUEST_TARGET_BRANCH_NAME": "master"}):
|
|
204
|
-
provider = GitLabCIProvider()
|
|
205
|
-
base_branch = provider._extract_base_branch()
|
|
206
|
-
assert base_branch == "master"
|
|
207
|
-
|
|
208
|
-
def test_extract_source_branch(self):
|
|
209
|
-
"""Test source branch extraction."""
|
|
210
|
-
with patch.dict(os.environ, {"CI_MERGE_REQUEST_SOURCE_BRANCH_NAME": "feature"}):
|
|
211
|
-
provider = GitLabCIProvider()
|
|
212
|
-
source_branch = provider._extract_source_branch()
|
|
213
|
-
assert source_branch == "feature"
|
|
214
|
-
|
|
215
|
-
def test_extract_ci_info_mr_context(self):
|
|
216
|
-
"""Test full CI info extraction in MR context."""
|
|
217
|
-
with patch.dict(
|
|
218
|
-
os.environ,
|
|
219
|
-
{
|
|
220
|
-
"GITLAB_CI": "true",
|
|
221
|
-
"CI_MERGE_REQUEST_IID": "101",
|
|
222
|
-
"CI_COMMIT_SHA": "gitlab456",
|
|
223
|
-
"CI_MERGE_REQUEST_TARGET_BRANCH_NAME": "main",
|
|
224
|
-
"CI_MERGE_REQUEST_SOURCE_BRANCH_NAME": "feature-x",
|
|
225
|
-
"CI_PROJECT_PATH": "group/project",
|
|
226
|
-
"CI_SERVER_URL": "https://gitlab.com",
|
|
227
|
-
},
|
|
228
|
-
):
|
|
229
|
-
provider = GitLabCIProvider()
|
|
230
|
-
ci_info = provider.extract_ci_info()
|
|
231
|
-
|
|
232
|
-
assert ci_info.platform == "gitlab-ci"
|
|
233
|
-
assert ci_info.cr_number == 101
|
|
234
|
-
assert ci_info.cr_url == "https://gitlab.com/group/project/-/merge_requests/101"
|
|
235
|
-
assert ci_info.session_type == "cr"
|
|
236
|
-
assert ci_info.commit_sha == "gitlab456"
|
|
237
|
-
assert ci_info.base_branch == "main"
|
|
238
|
-
assert ci_info.source_branch == "feature-x"
|
|
239
|
-
assert ci_info.repository == "group/project"
|
|
240
|
-
|
|
241
|
-
def test_extract_ci_info_mr_context_self_hosted(self):
|
|
242
|
-
"""Test MR URL construction for self-hosted GitLab."""
|
|
243
|
-
with patch.dict(
|
|
244
|
-
os.environ,
|
|
245
|
-
{
|
|
246
|
-
"GITLAB_CI": "true",
|
|
247
|
-
"CI_MERGE_REQUEST_IID": "42",
|
|
248
|
-
"CI_PROJECT_PATH": "mycompany/myproject",
|
|
249
|
-
"CI_SERVER_URL": "https://gitlab.mycompany.com",
|
|
250
|
-
},
|
|
251
|
-
clear=True,
|
|
252
|
-
):
|
|
253
|
-
provider = GitLabCIProvider()
|
|
254
|
-
ci_info = provider.extract_ci_info()
|
|
255
|
-
|
|
256
|
-
assert ci_info.cr_url == "https://gitlab.mycompany.com/mycompany/myproject/-/merge_requests/42"
|
|
257
|
-
|
|
258
|
-
def test_extract_access_token(self):
|
|
259
|
-
"""Test CI_JOB_TOKEN detection."""
|
|
260
|
-
with patch.dict(
|
|
261
|
-
os.environ,
|
|
262
|
-
{"GITLAB_CI": "true", "CI_JOB_TOKEN": "glpat-test123token456", "CI_COMMIT_SHA": "gitlab123"},
|
|
263
|
-
clear=True,
|
|
264
|
-
):
|
|
265
|
-
provider = GitLabCIProvider()
|
|
266
|
-
ci_info = provider.extract_ci_info()
|
|
267
|
-
|
|
268
|
-
assert ci_info.access_token == "glpat-test123token456"
|
|
269
|
-
|
|
270
|
-
def test_extract_access_token_not_set(self):
|
|
271
|
-
"""Test when CI_JOB_TOKEN is not set."""
|
|
272
|
-
with patch.dict(os.environ, {"GITLAB_CI": "true", "CI_COMMIT_SHA": "gitlab123"}, clear=True):
|
|
273
|
-
provider = GitLabCIProvider()
|
|
274
|
-
ci_info = provider.extract_ci_info()
|
|
275
|
-
|
|
276
|
-
assert ci_info.access_token is None
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
class TestCIDetector:
|
|
280
|
-
"""Tests for CI detector."""
|
|
281
|
-
|
|
282
|
-
def test_detect_github_actions(self):
|
|
283
|
-
"""Test detection of GitHub Actions."""
|
|
284
|
-
with patch.dict(os.environ, {"GITHUB_ACTIONS": "true", "GITHUB_SHA": "test123"}, clear=True):
|
|
285
|
-
ci_info = CIDetector.detect()
|
|
286
|
-
assert ci_info.platform == "github-actions"
|
|
287
|
-
|
|
288
|
-
def test_detect_gitlab_ci(self):
|
|
289
|
-
"""Test detection of GitLab CI."""
|
|
290
|
-
with patch.dict(os.environ, {"GITLAB_CI": "true", "CI_COMMIT_SHA": "test456"}, clear=True):
|
|
291
|
-
ci_info = CIDetector.detect()
|
|
292
|
-
assert ci_info.platform == "gitlab-ci"
|
|
293
|
-
|
|
294
|
-
def test_detect_fallback(self):
|
|
295
|
-
"""Test fallback detection when no CI platform detected."""
|
|
296
|
-
with patch.dict(os.environ, {}, clear=True):
|
|
297
|
-
with patch.object(CIDetector, "_fallback_detection") as mock_fallback:
|
|
298
|
-
mock_fallback.return_value = CIInfo(
|
|
299
|
-
platform=None, session_type="dev", commit_sha="fallback123", base_branch="main"
|
|
300
|
-
)
|
|
301
|
-
ci_info = CIDetector.detect()
|
|
302
|
-
assert ci_info.platform is None
|
|
303
|
-
assert ci_info.session_type == "dev"
|
|
304
|
-
mock_fallback.assert_called_once()
|
|
305
|
-
|
|
306
|
-
def test_apply_overrides_cr_github(self):
|
|
307
|
-
"""Test applying CR override for GitHub Actions."""
|
|
308
|
-
ci_info = CIInfo(platform="github-actions", cr_number=100, session_type="cr", repository="owner/repo")
|
|
309
|
-
ci_info = CIDetector.apply_overrides(ci_info, cr=200)
|
|
310
|
-
|
|
311
|
-
assert ci_info.cr_number == 200
|
|
312
|
-
assert ci_info.cr_url == "https://github.com/owner/repo/pull/200"
|
|
313
|
-
assert ci_info.session_type == "cr"
|
|
314
|
-
|
|
315
|
-
def test_apply_overrides_cr_gitlab(self):
|
|
316
|
-
"""Test applying CR override for GitLab CI."""
|
|
317
|
-
with patch.dict(os.environ, {"CI_SERVER_URL": "https://gitlab.com"}):
|
|
318
|
-
ci_info = CIInfo(platform="gitlab-ci", cr_number=50, session_type="cr", repository="group/project")
|
|
319
|
-
ci_info = CIDetector.apply_overrides(ci_info, cr=75)
|
|
320
|
-
|
|
321
|
-
assert ci_info.cr_number == 75
|
|
322
|
-
assert ci_info.cr_url == "https://gitlab.com/group/project/-/merge_requests/75"
|
|
323
|
-
assert ci_info.session_type == "cr"
|
|
324
|
-
|
|
325
|
-
def test_apply_overrides_session_type(self):
|
|
326
|
-
"""Test applying session type override."""
|
|
327
|
-
ci_info = CIInfo(session_type="dev")
|
|
328
|
-
ci_info = CIDetector.apply_overrides(ci_info, session_type="prod")
|
|
329
|
-
|
|
330
|
-
assert ci_info.session_type == "prod"
|
|
331
|
-
|
|
332
|
-
def test_apply_overrides_cr_redetermines_session_type(self):
|
|
333
|
-
"""Test that CR override re-determines session type."""
|
|
334
|
-
ci_info = CIInfo(cr_number=None, session_type="dev", source_branch="feature")
|
|
335
|
-
ci_info = CIDetector.apply_overrides(ci_info, cr=100)
|
|
336
|
-
|
|
337
|
-
assert ci_info.cr_number == 100
|
|
338
|
-
assert ci_info.session_type == "cr"
|
|
339
|
-
|
|
340
|
-
def test_fallback_detection_with_git(self):
|
|
341
|
-
"""Test fallback detection using git commands."""
|
|
342
|
-
with patch.dict(os.environ, {}, clear=True):
|
|
343
|
-
with patch("recce_cloud.ci_providers.base.BaseCIProvider.run_git_command") as mock_git:
|
|
344
|
-
mock_git.side_effect = ["commit123", "feature-branch"]
|
|
345
|
-
ci_info = CIDetector._fallback_detection()
|
|
346
|
-
|
|
347
|
-
assert ci_info.platform is None
|
|
348
|
-
assert ci_info.commit_sha == "commit123"
|
|
349
|
-
assert ci_info.source_branch == "feature-branch"
|
|
350
|
-
assert ci_info.base_branch == "main"
|
|
351
|
-
assert ci_info.session_type == "dev"
|